原文做者:RACHEL NABORScss
譯者:UC 國際研發 Jothy前端
寫在最前:歡迎你來到「UC國際技術」公衆號,咱們將爲你們提供與客戶端、服務端、算法、測試、數據、前端等相關的高質量技術文章,不限於原創與翻譯。算法
不管是早期在代理機構工做,仍是後來在微軟的 Edge 工做,我都反覆地聽到一樣的哀嘆:「唉,爲何 Edge 不能基於 Blink 呢?這樣我就能夠訪問全部想要的 API,也只要在一個瀏覽器中測試就行了!」瀏覽器
個人觀點很明確:一個只運行在 Chrome Blink 及其後代引擎上的互聯網,毫不是咱們想象的天堂。
服務器
做爲一名谷歌開發專家,我曾在 Microsoft Edge 團隊工做過,也是 Firefox 和 W3C 的特邀專家,我想表達對這個主題的我的見解(以及一些事實)。 如今就開始吧。
網絡
咱們先來了解一些術語。
多線程
當今熱門瀏覽器有 Google Chrome,Apple Safari,Mozilla Firefox 和 Microsoft Edge,但曾經咱們也擁有像 NCSA Mosaic 和 Netscape Navigator 這樣優秀的產品。不管你平常使用的是哪一種瀏覽器(我使用 Firefox,謝謝)都只是封裝着瀏覽器引擎的界面。全部的書籤,前進和後退的箭頭,URL 欄 - 這些都不是瀏覽器。這些是瀏覽器的界面。一般,構建瀏覽器引擎的人可能都沒接觸過界面!
異步
瀏覽器引擎會讀取經過網絡傳輸的全部 HTML,CSS 和 JavaScript,解析它們,並展現爲漂亮的網頁畫面。不一樣引擎有不一樣的名字。 Chrome 的引擎是 Blink。 Safari 在 WebKit 上運行。 Firefox 使用 Gecko。 Edge 則基於 EdgeHTML 開發。(我喜歡這個命名約定。幹得漂亮,Edge。)
ide
除了 Edge 以外的全部引擎都是開源的,這意味着任何人均可以獲取它,將它包裝在一個新的界面中,而後發佈他們本身的瀏覽器 - 可能會帶來不一樣的(也許是更好的)用戶體驗 - 很多瀏覽器就是這麼幹的! Apple 的 iOS 應用商店中只容許發佈基於 WebKit 開發的瀏覽器,所以 iPad 和 iPhone 上的 Chrome,Firefox 甚至 Edge 瀏覽器表現更像 Safari,而非各自的桌面版本。 Oculus Browser,Brave,Vivaldi,Samsung Internet,亞馬遜的 Silk 和 Opera 都在 Blink 上運行。咱們把它們稱爲「基於 Chromium 的瀏覽器」- Chromium 是 Google 的開源項目,Chrome 及其引擎也由此派生。(譯者注:微軟的 Edge 桌面版不久後也將基於 Chromium。)
工具
那麼瀏覽器引擎裏面都有些啥呢? 更多的引擎! 每一個瀏覽器引擎都包含其餘幾個引擎:
佈局和渲染引擎(一般緊密耦合,因此各自區別不大),計算頁面的外觀,處理繪製、渲染甚至動畫。
JavaScript 引擎,每一個瀏覽器特有的引擎,甚至能夠獨立於瀏覽器運行。 好比說,你能夠用 Chrome 的 V8 引擎或 Microsoft Edge 的 Chakra 在服務器上運行 Node 程序。
我喜歡將瀏覽器引擎與生物細胞進行比較。 一個細胞包含許多細胞器以完成不一樣的功能,瀏覽器也是如此。 你能夠將細胞核看成渲染引擎,它包含頁面應如何顯示的藍圖,以及做爲 JavaScript 引擎的線粒體,爲咱們的平常交互提供動力。(有趣的事實:線粒體曾經是一個獨立的細胞,它們甚至有本身的 DNA!)
你知道嗎? 瀏覽器與生物類似的另外一個表現是它們也會演進。
回顧第一批瀏覽器出現的時候,那個時期比如今簡單多了。 當 CSS 在 1996 年首次出如今 Microsoft Internet Explorer 3 中時,它就是當時的新寵! 那時候的 JavaScript API 和 CSS 規範比起如今要少得多。 多年來,瀏覽器代碼庫已蓬勃發展,新功能的數量足以支持用戶和開發者構建現代 Web 體驗。 這是用戶需求,瀏覽器工程建設和規範標準化過程之間的微妙演進。
目前主流的引擎主要有三個:
WebKit 和 Blink(Blink 最初是 WebKit 的一個分支)運行 Safari,Chrome 和 Opera
Gecko 運行 Firefox
EdgeHTML(Trident 的一個分支,又名 MSHTML)運行 Microsoft Edge
不一樣引擎之間各有千秋。每個都能從不一樣方向拉動 Web 發展:Firefox 的引擎具備 Servo 的多線程處理功能,能夠快速呈現圖形。 Edge 的引擎具備最少的操做系統抽象,能夠更直接地訪問系統資源 - 這也致使其成爲僅限 Windows 的瀏覽器引擎。 Chrome 的 Blink 是擁有最多 Web 開發測試者的。 (我會回過頭來解釋爲何這是一個「功能」。)
還記得咱們談過的基於 Chromium 的瀏覽器嗎?這些瀏覽器都沒必要從零開始構建他們的渲染引擎或 JavaScript 引擎:他們只須要從 Blink 開始。若是他們須要新功能呢?他們能夠獨立開發該功能並保留,或者將這些功能共享回「上游」,使之成爲其餘瀏覽器核心引擎的一部分。 (這個過程每每涉及不少因素 - 「回饋」提及來容易作起來難!)
對任何一個實體來講,要證實它從頭建立一個瀏覽器引擎所耗費的時間和精力是不可思議的。 即使是目前的三個主流瀏覽器也是從互聯網早期就存在的引擎演進的。 它們與咱們一塊兒逐步發展,以知足咱們的需求。
目前,網絡上的絕大多數流量都發生在 Chrome,iOS Safari 或其它基於 Blink 或 WebKit 的瀏覽器上。
有些開發者說 WebKit 和 Blink 老早就分叉了,如今兩者是徹底不一樣的瀏覽器引擎,不可以再共享貢獻。 某個方面來講也有道理。 但以動物爲例,雖然常見的北美洲燕子和紅寶石喉蜂鳥是徹底不一樣的動物,但與其餘動物家族相比,它們至少都屬於鳥類。 在短時間內,它們的直接後代都不會出現牙齒,手或尾巴。 正如 WebKit 和 Blink 都沒有 Gecko 和 EdgeHTML 多年來一直在構建的處理功能。
還有些開發者可能會說 Microsoft Edge 應該是 Internet Explorer 的「徹底重寫」。 可是,「完整的內部工做」與僅僅「翻新」之間是個觀念之爭。 EdgeHTML 是 Internet Explorer 的 Trident 引擎的一個分支,它仍然帶有 Trident 的大部分特性。
這就是咱們擁有的三個瀏覽器引擎:WebKit/Blink,Gecko 和 EdgeHTML。 在可預見的將來,不太可能有新血系注入。 就是這個意思。
若是咱們失去了其中一個瀏覽器引擎,咱們就會失去它的血統,以後是該引擎的每一個載體,以及它所帶來的 Web 中獨特的內容。
而且它不太可能被替代。
想象一下只有蜂鳥,海豚和馬的行星。全部的海豚都滅絕了。在遙遠的未來,蜂鳥或馬能夠演進爲能夠像海豚同樣在海洋中游泳的東西。事實上,恐龍時代的魚龍看起來很像海豚。可是這種生物與真正的海豚很是不一樣:即便是魚龍也沒有演化出回聲定位。咱們會等待很長時間(多是永遠)來得到血統,以發展咱們今天在其餘血系中已經存在的特徵。那麼,爲何要袖手旁觀甚至鼓勵消滅這些有價值的獨特血統呢?
咱們已經失去一個了。
咱們曾經有過四個主要的渲染引擎,可是在採用 Blink 以前,Opera 中止了自家渲染引擎 Presto 的開發。
譯者注:微軟剛剛的這一宣佈,將會怎麼有什麼樣的影響呢?
有些人認爲,若是像 Microsoft Edge 這樣的瀏覽器選擇在 Blink 上運行,那麼微軟的工程師能夠幫助構建更好的 Blink,爲全部其餘 Chromium 瀏覽器提供新功能。這聽起來很明智,對嗎?
但請記住,Blink 是從 WebKit 分叉的。如今同時存在 WebKit 貢獻者和 Blink 貢獻者,而且他們的貢獻不是一對一的。就像三星和 Occulus 同樣,微軟這樣的公司要想用不一樣於谷歌的引擎來開發也不是不可能。若是這些差別沒對齊,公司將致力於對其代碼庫,而不是在上游作出貢獻。咱們最終將會獲得一個 WebKit 和一個 Blink--兩者不會有深入差別,不似伴隨互聯網數十年發展的代碼庫那般。
從理論上講這是個好主意。但在實踐中,咱們最終採用相似的方式 - 而且瀏覽器引擎生態中的「遺傳多樣性」愈來愈少。
我崇尚競爭。與其餘漫畫家競爭,以製做更好的漫畫,並吸引更多的觀衆,讓我成爲今天的我。 (真實的故事:我以漫畫家的身份成立我的站點,創建本身的社區網站,時事通信和購物車。)我想提醒人們,競爭不是要消滅你的競爭對手。若是你這樣作了,你就會停滯不前並失去你的用戶:請參照 Internet Explorer 6。
Internet Explorer 6 出現時是一個了不得的瀏覽器:足夠高的性能以真正實現以前版本的 Internet Explorer 引入的功能,如 DOM,數據綁定和異步 JavaScript。它的競爭對手 Netscape Navigator 沒法與之相抗衡最終成爲炮灰(只有它的引擎 Gecko 得以被 Mozilla 基金會重寫 - 它就是那麼小! - 從新成爲後來的 Firefox)。
微軟認爲它已經贏得了互聯網,遂將注意力轉向其餘方面,聽任 Internet Explorer 停滯不前。正是這給了 Firefox 可乘之機,它經過阻止彈出窗口和更好的 UI 等功能爲用戶了提供更好的體驗。 (界面層確實很重要!)Firefox 還與 Opera 合做開發了先進的 Web 標準,這在 IE 和 Netscape 時代並沒被瞧上眼。但互聯網用戶偏心這一套,Firefox 便經過口口相傳和草根宣傳活動如燎原之火般發展。
當 iPhone 出現時,Apple 專一於其盈利的應用市場,並努力削減對Flash的支持 - 這是 Web 上最像應用的交互平臺。應用爲內容建立者提供了一種不一樣於廣告模式的工做變現方法。廣告是谷歌的衣食父母,大 G 愈來愈擔憂,由於這對他家那些只把互聯網做爲數據傳輸管道的應用形成了威脅。與此同時,微軟一直專一於構建本身的移動操做系統。這時谷歌作了兩件事:Android 和 Chrome。
Chrome 承諾提供更好,更快的瀏覽體驗。它功能極簡,但谷歌甚至盡心盡力(至少在個人圈子裏)找了著名的漫畫家 Scott McCloud 製做漫畫,闡述瀏覽器對用戶的使命。隨着 Chrome 在每一個操做系統和 Android 手機上的無處不在,它的開發工具模仿了 Firefox 煊赫一時的 Firebug,而且愈來愈多地參與規範,Chrome 不只給了 Internet Explorer 沉重的打擊,並且還有可能扼殺這個星球上其餘的瀏覽器引擎!
將瀏覽器的你們族樹(或灌木叢)修剪成一個脆弱的單一文化的分支。受市場和人口變化的影響,單一文化很容易受到環境和生態挑戰的影響。下一個對 Web 的威脅出現時會發生什麼,但咱們沒有 Firefox 的多線程?仍是 Microsoft Edge 的系統集成?若是沒有它們,咱們可以快速迭代嗎?或者,咱們是否會期待 Chrome 開發人員作點什麼,並祈禱他們不要像微軟那樣變得停滯不前,而是在「贏得網絡」以後着手處理其餘問題。
諷刺的是,谷歌爲保持 Web 不丟失應用模型而構建的瀏覽器,自己就像 Internet Explorer 6 同樣壟斷了 Web 開發。
前面說過我會回到「把用戶羣大小做爲功能」的話題。讓絕大多數 Web 開發社區爲你的平臺構建和測試是一項核心競爭力。首先,你能夠保證大多數網站都能在你的瀏覽器中完美運行 - 你沒必要爲了找出財富 500 強網站一個奇怪的 bug 而花費太多時間和精力,換用競爭對手的瀏覽器並再也不回頭。因爲用戶數量減小致使開發人員測試次數減小,反過來又致使用戶數量減小,這種狀況不斷惡化。
它還能讓你更容易知足你母公司目標的新規範(可能能夠也可能不能夠知足 Web 社區的目標),並讓大型開發社區首先構建到你的實現,而無需等待其餘瀏覽器遇上。若是一個較小的瀏覽器提出了一個沒有人注意到的規範,而你在須要時提取它,那麼人們就會記住它是你的努力,不管是否有意,繼續創建你的思想共享。
這對競爭產生了下行壓力,競爭對手根本沒有或不能使用最大的瀏覽器團隊擁有的相同資源。不管是否是有意爲之,這都是一種殘酷而有效的方法。
這是道德問題嗎?從我的貢獻者層面看,是的。這是一個惡性循環,企業經過迫使競爭對手使用有限的資源來競爭從而加速了其滅絕?另外一個層面看,也是的。讓大批人只爲你的平臺構建的確推波助瀾。
從 Chrome 團隊到網絡開發者,全部使人敬畏,善意真誠的好心人均可以舉起手來,合法地說,「我只是在努力推動 Web 建設!」同時也爲壟斷作貢獻。
Chrome 擁有最多的資源,而且在構建 Web 方面屬於領頭羊,以致於沒法肯定咱們正在構建的 Web 到底是咱們想要的...仍是 Google 想要的。
有一段時間,微軟拯救了即將倒下的蘋果。並非由於比爾蓋茨和史蒂夫喬布斯是朋友 - 不,微軟要讓蘋果公司取得成功,以維持操做系統競爭的局勢。 (沒有企業但願被視爲壟斷!)
可是,暫時假定蘋果已死。若是隻剩下 Linux 和 Windows,那麼我的電腦今天會是什麼樣的?若是 Apple 沒有努力研發 iPhone,移動設備會是什麼樣子?
是的,只在一個瀏覽器中開發和測試更省心。我相信 IT 專業人員會喜歡只有一種機器。但從長遠來看,不一樣品種爲咱們做爲開發者創造了機會。微軟拯救了蘋果公司,從而帶來了一些先進的應用,這些應用挑戰了 Chrome 及 Google 負責推動的無數 API。若是在這一系列事件的任何一點,有人曾說過,「嗯,若是咱們都使用相同的東西那就容易得多,」咱們就不會擁有如今的職業生涯或世界了。
在多個瀏覽器中開發。在多個瀏覽器中測試。使用多個瀏覽器。
你既是消費者又是生產者。你對將來的發展方式有發言權。
更新:我更新了這篇文章,稍微擴展了 iOS 上的 WebKit,Firefox 在 IE6 時代的做用,並明確地強調了對 Servo 的關注,這多是目前瀏覽器中最使人興奮的事情。
英文原文:
https://css-tricks.com/the-ecological-impact-of-browser-diversity/
感謝你能堅持讀到這裏,你能夠思考一下做者在這篇文章中提到的一些觀點,同時舒適提醒:第 13 屆 D2 前端技術論壇將於 2019 年 1 月 6 日在杭州舉辦,若是你想和同行有一個深度交流,若是你想了解目前行業在前端方面發生了什麼,那就趕忙訪問大會網站參與吧:http://d2forum.alibaba-inc.com
好文推薦:
微軟官方:爲開發者減小開發成本,Edge將採用 Chromium 開發
「UC國際技術」致力於與你共享高質量的技術文章
歡迎關注咱們的公衆號、將文章分享給你的好友