如何評價 微軟 Microsoft Edge 瀏覽器?

如何評價 微軟 Microsoft Edge 瀏覽器?

基本上把 Build 2015 關於 Edge 與 Web 開發的 session 都看了一遍,以一個前端開發者的視角來做個總結吧。主要的消息都來源於 Channel 9 的視頻,會給出相應的鏈接,如果有我會錯意的地方歡迎指正。

Update: 加入了部分來自 Ignite 和 Microsoft Edge Web Summit 2015 的消息。

TL;DR: Microsoft Edge 更多地代表了當前 M$ 瀏覽器開發團隊開放、進取、擁抱標準、與其他瀏覽器保持統一的態度,即使目前它的表現與其他瀏覽器有一定差距,但是這種態度加上微軟的技術實力,可以保證它對將來的 Web 開發與生態環境起到的是正面的影響。希望前端的同行們能夠不計前嫌,給予它合適的關注和支持,畢竟我們都知道 Web 的將來肯定少不了 M$ 的一份 :)

如何評價 微軟 Microsoft Edge 瀏覽器?

1. 開放

目前 IE 是主流瀏覽器裡唯一一個核心組件保持閉源的,考慮到商業因素和它作為系統組件的身份,M$ 不將它的核心開源情有可原,但是這需要 M$ 願意儘可能聽取開發者和用戶的意見來不斷改進它才能不杯具。IE 獲得壟斷地位後,大概在 IE9 之前 M$ 高層的主要態度類似於“Web 已經進化到頭了我們不用再搞那麼多么蛾子了”,團隊人心渙散(來源:How did Internet Explorer up until version 9 get to be so bad (relative to Chrome, Safari, and Firefox)?),在不少問題上(比如 acid2 的支持,參考Standards and CSS in IE)態度也比較傲慢(畢竟市場佔有率大,腰板硬)。2008 年左右開始新一輪瀏覽器競爭後 IE 開始處於落後地位,態度還是比較消極,發佈 Edge 的 session ("Project Spartan": Introducing the New Browser and Web App Platform for Windows 10)裡也提到了他們之前都不敢開放反饋怕只有一大波人衝上來噴 “Your product sucks”。

如何評價 微軟 Microsoft Edge 瀏覽器?

大概從兩年前開始,IE 團隊開始積極地聽取用戶和開發者的反饋,他們建立了 Developer Resources : MSEdge Dev,在 twitter 開通了 @IEDevChat 並且開展了 #AskIE 活動,還參與了 Reddit 的 /r/AmA (We build Internet Explorer. I know, right? Ask Us just about Anything. : reddit.com)。其他內核開源的瀏覽器可以通過 issue tracker 讓外界隨時得知他們對新標準的支持進展與相關態度,IE 作為閉源瀏覽器走不了這條路,就通過建立 http://status.modern.ie/ 來與外界溝通。Edge 就是這種較為開放的環境下的產物。

如何評價 微軟 Microsoft Edge 瀏覽器?

2. 進取近幾年前端技術與標準的數量出現了爆發式的增長,Firefox、Chrome、Opera 都採取了快速迭代更新的策略(6週一次)來跟上它們的步伐。如果你是一個比較喜歡玩新標準新特性的前端肯定會注意到,1年前的這些瀏覽器跟現在的版本相比,對於新標準的支持差別是挺大的(特別明顯的是 ES6 支持)(身為一個 Firefox 忠實用戶表示現在的版本號簡直是三倍速狂滾……)。

以前的 IE 由於身兼“系統組件”,嵌入在不少地方,更新也是作為系統更新的一部分。因為容易傷筋動骨,採取的更新策略一直比較保守。加上 IE 與系統捆綁而且新版本經常不支持老的操作系統(IE9 僅支持 Vista 以上,IE10 只支持 Win 7 以上),即使 IE10+ 已經是相當 decent 的瀏覽器,依然改變不了舊版本瀏覽器拖累整個平臺的事實。(好多前端們喜歡抱怨 IE8-(IE8 發佈於 2009年),然而要知道 2009 年的 Firefox/Chrome/Safari/Opera與它們現今的版本相比也不咋地啊……老 IE 對標準支持是不好,但也得考慮人家當年出來的時候可能標準都還沒定呢,好多黑科技還是 IE 先發明然後才進標準的)

如何評價 微軟 Microsoft Edge 瀏覽器?

