決定為哪個平臺構建應用一直是個挑戰。開發人員應該把時間和金錢花在原生實現上,還是完全專注于Web,或者是某種組合?新增加的Angular移動工具集(AMT)使用新的Web平臺API讓Web應用有了更多原生的感覺,希望可以為做這種決定的人減輕一點壓力。
在ng-conf 2016大會上,Jeff Cross和Alex Rickabaugh花時間介紹了AMT以及它如何幫助開發人員讓Web應用的行為更像原生應用。Cross做了總結:
“Progressive Web Apps”是以一些已經在某些Web瀏覽器中實現了的新興Web標準為基礎的最佳實踐和技術。對于一些普通的Web應用,你使用新的平臺API添加新的功能,讓它們更加強大。它們可以在任何平臺上工作,但最好是工作在它們可以更多地利用新的技術和API的平臺上。
這些技術的主要目標是讓應用可以立即加載、離線工作、可安裝,并提供通知功能。通常,原生應用默認就具備這些特性,但在Web上實現這些特性并不容易。在這四個特性中,Cross和Rickabaugh重點介紹了前三個以及對應每一個特性的技術:
App Shell(立即加載) Service Worker(離線) Web App Manifest(可安裝)Cross說,App Shell是指“包含動態內容的靜態UI,通常由一個工具欄和某種導航……供所有應用程序視圖使用的東西。”在離線編譯過程中,AMT部分地依賴Angular Universal生成靜態內容。
原生應用的其中一個好處是,一旦安裝,即使沒有網絡,也總是可以保證最低限度的使用。AMT依賴Service Worker在后臺下載應用代碼,因此,應用可以脫機工作。一個意外的結果是,在后續加載時,應用的啟動速度更快,因為它已經有了代碼,省去了網絡和下載調用。
使用App Shell和Service Worker可以將首次同示例應用交互的時間從2356毫秒減少到128毫秒。
最后,Rickabaugh說,Web App Manifest是“一個標準,允許你指定應用程序的元數據。”其用途是允許將Web應用“安裝”在設備上。運行這些應用中的任何一個,其外觀和感覺都跟原生應用一樣,因為瀏覽器邊框可以隱藏。
最大的問題是有關progressive web apps的這三項技術中有兩項在Safari或Edge瀏覽器中無效。
App Shell之所以有效是因為它在應用加載前會渲染成HTML傳給客戶端。Service Worker是一項尚處于發展中的Web平臺開發技術,隨著時間推移,會有更多的瀏覽器支持。Web App Manifest只在Android上有效。iOS目前有自己的方式讓應用出現在用戶的主界面上,而不需要瀏覽器邊框。
感興趣的讀者可以在YouTube上觀看完整視頻。
查看英文原文:Angular Mobile Toolkit Tries to Make Web Apps Feel Native