做網(wǎng)站鏈接容易嗎百度手機(jī)瀏覽器下載
前言
大家上網(wǎng)應(yīng)該發(fā)現(xiàn)有的網(wǎng)頁(yè)說(shuō)可以安裝對(duì)應(yīng)應(yīng)用,結(jié)果這個(gè)應(yīng)用好像就是個(gè)web,不像是應(yīng)用,因?yàn)檫@里采用了PWA相關(guān)技術(shù)。
PWA,全稱(chēng)為漸進(jìn)式Web應(yīng)用(Progressive Web Apps),是一種可以提供類(lèi)似于原生應(yīng)用體驗(yàn)的網(wǎng)頁(yè)應(yīng)用。PWA可以在不安裝任何額外軟件的情況下,通過(guò)瀏覽器運(yùn)行在多種設(shè)備上,包括桌面、手機(jī)和平板。
參考來(lái)源
MDN Web Docs
MDN Web Docs (mozilla.org)
優(yōu)秀特點(diǎn)
用戶(hù)易于訪問(wèn):它們?cè)谠O(shè)備上有自己的圖標(biāo),使用戶(hù)容易找到和打開(kāi)它們
離線和后臺(tái)操作:它們能夠在用戶(hù)沒(méi)有與之交互和設(shè)備離線時(shí)運(yùn)行。這使得例如聊天應(yīng)用可以在沒(méi)有打開(kāi)時(shí)接收消息,并向用戶(hù)顯示通知。它還使得新聞應(yīng)用可以在后臺(tái)更新,以便即使設(shè)備離線也可以顯示新鮮的內(nèi)容
離線工作:通過(guò)服務(wù)工作線程(Service Workers)緩存應(yīng)用的外殼和數(shù)據(jù),可以實(shí)現(xiàn)離線或網(wǎng)絡(luò)不穩(wěn)定時(shí)的訪問(wèn)
類(lèi)似應(yīng)用體驗(yàn):通過(guò)應(yīng)用清單(App Manifest)和全屏等功能,PWA能夠提供類(lèi)似原生應(yīng)用的體驗(yàn)
安全:通過(guò)HTTPS提供服務(wù),確保應(yīng)用的安全性
可發(fā)現(xiàn)性:作為網(wǎng)頁(yè)應(yīng)用,PWA可以通過(guò)搜索引擎被發(fā)現(xiàn),這提高了其可見(jiàn)性
需要注意的是
從技術(shù)上講,它們?nèi)匀皇蔷W(wǎng)站
大致實(shí)施流程
編寫(xiě)Web應(yīng)用,然后通過(guò)實(shí)現(xiàn)Service Workers、添加Web App Manifest和采用響應(yīng)式設(shè)計(jì)等步驟,將其轉(zhuǎn)化為PWA。
關(guān)鍵技術(shù)
服務(wù)工作線程(Service Workers)
概念
服務(wù)工作線程是一種在瀏覽器背景下獨(dú)立于網(wǎng)頁(yè)運(yùn)行的腳本,它可以攔截和處理網(wǎng)絡(luò)請(qǐng)求,包括可編程的響應(yīng)緩存管理。它允許開(kāi)發(fā)者控制網(wǎng)頁(yè)或網(wǎng)站如何響應(yīng)資源請(qǐng)求,實(shí)現(xiàn)離線體驗(yàn)、消息推送和背景同步等功能。
實(shí)現(xiàn)原理
- 安裝與激活:服務(wù)工作線程的生命周期包括安裝和激活兩個(gè)階段。在安裝階段,通常會(huì)緩存應(yīng)用的靜態(tài)資源。激活階段通常用于更新資源和清理舊緩存。
- 請(qǐng)求攔截:當(dāng)瀏覽器請(qǐng)求一個(gè)資源時(shí),服務(wù)工作線程可以攔截這個(gè)請(qǐng)求,并決定如何響應(yīng)。它可以查詢(xún)緩存中是否有可用的資源副本,如果有,則直接從緩存返回,否則向服務(wù)器發(fā)起請(qǐng)求。
- 緩存管理:服務(wù)工作線程通過(guò) Cache API 管理資源的緩存,可以在安裝階段預(yù)緩存關(guān)鍵資源,也可以在運(yùn)行時(shí)動(dòng)態(tài)緩存其他資源。
應(yīng)用清單(Web App Manifest)
概念
Web App Manifest是一個(gè)JSON格式的文件,提供了有關(guān)網(wǎng)頁(yè)應(yīng)用的信息,如應(yīng)用名稱(chēng)、圖標(biāo)、啟動(dòng)畫(huà)面顏色和訪問(wèn)起始URL等。它使得網(wǎng)頁(yè)應(yīng)用可以被“安裝”到設(shè)備的主屏幕上,提供類(lèi)似原生應(yīng)用的啟動(dòng)體驗(yàn)。
實(shí)現(xiàn)原理
- 定義應(yīng)用信息:通過(guò)創(chuàng)建一個(gè)manifest.json文件,并在其中定義應(yīng)用的名稱(chēng)、圖標(biāo)、顏色和其他屬性,可以控制安裝到主屏幕的應(yīng)用的外觀和行為。
- 關(guān)聯(lián)到網(wǎng)頁(yè):在網(wǎng)頁(yè)的<head>部分通過(guò)<link rel="manifest" href="/path/to/manifest.json">標(biāo)簽引用該manifest.json文件,使瀏覽器識(shí)別該網(wǎng)頁(yè)應(yīng)用的安裝配置。
- 安裝提示:瀏覽器會(huì)根據(jù)manifest中的信息,自動(dòng)提示用戶(hù)將網(wǎng)頁(yè)應(yīng)用添加到主屏幕,或者開(kāi)發(fā)者可以使用Web API來(lái)自定義安裝流程。
應(yīng)用殼架構(gòu)(App Shell Architecture)
概念
應(yīng)用殼架構(gòu)是構(gòu)建PWA的一種方法,旨在提高應(yīng)用的加載性能和提供離線體驗(yàn)。它通過(guò)將應(yīng)用的核心UI結(jié)構(gòu)(即“殼”)與動(dòng)態(tài)內(nèi)容分離,實(shí)現(xiàn)快速加載和動(dòng)態(tài)數(shù)據(jù)填充。
實(shí)現(xiàn)原理
- 靜態(tài)殼緩存:在服務(wù)工作線程中緩存應(yīng)用的“殼”(基本HTML、CSS、JavaScript),確保即使在離線狀態(tài)下,應(yīng)用也能加載其基本UI。
- 動(dòng)態(tài)內(nèi)容加載:應(yīng)用啟動(dòng)后,通過(guò)JavaScript動(dòng)態(tài)地從網(wǎng)絡(luò)或緩存中獲取內(nèi)容數(shù)據(jù),并填充到應(yīng)用殼中。這樣可以確保用戶(hù)即使在網(wǎng)絡(luò)條件不佳的情況下也能快速獲得基本的應(yīng)用結(jié)構(gòu),然后再逐步加載內(nèi)容。