雖然 IE10+ 已經開始跟上新標準的步伐了,但是還是在一定程度上被更新策略拖累。Firefox、Chrome、Opera 的更新都非常簡單,對普通用戶來說幾乎是隱形的,但是 IE 的更新算進系統更新,對普通用戶而言看上去比較嚇人,因此經常會不願意更新,而且很多用戶(比如盜版)會直接關掉更新提醒,更是雪上加霜。此外 IE 也有 M$ 那個完全不適合瀏覽器的 10 年質保政策,讓老 IE 有了更多理由苟延殘喘……

好消息是,因為 Windows 10 將採取滾動更新的策略,Edge 也會成為又一個快速迭代更新的瀏覽器(Edge 的 session Q&A 部分有提到具體更新速度還沒定,目前比較傾向於一個月兩次,如果確定是這個速度的話簡直突破天際)。 Win 8 之後系統的更新人性化了許多,加上 Windows 10 將在國內與 360、騰訊管家等(不知道算什麼軟件的)廠商合作,Edge 的更新應該不會再遇到 IE 那樣的窘境。結合 http://status.modern.ie/ 可以看出, Edge 將來對新標準的支持會相當不錯。

所以……不是 Microsoft Edge 1.0 啊 !是 Microsoft Edge啊!沒有 Document mode,滾動更新的 Microsoft Edge 啊!M$ 終於加入了 evergreen 大軍!(參考:The "Project Spartan" Rendering Engine That Makes the Web Just Work)(原諒我使用了咆哮體……請讀:Browser Market Pollution: IE[x] is the new IE6)

這個意義上來看 Edge 這名字簡直起的好!你還記得大明湖畔的


嗎?

Update: Ignite 有人說漏嘴啦,“Right now we’re releasing Windows 10, and because Windows 10 is the last version of Windows, we’re all still working on Windows 10.”( Tiles, Notifications, and Action Center )以後 Windows 和 Edge 都一直滾了……大概類似於 Mac OS X 的情形?

如何評價 微軟 Microsoft Edge 瀏覽器?

IE 還有一個問題是它的開發者工具在很長一段時間裡一直落後於時代。IE 10 前別人已經進入工業社會(Firebug 和一堆逆天插件,Chrome Dev Tools),IE 還在農業社會玩泥巴(那個醉人的 DOM Inspector 和純文字的 Console……)。IE11 的 F12 進入了工業社會,而其他瀏覽器已經進入現代社會開始玩黑科技了(正經的移動端模擬器,Chrome 的 workspace、動畫開關、event breakpoint 和正經的 profiler,Firefox 的 3D View ,還有各種插件,等等)。Edge 的 F12 總算進入了現代社會(其實 IE 11 開始已經在抓緊跟進了),而且多少有了些亮點(後面會提)

……(參考:What’s New in F12 for "Project Spartan")

如何評價 微軟 Microsoft Edge 瀏覽器?

如何評價 微軟 Microsoft Edge 瀏覽器?

3. 擁抱標準、與其他瀏覽器保持統一IE9 之前 M$ 對於標準(或者說對W3C)的態度並不是非常積極(畢竟市場佔有率高,自己就是事實標準),由於 IE6 取得壟斷之後 M$ 高層不再重視瀏覽器這塊,開了很久的天窗,Acid2 和 Acid3 測試出來的時候 IE 團隊忙著填坑所以也不是很重視(IE7 的 Acid2 測試結果簡直是恐怖片啊嗷:Acid2)。IE10 開始對標準的支持改善了很多,從 HTML5、CSS3、ES6 到 WebGL、WebSocket 等領域開始追平其他瀏覽器,而且也通過 http://status.modern.ie/ 不斷公開對新標準的態度與實現進展。

如何評價 微軟 Microsoft Edge 瀏覽器?

