天天看點

微軟 Web 應用的發展過程

近日,微軟edge團隊發表了一篇博文,介紹web應用在微軟的發展過程。本文将擇要介紹web應用如何從一個“大型的文檔空間(a large universe of documents)”演化成了如今的通用應用程式平台。

在windows上,最早的web應用形态可能是ie9引入的“釘選網站(pinned sites)”。所謂的釘選網站是指站點可以固定到windows 7工作列,并且可以使用自定義的圖示。後來,該特性提供了一個類似清單檔案的東西,告訴平台該站點可以“像一個應用”那樣運作,并提供了如何內建到主螢幕/開始菜單的詳細資訊。而且,當w3c推出了相應的清單檔案标準時,他們欣然采用了新的标準。

web應用的真正出現是在windows 8上。有段時間,windows 8去掉了開始菜單,其初衷是為了讓web成為windows上的一等公民,讓web真正可以在浏覽器之外運作,而且不需要原生代碼。從技術上講,浏覽器程序甚至都沒有參與web應用在windows上的運作,減少了記憶體/cpu的工作負載,每個web應用都有自己的緩存。web應用完全整合進了windows的應用模型,讓使用者可以管理通知,離線或在背景運作應用,甚至像原生應用那樣解除安裝它們。開發人員可以更深入地內建平台,使用一些web平台原本不具備的原生功能。微軟建立了類似chrome.* namespace的windows runtime js apis。自此,winrt孕育了pointer events、web notifications、push api、web payments等api,使web應用可以更快地用上原生功能。

為了将web應用打包,建立離線優先的使用者體驗,讓其直接與原生應用進行競争,windows 10提供了“托管web應用(hwa)”。它提供了一個簡單的清單檔案,指向web應用的url。hwa應用可以像打包的應用那樣獨立于浏覽器運作,但實時從伺服器加載,讓使用者可以免于冗長的應用商店送出過程。

progressive web app(pwa)是hwa的一個自然擴充。本質上,pwa是hwa加上如下已經在開發的标準:

fetch(以預覽建構版形式提供)

service worker(開發中)

cache api(開發中)

push api(開發中)

在許多方面,現有的pwa實作(android上的chrome/opera/samsung)仍然把web應用作為二等公民。它們有主螢幕快捷方式,但不會出現在應用清單中,也不會報告存儲/資料/電池的使用情況,無法配置、管理、解除安裝等。微軟的目标更進一步,他們希望解決這些問題,提供全功能的應用。

目前,正在進行的工作有以下兩項:

實作上述标準;

在windows應用商店中建構對w3c web應用清單的支援。

第一項工作讓pwa可以通過chrome/opera運作在android平台上,或者通過edgehtml運作在windows平台上。第二項工作讓pwa可以出現在應用商店的清單中,并在浏覽器頁簽之外運作。如何在應用商店中列出pwa,使用者如何在windows上安裝pwa,這是微軟正在努力解決的兩個實際問題。感興趣的讀者可以關注edge開發的官方twitter。

繼續閱讀