如何将 React 专案转换为 PWA
· 5 分钟阅读
什么是 PWA
全名:Progressive Web Apps,中文翻成「渐进式网路应用程式」,不过讲中文可能没有人听的懂
简单说这是 google 制定的一个标准,可能让你的 web 专案,看起来像是一个手机 App,它有两个核心
Manifest
一些看起来很像 Android 的 AndroidManifest.xml 的设定,让 web 专案可以提供捷径,从手机或电脑直接读取,就是一些伪装成 App 的 UI
Service Worker
设定一些像 cache、离线还能读取、监听一些 event 然后可以自行设定或手动写要做什么事情
这篇文章不打算详细的说明 PWA
这里不打算详细的说明 PWA,毕竟有点复杂,不是一篇文章就能讲清楚的,这篇文章的目的是说明如何快速的在 React 专案导入 PWA
新专案
Mainfest
建置 React 专案应该主要的都是用 create-react-app 这个工具,不再多说明,我们先下个指令,建立一个新专案
npx create-react-app test-react-pwa
然后启动专案
cd test-react-pwa
npm run start
Chrome DevTools 测试
按「F12」叫出 Chrome DevTools,点选「Application」⇒ 「Manifest」,已经有资料了
点选「Service Workers」,可以看出是空的没有设定
程式码
看一下程式码,在 index.html 中有这一行,指向 manifest.json 这个档案
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
manifest.json 也已经先写好了预设值
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
},
{
"src": "logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "logo512.png",
"type": "image/png",
"sizes": "512x512"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}
甚至 index.html 还已经针对 IOS 写好设定
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />