對(duì)資深 Web 開發(fā)者來說, 這行代碼并不陌生。Internet Explorer 曾是 Web 2.0 的源泉,是 Internet 創(chuàng)新驅(qū)動(dòng)力,歷經(jīng)了興起和衰落,而后成為了 Web 開發(fā)者的痛點(diǎn)。2022 年 6 月 15 日,微軟 IE 正式退役,在過去的 27 年里,IE 所經(jīng)歷的整個(gè)的生命周期其實(shí)也是互聯(lián)網(wǎng)從萌芽到繁盛的歷史。
接替 IE 的是 2015 年誕生的 Microsoft Edge,這是一款帶有復(fù)興使命的瀏覽器產(chǎn)品。微軟將精力放在了將 Edge 打造為現(xiàn)代網(wǎng)絡(luò)瀏覽器上。
在告別 IE 的特殊時(shí)期,InfoQ 有幸和 Edge 團(tuán)隊(duì)聚在一起聊了聊瀏覽器的發(fā)展歷史,Edge 開發(fā)過程和產(chǎn)品理念,以及 Web 開發(fā)的過去以及未來。
采訪嘉賓:
邢璟夏:微軟(亞洲)互聯(lián)網(wǎng)工程院瀏覽器與移動(dòng)端應(yīng)用部總經(jīng)理,全球合伙人。
陳志寧:微軟(亞洲)互聯(lián)網(wǎng)工程院瀏覽器首席技術(shù)研發(fā)經(jīng)理。
從 IE 到 Edge:尊重 Web 的過去,向往 Web 的未來
構(gòu)建現(xiàn)代瀏覽器是一件相當(dāng)復(fù)雜的工作。
瀏覽器本質(zhì)上是一個(gè)操作系統(tǒng),底層包含渲染引擎和執(zhí)行引擎兩大部分。在將要進(jìn)入 Web3.0 的時(shí)代,網(wǎng)站上的元素以及互動(dòng)已經(jīng)非常多、非常豐富,為了支持這么豐富的展現(xiàn)形式,同樣還要兼顧效率,渲染引擎已經(jīng)變得非常復(fù)雜。除了渲染引擎之外,還要去搭建整個(gè)瀏覽器的生態(tài)和眾多功能。
無論是 Edge 還是其他瀏覽器,很多功能還都有跨屏幕跨設(shè)備同步的能力。我們每天在瀏覽器里做著各種操作,比如在電腦端將網(wǎng)頁放到收藏夾里,在手機(jī)端也能看到同樣的網(wǎng)頁。這些操作看似點(diǎn)點(diǎn)手指頭這么簡(jiǎn)單,背后其實(shí)能分解出很多工作,要用很多前端的能力去跟用戶做交互,那么這就導(dǎo)致前端執(zhí)行引擎邏輯同樣不會(huì)簡(jiǎn)單。因此作為一個(gè)網(wǎng)絡(luò)上供上億人使用的交互應(yīng)用,開發(fā)一個(gè)瀏覽器所涉及的代碼量已達(dá)數(shù)千萬行,跟桌面操作系統(tǒng)同屬計(jì)算機(jī)領(lǐng)域最為復(fù)雜的工程之一。
經(jīng)過了二三十年的發(fā)展,這個(gè)行業(yè)仍然處于競(jìng)爭(zhēng)激烈創(chuàng)新不斷的時(shí)期,我們常見的包括微軟的 IE/Edge、蘋果的 Safari、谷歌的 Chrome 等。其中 IE 曾是全球市場(chǎng)份額第一的瀏覽器,并在 2003 年迎來歷史巔峰時(shí)刻,全球份額高達(dá) 95%,遠(yuǎn)超現(xiàn)在領(lǐng)先的 Chrome、Safari 等瀏覽器的份額。
IE 引入了如 ActiveX 控件獨(dú)有框架,在 IE 處于主導(dǎo)地位的時(shí)代,大量網(wǎng)站和其他傳統(tǒng)應(yīng)用程序選擇只與 IE 瀏覽器完全兼容,其結(jié)果就是其中很多缺少更新的網(wǎng)站至今只支持 IE 瀏覽,如果換一個(gè)瀏覽器訪問的話,網(wǎng)站的主要功能會(huì)無法運(yùn)行。
曾經(jīng)成為 Web 開發(fā)者的痛點(diǎn),不兼容 macOS 系統(tǒng),經(jīng)歷過被競(jìng)爭(zhēng),微軟勇于從過程中學(xué)習(xí),2022 年 6 月 15 日,IE 正式退役,微軟 Edge 瀏覽器為它的替代者。

