由Opera之“死”談瀏覽器內(nèi)核領(lǐng)域的多樣性
在不少死忠看來(lái),轉(zhuǎn)投Webkit的那一刻開(kāi)始,那個(gè)純正的Opera就已經(jīng)不復(fù)存在。以Google和蘋(píng)果為靠山的Webkit在事實(shí)上已經(jīng)贏得了勝利,尤其是在Android和iOS移動(dòng)智能設(shè)備大舉盛行的今日。
在linlis(個(gè)人博客)看來(lái),Opera的這項(xiàng)舉動(dòng)無(wú)疑無(wú)疑有利于用戶和前端開(kāi)發(fā)者,但是其中卻也包含著危機(jī),有可能造成互聯(lián)網(wǎng)“多樣性”的損失,那么我們究竟應(yīng)該做何抉擇呢?
最近,Opera宣布新版本采用Webkit內(nèi)核在業(yè)內(nèi)引發(fā)了不小的震動(dòng)。飽受瀏覽器兼容折磨的前端工程師們紛紛叫好,對(duì)他們來(lái)說(shuō)這意味著工作量的減少,并希望Firefox和IE都能夠跟上Opera的步伐,盡快轉(zhuǎn)投Webkit。
由于我在工作中也一直需要寫(xiě)HTML和CSS,我非常能夠理解這樣的觀點(diǎn)。確實(shí),在現(xiàn)在前端越來(lái)越復(fù)雜、用戶體驗(yàn)要求越來(lái)越高的今天,前端工程師的在瀏覽器兼容上面的工作量是巨大的,他們必須保證網(wǎng)站在不同瀏覽器下都可以獲得盡量一致的體驗(yàn)。
但是,既然大家都是基于 W3C 的標(biāo)準(zhǔn)來(lái)做瀏覽器,為什么不同的瀏覽器會(huì)產(chǎn)生這么多不同的結(jié)果呢?
這是一個(gè)非常有意思的問(wèn)題,首先 W3C 是一個(gè)非常學(xué)術(shù)的標(biāo)準(zhǔn)制訂機(jī)構(gòu),他們并不會(huì)去涉及商業(yè)方面的事情,所以他們不會(huì)去過(guò)問(wèn)瀏覽器生產(chǎn)商們,你們?cè)撛趺慈プ瞿銈兊臑g覽器,也就是說(shuō),如果瀏覽器廠商哪怕不遵守W3C的標(biāo)準(zhǔn),也是可以的。
另外,W3C的標(biāo)準(zhǔn)并不是細(xì)致的,它是一個(gè)足夠開(kāi)放的標(biāo)準(zhǔn),因?yàn)楸旧鞢SS的理念就是開(kāi)放的(它允許多個(gè)樣式表的層疊),比方說(shuō)它不會(huì)去規(guī)定每個(gè)網(wǎng)頁(yè)默認(rèn)的字體大小等很多屬性,而這些屬性的決定權(quán),都交給了瀏覽器。瀏覽器們首先可以選擇性地遵守W3C的標(biāo)準(zhǔn),其次他們自身又有很大發(fā)揮的余地,這就造成了每個(gè)瀏覽器下的網(wǎng)頁(yè)的兼容性問(wèn)題。
再來(lái)看Webkit內(nèi)核,如果你打開(kāi)它的網(wǎng)站,你就會(huì)發(fā)現(xiàn)Webkit的團(tuán)隊(duì)幾乎都是Google和蘋(píng)果的工程師,同時(shí)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),很有三足鼎立的局勢(shì)。
對(duì)的,也許你已經(jīng)看出來(lái)了,Webkit就是那強(qiáng)大的魏國(guó),因?yàn)樗麄儽晨緼pple和Goolge這兩座大山。如果你把目光轉(zhuǎn)移到移動(dòng)設(shè)備上來(lái),那么Webkit幾乎已經(jīng)是一統(tǒng)天下了。在Webkit的推動(dòng)下,兼容性問(wèn)題確實(shí)變得越來(lái)越少了。
因?yàn)閃ebkit的市場(chǎng)占有率,我們幾乎肯定地會(huì)把前端的***個(gè)版本基于Webkit瀏覽器來(lái)做,而在移動(dòng)設(shè)備上,我們幾乎可以不考慮兼容問(wèn)題。從這個(gè)角度上來(lái)說(shuō),Webkit帶來(lái)了巨大的便利性,前端開(kāi)發(fā)的效率極大地提升了。
我們不妨做一個(gè)架設(shè),如果未來(lái)Firefox和IE都轉(zhuǎn)向了Webkit,會(huì)是怎樣?
對(duì)于整日埋頭于調(diào)整瀏覽器兼容性的前端工程師來(lái)說(shuō),他們絕對(duì)會(huì)歡呼的,這意味著再也不會(huì)有兼容性的問(wèn)題了(可能還會(huì)有一些,但是不會(huì)很?chē)?yán)重)。對(duì)于普通用戶來(lái)說(shuō)呢?這依然是一件好事,因?yàn)樗麄儠?huì)享受到一致的用戶體驗(yàn),甚至因?yàn)榍岸斯こ處熅Φ慕夥?,網(wǎng)站的前端水平普遍會(huì)得到提升。
但是凡事都有兩面性,當(dāng)我們享受了這些好處的時(shí)候,我們將接受Webkit的獨(dú)裁統(tǒng)治,事實(shí)上,在移動(dòng)互聯(lián)網(wǎng)領(lǐng)域,已經(jīng)基本是這樣一種情況。
當(dāng)Webkit一家獨(dú)大的時(shí)候,它和W3C的關(guān)系也會(huì)改變,這對(duì)W3C標(biāo)準(zhǔn)的發(fā)展并無(wú)好處。因?yàn)閃ebkit基本上就是等于W3C的存在,Webkit將直接成為標(biāo)準(zhǔn),瀏覽器內(nèi)核領(lǐng)域?qū)⑷鄙倭硕鄻有裕╠iversity),而多樣性正是瀏覽器內(nèi)核和W3C標(biāo)準(zhǔn)發(fā)展的重要條件,其實(shí)也是互聯(lián)網(wǎng)發(fā)展的重要條件。
看看Opera以往給互聯(lián)網(wǎng)做出的貢獻(xiàn)就能知道這種多樣性是多么重要。今年來(lái)流行的HTML5就是Opera***開(kāi)始支持的,響應(yīng)式設(shè)計(jì)(Responsive Design)也得歸功于Opera對(duì)Media Query的首先支持。所以,如果我們?nèi)匀幌MA暨@種多樣性,那么我們不應(yīng)該希望Firefox和IE都轉(zhuǎn)去Webkit陣營(yíng)。
這真是一種非常矛盾的選擇,一方面,我們的工程師和用戶都將享受統(tǒng)一內(nèi)核所帶來(lái)的極大的便利性和用戶體驗(yàn)上的提高,另一方面,是多樣性給互聯(lián)網(wǎng)內(nèi)核和 W3C 標(biāo)準(zhǔn)的發(fā)展帶來(lái)的好處。
很多時(shí)候,我們考慮好處往往會(huì)迷失了雙眼,變得無(wú)法選擇。我們可以換一個(gè)角度來(lái)思考,兩種方案哪個(gè)方案所帶來(lái)的害處更多呢?如果兩害相權(quán)取其輕的話,這個(gè)問(wèn)題似乎又不難選擇了。因?yàn)?,我們希望一個(gè)更加開(kāi)放自由的互聯(lián)網(wǎng)。