隨著移動設備的普及,越來越多的人開始使用移動設備瀏覽網頁。為了提高使用者的體驗,許多網站已經實現了 PWA(漸進式 Web 應用程式)功能。
安裝 hexo-pwa 插件#
在 Hexo 博客中,我們可以使用 hexo-pwa 插件來實現 PWA 功能。首先,我們需要在命令行中輸入以下命令進行安裝:
npm install hexo-pwa --save
注意:這一步我的博客安裝之後會報錯,所以我最後卸載的,但是很多教程都有些到這一步。
安裝 hexo-service-worker 插件#
在終端輸入下面代碼:
npm install hexo-service-worker --save
配置 manifest.json 文件#
PWA 功能的核心是 manifest.json 文件。這個文件包含了應用程式的名稱、圖示、主題顏色等資訊,瀏覽器可以根據這些資訊來顯示應用程式的圖示,以及為其創建應用程式快捷方式。
在這個文件中,我們需要指定應用程式的各種資訊
我們可以在 Hexo 博客的根目錄中創建一個新的文件夾source/
,並在其中創建一個名為manifest.json
的文件。
同樣可以直接通過工具生成,推薦該網站:Need help building your headless eCommerce storefront?。
下面是一個示例(我的示例):
{
"theme_color": "#f69435",
"background_color": "#f69435",
"display": "fullscreen",
"scope": "/",
"start_url": "/",
"name": "\u957f\u8857\u77ed\u68a6",
"short_name": "\u957f\u8857\u77ed\u68a6",
"description": "\u6b64\u8def\u5c71\u9ad8\u8def\u8fdc\uff0c\u6211\u53ea\u5269\u53e3\u888b\u73ab\u7470\u4e00\u7bc7",
"icons": [
{
"src": "/img/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/img/icon-256x256.png",
"sizes": "256x256",
"type": "image/png"
},
{
"src": "/img/icon-384x384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "/img/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}
其中,name
指定了應用程式的名稱,short_name
指定了應用程式的短名稱,icons
指定了應用程式的圖示,start_url
指定了應用程式的首頁地址,theme_color
指定了應用程式的主題顏色,background_color
指定了應用程式的背景顏色,display
指定了應用程式的展示方式。
配置 sw.js 文件#
PWA 功能還需要使用 Service Worker(服務工作者)來實現離線緩存等功能。我們可以在 Hexo 博客的根目錄中創建一個新的文件夾source/sw.js
,並在其中創建一個名為sw.js
的文件。在這個文件中,我們需要編寫一些代碼來實現離線緩存等功能。下面是一個示例:
const cacheName = 'my-cache';
self.addEventListener('install', event => {
event.waitUntil(
caches.open(cacheName).then(cache => {
return cache.addAll([
'/',
'/index.html',
'/css/style.css',
'/js/script.js',
'/images/logo.png'
]);
})
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
})
);
});
其中,cacheName
指定了緩存的名稱,在install
事件中,我們可以將需要緩存的資源添加到緩存中;在fetch
事件中,我們可以從緩存中讀取資源,如果緩存中沒有需要的資源,則從網路上獲取。
部署博客並測試#
配置完成後,我們可以將博客部署到伺服器上,並測試 PWA 功能是否正常工作。首先,在命令行中輸入以下命令來生成靜態頁面:
# 清理緩存 / 生成靜態頁面 / 本地預覽
$ hexo clean && hexo g && hexo s