最近,Opera宣布新版本采用Webkit內(nèi)核在業(yè)內(nèi)引發(fā)了不小的震動。飽受瀏覽器兼容折磨的前端工程師們紛紛叫好,對他們來說這意味著工作量的減少,并希望Firefox和IE都能夠跟上Opera的步伐,盡快轉(zhuǎn)投Webkit。
由于我在工作中也一直需要寫HTML和CSS,我非常能夠理解這樣的觀點。確實,在現(xiàn)在前端越來越復雜、用戶體驗要求越來越高的今天,前端工程師的在瀏覽器兼容上面的工作量是巨大的,他們必須保證網(wǎng)站在不同瀏覽器下都可以獲得盡量一致的體驗。
但是,既然大家都是基于 W3C 的標準來做瀏覽器,為什么不同的瀏覽器會產(chǎn)生這么多不同的結(jié)果呢?
這是一個非常有意思的問題,首先 W3C 是一個非常學術的標準制訂機構,他們并不會去涉及商業(yè)方面的事情,所以他們不會去過問瀏覽器生產(chǎn)商們,你們該怎么去做你們的瀏覽器,也就是說,如果瀏覽器廠商哪怕不遵守W3C的標準,也是可以的。
另外,W3C的標準并不是細致的,它是一個足夠開放的標準,因為本身CSS的理念就是開放的(它允許多個樣式表的層疊),比方說它不會去規(guī)定每個網(wǎng)頁默認的字體大小等很多屬性,而這些屬性的決定權,都交給了瀏覽器。瀏覽器們首先可以選擇性地遵守W3C的標準,其次他們自身又有很大發(fā)揮的余地,這就造成了每個瀏覽器下的網(wǎng)頁的兼容性問題。
再來看Webkit內(nèi)核,如果你打開它的網(wǎng)站,你就會發(fā)現(xiàn)Webkit的團隊幾乎都是Google和蘋果的工程師,同時Webkit就是Chrome和Safari的內(nèi)核。
瀏覽器內(nèi)核界除了Webkit,還有IE的Trident內(nèi)核、Firefox的Gecko內(nèi)核和Opera的Presto內(nèi)核,而今,Opera 放棄轉(zhuǎn)投了 Webkit,那剩下的主要就只有三家了(Webkit、Trident、Gecko),很有三足鼎立的局勢。
對的,也許你已經(jīng)看出來了,Webkit就是那強大的魏國,因為他們背靠Apple和Goolge這兩座大山。如果你把目光轉(zhuǎn)移到移動設備上來,那么Webkit幾乎已經(jīng)是一統(tǒng)天下了。在Webkit的推動下,兼容性問題確實變得越來越少了。
因為Webkit的市場占有率,我們幾乎肯定地會把前端的第一個版本基于Webkit瀏覽器來做,而在移動設備上,我們幾乎可以不考慮兼容問題。從這個角度上來說,Webkit帶來了巨大的便利性,前端開發(fā)的效率極大地提升了。
我們不妨做一個架設,如果未來Firefox和IE都轉(zhuǎn)向了Webkit,會是怎樣?
對于整日埋頭于調(diào)整瀏覽器兼容性的前端工程師來說,他們絕對會歡呼的,這意味著再也不會有兼容性的問題了(可能還會有一些,但是不會很嚴重)。對于普通用戶來說呢?這依然是一件好事,因為他們會享受到一致的用戶體驗,甚至因為前端工程師精力的解放,網(wǎng)站的前端水平普遍會得到提升。
但是凡事都有兩面性,當我們享受了這些好處的時候,我們將接受Webkit的獨裁統(tǒng)治,事實上,在移動互聯(lián)網(wǎng)領域,已經(jīng)基本是這樣一種情況。
當Webkit一家獨大的時候,它和W3C的關系也會改變,這對W3C標準的發(fā)展并無好處。因為Webkit基本上就是等于W3C的存在,Webkit將直接成為標準,瀏覽器內(nèi)核領域?qū)⑷鄙倭硕鄻有裕╠iversity),而多樣性正是瀏覽器內(nèi)核和W3C標準發(fā)展的重要條件,其實也是互聯(lián)網(wǎng)發(fā)展的重要條件。
看看Opera以往給互聯(lián)網(wǎng)做出的貢獻就能知道這種多樣性是多么重要。今年來流行的HTML5就是Opera最先開始支持的,響應式設計(Responsive Design)也得歸功于Opera對Media Query的首先支持。所以,如果我們?nèi)匀幌MA暨@種多樣性,那么我們不應該希望Firefox和IE都轉(zhuǎn)去Webkit陣營。
這真是一種非常矛盾的選擇,一方面,我們的工程師和用戶都將享受統(tǒng)一內(nèi)核所帶來的極大的便利性和用戶體驗上的提高,另一方面,是多樣性給互聯(lián)網(wǎng)內(nèi)核和 W3C 標準的發(fā)展帶來的好處。
很多時候,我們考慮好處往往會迷失了雙眼,變得無法選擇。我們可以換一個角度來思考,兩種方案哪個方案所帶來的害處更多呢?如果兩害相權取其輕的話,這個問題似乎又不難選擇了。因為,我們希望一個更加開放自由的互聯(lián)網(wǎng)。