新一代的瀏覽器放棄了 IE 專有功能,但其雙引擎形式能支持 IE 模式,且能兼容其它平臺(tái),擁抱全平臺(tái),將可用性擴(kuò)展到了 macOS、Linux、Android 和 iOS 系統(tǒng)。
作為微軟最新的瀏覽器平臺(tái),Edge 有兩大發(fā)展階段。首先是于 2015 年發(fā)布的第一版本,當(dāng)時(shí)使用的是微軟自己的引擎 EdgeHTML,旨在與 Safari、Chrome 和其他瀏覽器使用的 WebKit 引擎完全兼容?;谧匝幸?,微軟還迭代了數(shù)次,于 2017 年發(fā)布了安卓跟 iOS 的版本。
其次是在 2018 年,微軟做出了遷移到 Chromium 的大膽決定,將 Edge 的底層渲染引擎和 JavaScript 執(zhí)行引擎遷移到了 Blink 和 V8,這相當(dāng)于將整個(gè)代碼做了一次脫胎換骨的全新升級(jí)。2019 年,微軟發(fā)布了基于新的 Chromium 瀏覽器的預(yù)覽版本,同時(shí)在同年 5 月 20 號(hào)推出了 Mac 版本。
2020 年 10 月份微軟再次發(fā)布了 Edge for Linux,從此覆蓋了大部分的主流操作系統(tǒng),全面擁抱全平臺(tái),這也是跟 IE 之前一個(gè)很大的不一樣。
親歷者的獨(dú)到見解
瀏覽器發(fā)展至今,擁抱標(biāo)準(zhǔn)、提升體驗(yàn)已經(jīng)是一種公認(rèn)的趨勢(shì)。
微軟瀏覽器的發(fā)展有過無人能及的巔峰但也曾受到過質(zhì)疑,尤其是在過去幾年谷歌 Chrome 瀏覽器接管成為市場(chǎng)主導(dǎo)者之后。但無論是目睹瀏覽器逐漸穩(wěn)定的開發(fā)者,還是參與瀏覽器產(chǎn)品的設(shè)計(jì)者,作為歷史的見證者,都一定會(huì)有自己的體會(huì)以及對(duì)技術(shù)的獨(dú)到見解,了解這些背后的故事才能夠明白技術(shù)為何這樣演變。
專有框架是 Web 開發(fā)史上最大的噩夢(mèng)?!
多年來,HTML 前端經(jīng)歷過很多階段,IE 經(jīng)歷了多次重新設(shè)計(jì)。IE 的第一個(gè)版產(chǎn)生于 Web 1.0 時(shí)期。前端主要是完成渲染,用戶能夠被動(dòng)接收并閱讀頁面內(nèi)容,是一種單向的體驗(yàn)。
到了 Web 2.0 時(shí)代,用戶開始有了更多交互訴求,實(shí)現(xiàn)在頁面上登錄、購買、點(diǎn)贊、投票… 網(wǎng)頁不再是靜態(tài)實(shí)體。作為這樣所有頁面的載體,瀏覽器也要保持與時(shí)俱進(jìn)。在這個(gè)時(shí)期,IE 引入了支持異步的 AJAX、后來必不可少的 CSS 功能,以及現(xiàn)在廣受詬病的 ActiveX 控件支持。
對(duì)于 IE 的技術(shù),邢璟夏認(rèn)為:“如果我們站在這個(gè)時(shí)間點(diǎn),從上帝視角往回看的話,你現(xiàn)在可能會(huì)覺得 ActiveX 技術(shù)已經(jīng)過時(shí)了,但回到那個(gè)時(shí)間點(diǎn)的話,ActiveX 是微軟提出的在當(dāng)時(shí)能夠切實(shí)有效的解決問題的一種手段。只不過到了今天,有更好的實(shí)現(xiàn)方式了,它就不那么 fashion 了?!?/p>
為什么 IE 不兼容 macOS?
在蘋果系統(tǒng)占據(jù)半壁江山的時(shí)候,IE 不支持 macOS 確實(shí)有些令人費(fèi)解。但如果了解 2000 年左右的一些歷史背景,我們就會(huì)知道微軟瀏覽器在當(dāng)時(shí)是支持 macOS 的。在 1997 年到 2003 年,MacOS 10 時(shí)期,IE 是蘋果默認(rèn)綁定的瀏覽器。
據(jù) Wired《Apple Rescued – by Microsoft》一文記載,在這個(gè)時(shí)間段,微軟向蘋果投資了 1.5 億美元,作為與蘋果簽訂的五年協(xié)議的一部分,微軟一直在為 Mac 維護(hù) IE。有老用戶評(píng)價(jià)說,“那時(shí),Mac 上的 IE 是當(dāng)時(shí)該系統(tǒng)上最好的瀏覽器。相比其它瀏覽器,IE 快速、穩(wěn)定,看起來很原生…”
五年過去后,蘋果開發(fā)了自己的瀏覽器,于 2003 年推出基于 WebKit 的 Safari 瀏覽器。微軟隨之停止了對(duì)于 macOS 的支持,專注于 Windows,并建議用戶遷移到蘋果自帶的 Safari。更重要的是,蘋果于 2005 年將 WebKit 開源,當(dāng)谷歌開始開發(fā)自己的瀏覽器時(shí),它轉(zhuǎn)向了 WebKit,Chrome 的故事就開始了…
“這也是當(dāng)時(shí)的一個(gè)技術(shù)氛圍,當(dāng)時(shí)業(yè)界的狀態(tài)是各大科技公司有各自的系統(tǒng),各占一方鰲頭,不是像今天這樣的業(yè)界,著重于共創(chuàng)共生跨平臺(tái)的協(xié)作?!标愔緦幹v到,“如今,微軟的 Edge 瀏覽器也能夠覆蓋各種平臺(tái),不只是 Windows、macOS 以及 Linux,還有移動(dòng)端的 iOS 跟安卓,還有各種類型的用戶裝置,包括桌面、移動(dòng)、電視、微軟的 Xbox 游戲平臺(tái),還有最新、最智能的混合現(xiàn)實(shí)的 Hololens,都能夠支持使用 Edge 瀏覽器?!?/p>
為什么會(huì)采用開源內(nèi)核?
谷歌于 2008 年發(fā)布了 Chrome 瀏覽器,并開源了 Chromium 內(nèi)核源代碼,最開始基于 WebKit 和 JavaScript 執(zhí)行引擎 V8。后來,Chrome 開始研發(fā)自己的渲染引擎,形成了 Blink+V8 的引擎架構(gòu)。
Chromium 完全由開源社區(qū)進(jìn)行維護(hù),生態(tài)開放且繁榮。微軟瀏覽器于 2018 年轉(zhuǎn)向開源內(nèi)核后,Edge 團(tuán)隊(duì)就逐漸成為了全球第二大 Chromium 開發(fā)團(tuán)隊(duì)。Edge 基于 Chromium 底層做了很多性能優(yōu)化,還引入了很多人工智能、Machine Learning 的技術(shù)。
微軟將 Chromium 作為 Edge 引擎收到了業(yè)界褒貶不一的評(píng)價(jià),有些人認(rèn)為此舉減少了整個(gè) Web 瀏覽器市場(chǎng)的多樣性。
邢璟夏認(rèn)為,利用開源回饋開源是一方面原因,最重要的是“我們希望用戶訪問一個(gè)網(wǎng)站的時(shí)候,不管用什么瀏覽器,他都能得到一個(gè)高度一致的體驗(yàn)。而開發(fā)者在做這個(gè)網(wǎng)站時(shí),不需要在 Edge 上適配一次,在 Chrome 上適配一次,在 Safari 上再適配一次。適配多次對(duì)開發(fā)者非常不友好?!?/p>
構(gòu)建現(xiàn)代瀏覽器:兼顧性能、功能和安全
互聯(lián)網(wǎng)已經(jīng)發(fā)生了翻天覆地的變化,重新構(gòu)建的 Edge 瀏覽器也放棄了 IE 上的一些過時(shí)技術(shù),但最重要的是得到了性能上的明顯提升,啟用速度快,也不怎么占內(nèi)存。
Edge 團(tuán)隊(duì)在日常中不斷地去對(duì)底層的渲染引擎和 JavaScript 執(zhí)行引擎做深度技術(shù)優(yōu)化,比如像 PGO 算法、渲染引擎的 hot code paths 功能,讓渲染速度跟 IE 相比有比較大的提升,其中 CPU 使用率優(yōu)化了 33%,內(nèi)存使用率優(yōu)化了 32%。
構(gòu)建瀏覽器非常重要的一個(gè)點(diǎn)是頁面的使用反應(yīng),不管是在滾動(dòng)還是按鍵,在頁面上做交互的時(shí)候,渲染速度和用戶體驗(yàn)都是非常重要的。以前很多重度用戶習(xí)慣打開幾十個(gè) Tab 頁面,在頁面元素比較復(fù)雜的情況下,打開多個(gè)頁面的行為會(huì)導(dǎo)致瀏覽器明顯卡頓,反饋很慢, 為此 Edge 的團(tuán)隊(duì)做了很多的深度的技術(shù)優(yōu)化,放到現(xiàn)在,這樣的使用方式對(duì)用戶來說幾乎沒有什么影響。Edge 團(tuán)隊(duì)不斷“一步一步地”做了很多小而美的優(yōu)化來提升頁面渲染速度,還通過 Smart Sleep 人工智能節(jié)能功能,判斷不常用的頁面并將內(nèi)存先回收,直到再次點(diǎn)擊的時(shí)候重新快速渲染,保證在打開很多頁面的時(shí)候,整個(gè)系統(tǒng)的內(nèi)存占用率不會(huì)是一個(gè)線性的提升。
此外,雖然 Edge 跟 Chrome 都基于開源的 Chromium,但微軟在此之上還做了很多差異化的能力。比如從 Edge 誕生就具備的沉浸式的閱讀模式,收藏集錦功能,垂直標(biāo)簽欄功能,以及智能翻譯和 Read Aloud(大聲朗讀)無障礙功能等等。