Edge 最顯著的特點就是新內核 EdgeHTML,原本 IE 團隊是準備讓這個新瀏覽器包含兩個內核以方便向後兼容的(另一個是舊的 MSHTML,IE11- 的內核,好像前端們比較喜歡叫它 Trident,不過 M$ 的 session 裡他們都管它叫 MSHTML),但是最後由於技術原因決定讓新瀏覽器只保留新的內核(來源:A break from the past: the birth of Microsoft's new web rendering engine),然後另外保留一個有舊內核的 IE11。前端開發者應該都體會過,要寫出在 Chrome、Firefox、Opera 上表現一致的代碼一般不會花太大力氣,然而如果要在兼容名單里加上 IE 通常就要做不少額外的工作,簡而言之就是“他怎麼跟我們畫風不同= =”。Edge的一個目標就是儘量抹平 M$ 瀏覽器與其他瀏覽器的差距。EdgeHTML 其實是從 MSHTML fork 而來,刪掉了幾乎所有的 IE 私有特性,因此在 Edge 中再也沒有 ActiveX、VBScript、Document Mode 這些東西了,甚至在開發 F12 開發者工具的時候都儘量讓快捷鍵設計與提供的工具和其他瀏覽器保持一致(參見What’s New in F12 for "Project Spartan"),他們的主要目的就是讓用戶與開發者在不同瀏覽器上都能有一致的體驗。

如何評價 微軟 Microsoft Edge 瀏覽器?

"Project Spartan": Introducing the New Browser and Web App Platform for Windows 10 裡給出了他們在 Windows 10 preview 裡用兩個內核做 A/B Testing 的對比結果。由於修改了 UA 隱藏了自己 M$ 家族成員的身份(沒記錯的話是偽裝成了 webkit = =),網站在遇到 EdgeHTML 的時候會直接上給其他瀏覽器用的代碼,而沒有那些專門給 IE 準備的 fix。第一次暴露在這樣沒有 IE 適配的環境下,EdgeHTML 在 preview 裡一開始的效果非常糟糕。在加入了大量的 interoperability fix (山寨其他瀏覽器比如加 -webkit-)之後 EdgeHTML 的效果開始慢慢進步到正常水平。

Edge 的目標是 “the Web just works”,希望未來的前端開發能夠不再需要 feature detection/browser sniffing 這些東西,只要是符合標準的代碼,在各家瀏覽器的最新版本上就能夠取得一致的效果。身為一個前端,請讓我為這份情懷抹把淚……不僅僅是渲染引擎從 MSHTML 改為 EdgeHTML ,Edge 的 JavaScript 引擎也做出了類似的改動(名字依然是 Chakra,改了.dll 的名字,內容上的修改方向類似 EdgeHTML),參考下圖(來源:Chakra: The JavaScript Engine that powers Microsoft Edge):

如何評價 微軟 Microsoft Edge 瀏覽器?

Edge 的 Chakra 引擎還引入了 Simple JIT 技術(bailout 退回不使用 profiling data 的 Simple JIT 而不是回到 profiling interpreter 等待下一次 Full JIT) 、多線程 JIT、跨文件的 function inlining、更寬鬆的 inline cache 限制等,更多請參考 Chakra: The JavaScript Engine that powers Microsoft Edge4. Edge 的與眾不同之處

你可能會覺得有些不可思議,但目前來說 Edge 的 ES6 支持居然是所有瀏覽器裡最好的,比 Firefox 還略高一些(當然,等到 6 月標準最終通過之後其他瀏覽器應該也會很快跟上的):

如何評價 微軟 Microsoft Edge 瀏覽器?

ECMAScript 6 compatibility table在 Edge 上可以看到大量 TypeScript 的影子。和 Firefox、Crhome 等瀏覽器一樣,Edge 也使用類似 HTML+CSS+JavaScript 的技術來寫開發者工具(所以如果你用 F12Chooser 的話就可以用 F12 debug F12 了……),不過 JavaScript 的部分是用 TypeScript 編譯過去的。 M$ 在 TypeScript 上投入了不少資源(Anders Hejlsberg 這種大神都出動了,讓我感動一下),不僅僅是為了推動 Web 的發展,也是為內部開發提供更好的支持。 What’s New in F12 for "Project Spartan" 就提到了 TypeScript 的強類型系統在多人開發一個F12這樣比較複雜的應用的時候帶來了很多的好處(靜態分析、補全、文檔等),這點相信試用過 Visual Studio Code 的同學們應該已經體會過了(VSC 的補全功能就是用 TypeScript Definition File 實現的)。

如何評價 微軟 Microsoft Edge 瀏覽器?

Edge 的 JavaScript Debugger 提供了 “Go to definition” 和 “

Find references” 這種 IDE 級別的功能,但是對純 JavaScript 的效果不是很好(類型推導不好做),而如果是強類型的 TypeScript(Edge支持source map)就能提供非常完善的 tooling 了。 另外 Edge 將會作為新的 WebView 內核,同時在 Windows 10 裡作為 Hosted Web App 的支撐(Hosted Web App 主要特徵就是在 manifest 裡給個 URL,用戶打開其實就是個類似 Web View 的東西),裡面的 JavaScript 可以使用 Universal API(可以訪問硬件、和 Windows 內置的一些生活服務交互,類似於原生 API),配合 Windows 10 的跨終端設定,以後在 Windows 平臺上可以寫非常強大的 Web App/Hybrid App 了……

可能會有不少前端會覺得,雖然 Edge 看上去挺好,然而國內市場上 IE6 等老 IE 就跟打不死的小強一樣,Edge 再美好也不關我們的事。個人的看法是“better late than never”,遲到好過不到,何況不管要花多久,IE 始終是要淘汰的,起碼 Edge 已經讓我們看到了一個光明的未來。

Edge 能否成功取代老 IE,關鍵應該是 Windows 10 能否取代 Windows XP 等老操作系統。國內的話既然 M$ 已經放下身段和 360、騰訊管家合作,願意讓盜版用戶也直接升級了,個人還是比較看好 Windows 10 的前景的。

另外有些人比較介意 Windows 10 裡還保留著 IE11 這件事,不過 Edge 的團隊已經明確表示 IE11 純粹是為兼容性保留的,除了安全修復不會再有其他的更新,包括開發者工具也凍結在了以前的狀態。Windows 10 的默認瀏覽器將會是 Edge新特性和新的開發者工具和新的 API 都只屬於 Edge,它已經不是一個簡單的實驗性項目了(來源:Project Spartan": Introducing the New Browser and Web App Platform for Windows 10 )另外我怎麼覺得每個 session 裡都瀰漫著一股“臥槽 IE 的代碼我已經不想再搞了 Edge 乾乾淨淨的多好不是為了企業級客戶我才不要留 IE 呢整天背鍋好痛苦啊都淪落到山寨別人了心好塞” 的氣氛……

P.S. IEBlog 都已經被關了改為 Microsoft Edge Dev Blog(Introducing Microsoft Edge, the browser built for Windows 10),twitter 的 @IEDevChat 已經改為 @MSEdgeDev (見最前面的圖),dev.modern.ie 的首頁……我不說了你們自己感受一下:Developer Resources : MSEdge Dev

目前來看對於普通用戶而言 Edge 比 IE11 更友好,還多了很多酷炫小功能(Cortana整合、塗鴉、類似 Pocket 和 Clearly 的閱讀功能),加上在很多人心中 IE 就是卡又慢的代名詞,IE11 的存在應該不會是太大的問題。雖然 IE 存在很多缺點,但目前它對於很多人來說依然是不可或缺的(某些教務系統、內部系統、網銀等),也不能強求 M$ 直接一下就幹掉它(不然 Windows 10 怎麼活啊……)。

不過呢,也還是有一個坑……Edge 的部分特性要到 RTM 之後才會有(考慮到 Windows 10 的滾動更新好像也不是大問題):

如何評價 微軟 Microsoft Edge 瀏覽器?

可能有人會問,Edge 這樣滾動更新,會不會企業級應用再也不敢放到上面開發了?其實只要針對已經進入 W3C Recommendation 的標準開發,不僅可以兼容現有的瀏覽器,還可以兼容未來的瀏覽器(除非要兼容老 IE)……實在需要特殊 API 的地方,可以上插件,不過目前的 HTML5 技術已經可以滿足大多數場景的需要了(所以大佬們請快點搞個統一的插件標準?)。或者也可以做成 Hosted Web App/Packaged App 這樣就可以調用 Universal API 了(P.S. Build 2015 的多個 session 提到了 Apache Cordova)。個人感覺 Web 的進步離不開瀏覽器廠商的競爭,對開發者和用戶而言,最好的是各家瀏覽器互相制衡的局面,一家獨大對 Web 的前進會起到負面的作用(無論獨大的是 IE 還是 Chrome 都一樣,跟公司無關)。現在在全球市場上 M$ 家族相對於 webkit 家族已經開始呈現弱勢,雖然還有 Firefox,不過對於普羅大眾而言,戰鬥力不能和前兩家相比。Edge 如果成功也會刺激其他的瀏覽器廠商繼續進步,這種局面對 Web 是有利的。

作為前端開發者,希望大家能夠給 Edge 應得的鼓勵,如果非得做 browser sniffing,不要對 Edge 太狠,儘量少用 vendor prefix 或者寫全 prefix 和沒 prefix 的 CSS。它已經很努力在追平和其他瀏覽器的差距了,不要再讓它不得不搞出:

Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0

和明明有`transition`和`-ms-transition`還要提供 `-webkit-transition` 這種苦逼的舉措了(來源:The "Project Spartan" Rendering Engine That Makes the Web Just Work)……

如何評價 微軟 Microsoft Edge 瀏覽器?


分享到:


相關文章: