隨著各大瀏覽器對
HTML5
新特性的支援,網頁對圖形以及多媒體方面能力空前增強。隨之而來的網路優化,更是讓越來越多的『跨界應用』思考如何來開墾 Web 平臺。Jeff Atwood 曾經說過:Any application that can be written in JavaScript, will eventually be written in JavaScript. 如果沒有瀏覽器對 JavaScript 的支援,這些都是無稽之談。但你知道嗎?瀏覽器並非生來就這麼強大和友好。今天,我們就來簡單地聊聊主流瀏覽器的發展吧。
一、世界上第一個瀏覽器
提到瀏覽器,就不得不提 Tim Berners-Lee, 他是 W3C 組織 的理事,並在 1990 年左右發明了 WorldWideWeb瀏覽器
,後來為了避免和 World Wide Web 命名衝突而改叫 Nexus
。這時瀏覽器的功能很簡單,只支援文字、簡單的樣式表和有限格式的圖片和聲音。所以,那時的網頁也很簡單,承載的資訊大多以文字為主。
二、第一次瀏覽器大戰
1993 年,網景公司。Marc Andreessen 領導的團隊推出了 Mosaic瀏覽器
,而後又改名為 Netscape瀏覽器
。一經推出,便大受歡迎,可以說是第一款真正意義上被使用者廣泛使用的瀏覽器。雖說如此,它所支援的功能也是特別有限,沒有 CSS,沒有 JavaScript,只能顯示一些簡單的 HTML 標籤,更別說現在這些豐富的 HTML5 的功能了。但也滿足了那個時代上網使用者的需求,同時也取得了可觀的市場份額。
然而,好景不長。1995 年,微軟公司看到 Netscape瀏覽器
如此的受歡迎,就順勢推出 Internet Explorer瀏覽器
(IE),並與自家的 Windows
作業系統強制捆綁。很快取得了更高的市場份額,獲得了空前的成功,把 Netscape瀏覽器
擠出了市場直至消亡。自此,第一次瀏覽器大戰,以 IE
大獲全勝而告終。
三、第二次瀏覽器大戰
前文說到,由於微軟推出的 IE
的影響, 網景公司的 Netscape
每況日下。但網景公司並沒有坐以待斃,在 1998 年 成立了 Mozilla 基金會,並準備開發新的瀏覽器 。
2003 年,蘋果公司搭配自家的 Mac OS X Panther 推出了 Safari瀏覽器
,受限於 Mac 的使用者量,Safari 並未產生多大的影響;2005 年,蘋果開源了 Safari 的核心(渲染引擎)—— 大名鼎鼎的 Webkit,意義之重大,不言而喻。
2004 年,網景公司釋出了全新的瀏覽器 Firefox
,並搭配了 Gecko 核心。它功能豐富,支援使用者擴充,一推出就深受大家喜愛,市場份額也穩步上升。
2008 年,Google 公司以蘋果的開源專案 Webkit 作為核心,建立了一個全新的專案 Chromium瀏覽器
。它被谷歌拿來做 Web 技術試驗場,嘗試一些大膽創新的技術。同年,推出了面向使用者的瀏覽器 —— Chrome
,它會選擇 Chromium 的穩定版本為基礎,整合一些私有的編碼解碼器。或許你會疑惑,既然推出了 Chromium,為什麼還要推出 Chrome?其實很簡單,Chromium 是面向開發者玩的,Chrome 是選取 Chromium 的穩定版面向普通大眾的,二者並不衝突。
期間還有其他公司也推出了瀏覽器,相較而言,不太重要,故不再贅述。市面上那麼多瀏覽器,並且核心(渲染引擎)也不一樣:IE 的核心是 Trident; 火狐是 Gecko;Safari 和 Chrome 是 Webkit。這就會導致同一個網頁在不同的瀏覽器下訪問,會出現不同的展示效果;並且不同的瀏覽器對新技術的支援力度也不一樣。所以,公司會根據使用者瀏覽器的不同而返回不同的網頁內容,那它是如何鑑別使用者瀏覽器的呢?答案就是 User-Agent。
Firefox 設定了自己的 User-Agent,假如就叫 { User-Agent: "firefox" }
,當開發者知道你是 Firefox 時,就會給你返回新頁面(因為火狐瀏覽器可以支援很多新特性),其他瀏覽器就會返回老頁面。IE 看到過後,也趕緊更新瀏覽器版本支援新特性,但仍然看到的是老頁面。這時,IE 不服了,憑什麼你給 Firefox 新頁面,給我老頁面啊?於是它便想到更新自己的 User-Agent,假如就叫 { User-Agent: "ie firefox" }
,當開發者發現 User-Agent 欄位中有 firefox 時,同樣也會返回新頁面了,這是 IE 想要的結果。
沒想到的是,Google 和 蘋果公司也同樣效仿,依次往復,導致各家瀏覽器的 User-Agent 欄位越來越冗長。不信的話,你開啟瀏覽器的控制檯,在 Network 下檢視請求的 Request Headers ,裡面有 User-Agent 欄位。我目前用瀏覽器是 Google Chrome [ Version 70.0.3538.102 (Official Build) (64-bit) ],它的 User-Agent 欄位是:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
複製程式碼
自此,微軟 IE 依靠 Windows 系統依然佔據重要地位,Mozilla 火狐 和 Google Chrome 二者也擁有大量粉絲,逐步讒食 IE 的市場份額,形成三足鼎立之勢。
第四、2010 ~ 現在
2010 年,蘋果宣佈了 Webkit2 ,改為多程式的結構模型。
2013 年,Google 和 蘋果 出現了對核心發展的分歧。於是 4 月份,Google 宣佈了全新的核心專案 —— Blink。該核心早期是完全複製了 Webkit ,之後刪除了與 Chromium 無關的程式碼,並開始大刀闊斧地對核心進行改革。
2015 年,隨著 Windows 10 的釋出,微軟公司宣佈了全新的瀏覽器 —— Microsoft Edge,用來取代 IE 瀏覽器,一代王者逐步退出舞臺。
2017 年,Mozilla 宣佈了為 Firefox 全新的打造的 Quantum 版本,號稱新時代的最快瀏覽器。
目前為止,Google Chrome 以絕對的優勢遠遠領先於其他瀏覽器,並且對 Web 技術 依然充滿熱情,以優秀的特性和效能吸引了絕大部分開發者。
第五、結尾
寫這篇文章的初衷是對各家瀏覽器及其核心的迷惑,就想把它們的來龍去脈理清楚。希望它能對你有些幫助,如果發現有不正確的地方,歡迎指正。