背靠微軟的綜合研發(fā)能力,Edge 還引入了一些其它 AI 功能。像智能填充功能,使用瀏覽器時(shí)我們會(huì)在很多地方反復(fù)地輸入一些高度重合的信息,比如購物時(shí)可能在京東輸入完地址信息后,在天貓可能還要輸入,Edge 提供了一個(gè)智能填充的功能,用機(jī)器學(xué)習(xí)訓(xùn)練一個(gè)模型,在保證用戶隱私的情況下抽取字節(jié)段,填寫時(shí)自動(dòng)判斷自動(dòng)填充。另外 Edge 還能在打字的時(shí)候提供智能糾錯(cuò),通過人工智能判斷上下文的語境,對(duì)用詞不對(duì)的地方給予提醒。除此之外,在購物體驗(yàn)上也有專門的創(chuàng)新功能,可以跨網(wǎng)站或 App 端比對(duì)多家的商品價(jià)格,做信息匹配和推薦,保障購物體驗(yàn)的同時(shí)還能幫用戶省錢。
對(duì)于 Edge 來說安全也是一個(gè)非常重要的領(lǐng)域。微軟團(tuán)隊(duì)做了很多增強(qiáng)安全保護(hù)的功能,保障 Edge 瀏覽器成為最安全的瀏覽器。比如 Smart Screen 的功能,為用戶提供過濾機(jī)制,用機(jī)器學(xué)習(xí)智能過濾釣魚網(wǎng)站、潛在有危險(xiǎn)的網(wǎng)站。在企業(yè)側(cè) Edge 跟 Microsoft 365 整體的產(chǎn)品也有很強(qiáng)的聯(lián)動(dòng)機(jī)制,還能夠基于 Azure Active Directory(AAD)、Access 設(shè)定來保障企業(yè)的機(jī)密數(shù)據(jù)。在企業(yè)版中提供遠(yuǎn)程瀏覽器訪問,在服務(wù)端去渲染,再將 Picture、Video 形式的數(shù)據(jù)傳到客戶端,徹底的保護(hù)客戶端的安全。
Edge 背后的中國(guó)團(tuán)隊(duì)
這個(gè)影響上億萬人的產(chǎn)品的背后,有一支中國(guó)開發(fā)團(tuán)隊(duì)參與產(chǎn)品的全球的創(chuàng)新。他們肩負(fù)了重振微軟瀏覽器的品牌重任,讓 Edge 跟上行業(yè)競(jìng)爭(zhēng)的步伐,不斷贏取更多的用戶。中國(guó)團(tuán)隊(duì)負(fù)責(zé)了 Edge 瀏覽器移動(dòng)端、部分桌面端,以及企業(yè)端功能開發(fā)。Edge 在中國(guó)的整個(gè)產(chǎn)業(yè)鏈非常大,而且涵蓋了瀏覽器的方方面面。
為贏取用戶的喜愛,Edge 非常用心在關(guān)注瀏覽器的用戶體驗(yàn)和包容性。瀏覽器必須是可互操作的并符合一套全面的標(biāo)準(zhǔn),所以 Edge 在帶領(lǐng) Web 業(yè)界技術(shù)方向的同時(shí),也會(huì)參與 W3C 和 EcmaScript JavaScript 標(biāo)準(zhǔn)的制定。
此外,微軟在中國(guó)也設(shè)有用戶體驗(yàn)團(tuán)隊(duì),為不同用戶群體提供個(gè)性化服務(wù),并針對(duì)不同場(chǎng)景測(cè)試和驗(yàn)證用戶對(duì) Edge 的各種功能的接受度和喜愛度。
企業(yè)文化
中國(guó)團(tuán)隊(duì)面向全球開發(fā),跟印度團(tuán)隊(duì)和美國(guó)團(tuán)隊(duì)也有緊密合作,同時(shí)還會(huì)整合 AI 團(tuán)隊(duì)和安全團(tuán)隊(duì)的力量,比如 AI 能力的應(yīng)用和安全上的補(bǔ)丁升級(jí)。大家跨團(tuán)隊(duì)跨國(guó)家協(xié)作,讓這些前沿技術(shù)落地到不同的合適的場(chǎng)景中。
微軟在很多年前開始就是一個(gè)跨國(guó)開發(fā)公司,堪稱是全球化企業(yè)的范例。在協(xié)作中,他們遇到過的問題也是現(xiàn)在中國(guó)出海全球化企業(yè)遇到的問題,比如雖然開會(huì)有時(shí)差。這種情況下,微軟的經(jīng)驗(yàn)是首先團(tuán)隊(duì)之間一定會(huì)做足溝通,相互協(xié)調(diào),“開會(huì)會(huì)找一個(gè)大家都能接受的黃金時(shí)間”。另一個(gè)是在有文化差異的背景下,鼓勵(lì)成長(zhǎng)型思維,各國(guó)團(tuán)隊(duì)之間強(qiáng)調(diào)“相互欣賞,相互學(xué)習(xí)”,保障彼此之間的良好溝通,踐行 OneMicrosoft 的價(jià)值觀,讓大家在相互尊重的情形下進(jìn)行協(xié)同開發(fā)。
在成熟的企業(yè)文化下,Edge 團(tuán)隊(duì)雖然是一支全球化的分布式團(tuán)隊(duì),在不同地方跨地區(qū)協(xié)作,但無論是國(guó)內(nèi)還是國(guó)外,遠(yuǎn)程在家還是在公司,“跟在一個(gè)地方?jīng)]有區(qū)別。”邢璟夏說,“大家并不會(huì)考慮多地區(qū)而去單獨(dú)設(shè)計(jì)我們的產(chǎn)品研發(fā)流程。但是我們會(huì)為了考慮到當(dāng)?shù)赜形幕牟町悾蠹易飨r(shí)間時(shí)差的差異,會(huì)定向的做一些協(xié)同和溝通機(jī)制,通過流程及工具讓人和地點(diǎn)相互解耦?!?/p>
工程文化
據(jù)網(wǎng)絡(luò)上的最新數(shù)據(jù)顯示,Edge 受歡迎程度不斷攀升,今年 4 月占有率突破了 10% 的大關(guān)(約 1.56 億用戶),首次超過蘋果 Safari,成為世界第二大瀏覽器。
上世紀(jì)八九十年代,市場(chǎng)需求較為穩(wěn)定,瀑布式開發(fā)流程是首選。瀑布模型相當(dāng)于半年開發(fā)、半年測(cè)試:前半年就是瘋狂的寫代碼,后半年瘋狂的解 Bug,然后上線。在現(xiàn)在的發(fā)展趨勢(shì)下,很難預(yù)見到一年之后用戶需要什么,所以瀑布模式肯定是不可取的。研發(fā)團(tuán)隊(duì)需要加快整體的開發(fā)速度,現(xiàn)在很多移動(dòng)互聯(lián)網(wǎng)產(chǎn)品都會(huì)采用小步快跑、快速迭代的方式。但到底是采用小步快跑,還是一次性做到位?這很難有一個(gè)確切的標(biāo)準(zhǔn)。在有激烈行業(yè)競(jìng)爭(zhēng)的情況下,Edge 的產(chǎn)品會(huì)采用什么開發(fā)速度?微軟也一直在前進(jìn),在進(jìn)化,在“快”跟“好”之間去找一個(gè)平衡點(diǎn)。
由于整個(gè)業(yè)務(wù)非常復(fù)雜,微軟會(huì)把權(quán)力下放到各個(gè)團(tuán)隊(duì),讓大家去選擇自己合適的開發(fā)的步調(diào)、開發(fā)的方式去做事情。在 Edge 團(tuán)隊(duì)中,新瀏覽器的發(fā)布周期選擇了跟 Chromium 保持一致。Chromium 開發(fā)者社區(qū)是一個(gè)全球頂尖的開源社區(qū),開發(fā)者們?cè)诓煌5刎暙I(xiàn)自己的代碼和力量。跟社區(qū)周期保持一致的好處是能第一時(shí)間更新,杜絕安全隱患,并及時(shí)將最新版本送到用戶手上。
在定好時(shí)間周期的基礎(chǔ)上,Edge 追求的是技術(shù)穩(wěn)定性、技術(shù)健康度,和功能開發(fā)之間的平衡。上線一個(gè)算法,不會(huì)是要求時(shí)間優(yōu)先,比如下個(gè)月就要看到,這種方式就算能上線了,也會(huì)導(dǎo)致優(yōu)化指標(biāo)達(dá)不到最初的效果。所以,在做項(xiàng)目管理和排期時(shí),Edge 團(tuán)隊(duì)會(huì)先保證更好的工程體驗(yàn),持續(xù)在基礎(chǔ)的性能、內(nèi)存優(yōu)化、啟動(dòng)速度上投入,保證有非常大的數(shù)量的技術(shù)人力在做整體的穩(wěn)定性、健康度優(yōu)化的工作。
在互聯(lián)網(wǎng)模式的沖擊下,減少測(cè)試步驟、快速進(jìn)行試錯(cuò)已成為部分企業(yè)的常見打法,這一切不斷沖擊著傳統(tǒng)軟件測(cè)試中賴以生存的“流程”“規(guī)范”等優(yōu)勢(shì),但在微軟,還是有非常嚴(yán)格的產(chǎn)品交付流程。
由于 Edge 的用戶體量已經(jīng)過億,交付到用戶和開發(fā)者手上的必須是一個(gè)高質(zhì)量產(chǎn)品。因?yàn)樵谟脩趔w量非常大的情況下,小問題很容易被放大,假設(shè)比例是萬分之一的話,10 萬人產(chǎn)品只影響 10 個(gè)用戶,如果產(chǎn)品用戶的體量不大,那么可以走快速發(fā)布、快速迭代路線。但微軟 Edge 已經(jīng)有了上億用戶,如果產(chǎn)品中存在一個(gè) Bug,發(fā)布之后影響的可能起碼是 10 萬名用戶?!霸趩栴}產(chǎn)生之前先把它找出來、解決掉,而不是事后再去防范。”
在一個(gè)完整的研發(fā)流程上,微軟在測(cè)試上的投入非常大,會(huì)給開發(fā)留足夠的時(shí)間去做自動(dòng)化測(cè)試。相對(duì)手工測(cè)試用例,自動(dòng)化測(cè)試是一種更高效的做法,相當(dāng)節(jié)省時(shí)間的方式。并設(shè)有專門的測(cè)試團(tuán)隊(duì)去保障每一個(gè) feature 的質(zhì)量,負(fù)責(zé)測(cè)試產(chǎn)品的功能、性能、體驗(yàn),保障給到用戶的時(shí)候是最好的狀態(tài)。因?yàn)槲④浰械漠a(chǎn)品都是 for global 的,所以每個(gè)產(chǎn)品都是多語言的,這給測(cè)試帶來的挑戰(zhàn)也是非常大的,所以在 Edge 開發(fā)流程中,從產(chǎn)品經(jīng)理到開發(fā),到測(cè)試團(tuán)隊(duì),都要對(duì)“測(cè)試”的事情負(fù)責(zé)。
Web 技術(shù)的發(fā)展:幸福的繁榮
如果說 IE 曾是開發(fā)者的痛點(diǎn),但 Web 開發(fā)社區(qū)顯然表現(xiàn)出對(duì) Microsoft Edge 的喜愛。
開發(fā)人員和 QA 測(cè)試人員都知道為 Web 構(gòu)建的功能可以在一個(gè)瀏覽器中運(yùn)行,并不意味著它可以在每個(gè)瀏覽器中運(yùn)行。但 Web 的兼容性又是極其重要的,是開發(fā)一個(gè)好的 Web App 的必備關(guān)鍵,遷移到 Chromium 意味著 Edge 的框架功能更加一致。Microsoft Edge 中的內(nèi)置開發(fā)者工具也具備了 Chrome 中提供的工具,包含 Extension、DevTools,以及 F12。另外,Edge 還提供了 WebView2 和 PWA(漸進(jìn)式網(wǎng)絡(luò)應(yīng)用程序)平臺(tái)。
WebView2 能夠讓開發(fā)者在他們的原生應(yīng)用里嵌入 WebView,來渲染已有的 Web 內(nèi)容和 Web 前端模塊。WebView2 本身基于 Microsoft Edge 渲染引擎,是一個(gè)基于 Chromium 的 Hybrid App 開發(fā)平臺(tái),但又獨(dú)立于 Edge 瀏覽器,不需要用戶安裝 Edge 瀏覽器來運(yùn)行。Web 開發(fā)團(tuán)隊(duì)可以利用它做到一套 Web 代碼,跨不同平臺(tái)使用。
而 PWA 則能幫助前端開發(fā)工程師適配原生應(yīng)用,用戶能夠?qū)⒁延械?Web 應(yīng)用直接安裝成 native Apps,并支持離線訪問、service worker。與 WebView2 相比,各有不同的適用場(chǎng)景,PWA 使用場(chǎng)景更為廣泛。
“微軟的 Teams 會(huì)議應(yīng)用,在 Windows 平臺(tái)上面已經(jīng)開始用 WebView2 來代替 Electron,主要原因是平臺(tái)性能的支持和內(nèi)存使用優(yōu)化。WebView2 能讓 native object 和 Web 結(jié)合來使用例如 Video 直播流等原生高性能 C++ 模塊,適合 Teams 這種需要處理大量音頻與視頻內(nèi)容的并對(duì)時(shí)延要求很高的場(chǎng)景。Outlook、Office、Visual Studio 等都已經(jīng)逐漸使用 WebView2 場(chǎng)景來渲染它的 Web 模塊?!标愔緦幗榻B。
現(xiàn)如今,在 Web 跟 native 交互的應(yīng)用場(chǎng)景下,Web 跟 App 的邊界越來越模糊,移動(dòng)端、桌面端也慢慢有了整合的趨勢(shì)。對(duì)于 Hybrid App 開發(fā)來說,WebView2 平臺(tái)已經(jīng)成為 Windows 操作系統(tǒng)上面,已經(jīng)大量在使用渲染的模塊??缙脚_(tái)開發(fā)是一個(gè)非常顯著的趨勢(shì),WebView2 和 PWA 是很好的支持跨平臺(tái)快速創(chuàng)新和迭代的方式。Edge 瀏覽器作為一個(gè)底層技術(shù)支撐平臺(tái),在開發(fā)層面上抹平了各平臺(tái)之間的差異。
主流框架開始走向趨同,未來能否 Web 打天下?
可以看出,Web 開發(fā)發(fā)展到現(xiàn)在,不僅僅是開發(fā)一個(gè)“網(wǎng)站”那么簡(jiǎn)單,涉及的技術(shù)框架層出不窮,無論是 WebView2、Electron、PWA 還是 React,常常讓開發(fā)者在選擇時(shí)陷入困境。
設(shè)計(jì)框架如此繁榮的背后,也跟 Web 的發(fā)展有很大關(guān)系。
最開始的時(shí)候,Web1.0 時(shí)期,主要是提供單向的閱讀功能,對(duì)前端 JavaScript 語言本身不會(huì)有太高的要求。后來 AJAX 出現(xiàn)了,網(wǎng)站可以異步跟服務(wù)端去交互了,這也對(duì) JavaScript 提出了更高的要求。然而 JavaScript 最初是只花了 14 天設(shè)計(jì)出來的語言,在設(shè)計(jì)的時(shí)候做了局部的優(yōu)化,但是整體的優(yōu)化考慮不夠。于是語言本身也需要并且在不停的迭代,從 JavaScript 5 進(jìn)化到 JavaScript 6,ES6 到 ES7,再到微軟推的 TypeScript。
語言進(jìn)化也給框架的性能提出了越來越高的要求。最早的時(shí)候做任何的頁面可能就是幾百個(gè)元素,可能一兩屏,這時(shí)用 JQuery 就夠了。到后來頁面越來越復(fù)雜,有若干屏,還有各種跑馬燈、反轉(zhuǎn)等各種動(dòng)畫效果,同時(shí)有了更多需要跟用戶交互的地方,開發(fā)者就會(huì)發(fā)現(xiàn)自己的代碼越寫越慢,新的框架就應(yīng)運(yùn)而生了。像 React 剛開始推出的時(shí)候,最具有吸引力的就是虛擬 DOM 樹,用 diffing 的方式去修改 DOM,從而節(jié)省了非常多的渲染時(shí)間。這也就是說隨著 Web 的發(fā)展,開發(fā)者不斷地需要更得心應(yīng)手的框架語言來讓開發(fā)如虎添翼。
現(xiàn)在前端框架百花齊放、百家爭(zhēng)鳴,因?yàn)榇蠹叶伎梢赃M(jìn)來貢獻(xiàn),這也就是 Web 生態(tài)繁榮的原因?!八晕腋敢夥Q這個(gè)為幸福的繁榮。”邢璟夏表示。
但另一方面,不同的設(shè)計(jì)框架之間也開始越來越趨同了。很多主流框架之間已經(jīng)開始相互借鑒,相互學(xué)習(xí)。這也是一種必然趨勢(shì)。
過去一二十年,Web 的發(fā)展像過山車一樣,有著像陡、平緩、陡、平緩這樣的軌跡曲線,中間不斷的有新的場(chǎng)景爆發(fā),倒推著框架去做升級(jí)。比如在 AJAX 出來之前很長(zhǎng)一段時(shí)間,前端的發(fā)展都是比較平緩的。AJAX 技術(shù)出現(xiàn)后,大家發(fā)現(xiàn) Web 有了很多新的玩法。為了配合新的場(chǎng)景,這些框架勢(shì)必是要去做一個(gè)大的升級(jí)。但最近幾年,用戶場(chǎng)景本質(zhì)上沒有什么變化,更多的是在優(yōu)化框架的編程效率、開發(fā)效率、運(yùn)行效率。
因?yàn)闆]有新的用戶場(chǎng)景,大家會(huì)發(fā)現(xiàn)不同框架之間的優(yōu)化方法最后基本上都是類似的,目的都是在維護(hù)以及提供更好的用戶體驗(yàn)。這種情況下,很多新性能會(huì)相互之間借鑒。但用戶可見的性能還有很大的提升空間,所以在可見的未來,Web 開發(fā)還是會(huì)非常有生命力的。假設(shè)再加上 Web3.0 創(chuàng)造的可能性,未來五到十年的 Web 開發(fā)是非常值得看好的?!霸龠^十年回頭看,很有可能你的開發(fā)框架就換了,這一點(diǎn)都不讓人覺得意外”。
“再以后,前端開發(fā)是不是可以一個(gè) Web 打天下,其實(shí)這也是一個(gè)很有意思的話題。”
在 Web 開發(fā)中,主要使用的 JavaScript 語言,它的缺陷是作為一種類執(zhí)行語言是有性能天花板的?,F(xiàn)在,我們有了 WebAssembly,它解決的就是最根本的性能問題,并且目前 WebAssembly 也取得了一定的發(fā)展,打破了 JavaScript 語言的天花板。
另外 WebAssembly 也不局限于使用 JavaScript,開發(fā)者可以用 C++、Go、Rust 各種語言來編寫代碼,最后能轉(zhuǎn)變成 WebAssembly 在端上運(yùn)行即可。一旦 WebAssembly 能夠普及起來的話,很多之前在瀏覽器里不能做的事情,會(huì)通過這種技術(shù)在瀏覽器里實(shí)現(xiàn)得更加的絲滑,從而創(chuàng)造出更多的可能的業(yè)務(wù)形態(tài)。
寫在最后
從 1992 年在北京開設(shè)第一間辦公室起,微軟作為一家全球化技術(shù)企業(yè)開始扎根中國(guó),今年剛好是其落戶中國(guó)的第三十個(gè)年頭。
在全程見證并參與了中國(guó)信息產(chǎn)業(yè)發(fā)展壯大的同時(shí),微軟在中國(guó)的團(tuán)隊(duì)規(guī)模也不斷擴(kuò)大,給中國(guó)帶來了不少科技人才。當(dāng)代年輕人面臨職業(yè)選擇時(shí),微軟作為一家老牌技術(shù)企業(yè),有哪些值得稱道的地方?
對(duì)于這個(gè)問題,邢璟夏是這么回復(fù) InfoQ 的:“可以從兩個(gè)方面來看。第一個(gè)方面可以看商業(yè)模式,微軟的股價(jià)在過去 8、9 年里應(yīng)該是翻了有 10 倍,這一點(diǎn)的話其實(shí)在科技公司里頭,而且是已經(jīng)有了這么多年生命的科技公司來說其實(shí)是非常非常少的。微軟其實(shí)一直是在持續(xù)的創(chuàng)新、持續(xù)的改進(jìn),每一步可能讓人覺得步調(diào)不是很大,但每一步走得都非常結(jié)實(shí),而且時(shí)至今日,微軟在創(chuàng)新上還是有非常強(qiáng)大的生命力的,這點(diǎn)的話不管是通過云或別的技術(shù),其實(shí)是能夠看得見的。
第二個(gè)方面,微軟整個(gè)的文化非常強(qiáng)調(diào)新鮮東西的輸入,微軟里有很多同事非常的謙虛,他有可能在微軟工作了非常多年,但他的求知欲一直很強(qiáng),很愿意去學(xué)習(xí)。因?yàn)楸举|(zhì)上還是因?yàn)槲④浀某砷L(zhǎng)型思維文化,已經(jīng)從下到上貫穿到公司當(dāng)中,在言談舉止之間將成長(zhǎng)型思維融入到我們的工作當(dāng)中了。這種學(xué)習(xí)的方法、這種態(tài)度,對(duì)大家來說也都是能夠受益匪淺的?!?/p>
電子書推薦
本文選自《中國(guó)卓越技術(shù)團(tuán)隊(duì)訪談錄》(2022 年第二季),本期精選了微軟 Edge、螞蟻可信原生、明源云、文因互聯(lián)、Babylon.js 等技術(shù)團(tuán)隊(duì)在技術(shù)落地、團(tuán)隊(duì)建設(shè)方面的實(shí)踐經(jīng)驗(yàn)及心得體會(huì)。本期電子書已經(jīng)在 InfoQ 網(wǎng)站上線,大家可以掃描下圖二維碼下載,查看更多精彩內(nèi)容。
《中國(guó)卓越技術(shù)團(tuán)隊(duì)訪談錄》是 InfoQ 打造的重磅內(nèi)容產(chǎn)品,以各個(gè)國(guó)內(nèi)優(yōu)秀企業(yè)的 IT 技術(shù)團(tuán)隊(duì)為線索策劃系列采訪,希望向外界傳遞杰出技術(shù)團(tuán)隊(duì)的做事方法 / 技術(shù)實(shí)踐,讓開發(fā)者了解他們的知識(shí)積累、技術(shù)演進(jìn)、產(chǎn)品錘煉與團(tuán)隊(duì)文化等,并從中獲得有價(jià)值的見解。
訪談錄現(xiàn)開放長(zhǎng)期報(bào)名通道,如果你身處傳統(tǒng)企業(yè)經(jīng)歷了數(shù)字化轉(zhuǎn)型變革,或者正在互聯(lián)網(wǎng)公司進(jìn)行創(chuàng)新技術(shù)的研發(fā),并希望 InfoQ 可以關(guān)注和采訪你所在的技術(shù)團(tuán)隊(duì),可以添加微信:caifangfang842852,請(qǐng)注明來意及公司名稱。
