2018ï¼Œå¼€å§‹ä½ çš„PWAå¦ä¹ 之旅
PWAå¦ä¹ ç³»åˆ—æŠ€æœ¯æ–‡ç« æ±‡æ€»è‡³æ¤å¤„ --> 戳我,或者直接查看下�?�列表
- 第一篇:2018ï¼Œå¼€å§‹ä½ çš„PWAå¦ä¹ 之旅(本文)
- 第二篇:10分钟å¦ä¼šä½¿ç”¨Manifestï¼Œè®©ä½ çš„WebApp更“Native�?
- ç¬¬ä¸‰ç¯‡ï¼šä»Žä»Šå¤©å¼€å§‹ï¼Œè®©ä½ çš„WebApp离线�?�用
- 第四篇:TroubleShooting: 解决FireBase login验�?失败问题
- ç¬¬äº”ç¯‡ï¼šä¸Žä½ çš„ç”¨æˆ·ï¿½?�?�?�系: Web Push功能
- 第å…篇:How to Debug? 在chromeä¸è°ƒè¯•ä½ çš„PWA
- 第七篇:增强交互:使用Notification API�?�进行�??醒
- 第八篇:使用Service Worker进行�?��?�数�?��?�æ¥
- 第�?篇:PWA实践ä¸çš„问题与解决方案
- 第�??篇:Resource Hint - �??�?�页�?ï¿½åŠ è½½æ€§èƒ½ä¸Žä½“éªŒ
PWA作为今年最�?�çƒçš„æŠ€æœ¯æ¦‚念之一,对�??�?�Web应用的安全�?性能和体验有�?�很大的�?义,�?�常值得我们去了解与å¦ä¹ 。
首先简�?�了解一下PWA。
什么是PWA
PWA,�?�Progressive Web App, 是�??�?� Web App 的体验的一�?新方法,能给用户原生应用的体验。
我们需�?�?�解的是,PWA�?是�?一项技术,或者�?一个新的产物;而是一系列WebæŠ€æœ¯ä¸Žæ ‡å‡†çš„é›†ï¿½?ï¿½ä¸Žåº”ç”¨ã€‚é€šè¿‡åº”ç”¨è¿™äº›æ–°çš„æŠ€æœ¯ä¸Žæ ‡å‡†ï¼Œï¿½?�以从安全�?性能和体验三个方�?�,优化我们的Web App。所以,其实PWA本质上�?然是一个Web App。
å› æ¤ï¼Œå¦ä¹ PWA其实就是了解与掌�?�这些PWA背�?ï¿½çš„æŠ€æœ¯ã€‚æœ¬ç³»åˆ—æ–‡ç« ä¼šé’ˆå¯¹PWA䏿‰€æ¶‰ï¿½?�到的技术进行介�?,并�?�?�代�?实例�?�展示�?�类技术的使用方�?ã€‚å¸Œæœ›é€šè¿‡è¿™ä¸€ç³»åˆ—æ–‡ç« ï¼Œè®©å¤§å®¶å¯¹PWA技术有一个更深入的认识。而PWA本身�?进�?的�?想也�?�以让我们在业务ä¸â€œï¿½?进�?�?地使用这些技术,在�?本�?�控的�?�??下,�?æ–优化我们的产�?。
PWAä¸çš„一些技术
PWA本身其实是一个概念集�?�,它�?是指�?一项技术,而是通过一系列的Web技术与Webæ ‡å‡†ï¿½?�优化Web App的安全�?æ€§èƒ½å’Œä½“éªŒã€‚å…¶ä¸æ¶‰ï¿½?�到的一些技术概念包括了:
- Web App Manifest
- Service Worker
- Cache API 缓å˜
- Push&Notification 推�?与通知
- Background Sync �?��?��?�æ¥
- �?应�?设计
- ……
è¿™äº›æŠ€æœ¯éƒ½æ˜¯ä½ åœ¨å¦ä¹ PWAä¸ï¿½?�?�或缺的。而�?�?�apple在iOS Safariä¸ä¹Ÿå¼€å§‹æ”¯ï¿½?PWA(其ä¸çš„�?些技术),PWA的舞�?�更大了。
项目DEMO
为了�?�?�PWAä¸ç›¸å…³çŸ¥è¯†çš„å¦ä¹ ,我专门创建了一个demo Web App——
ä¸€ä¸ªæ ¹ï¿½?ï¿½å…³é”®å—æŸ¥è¯¢å›¾ä¹¦ä¿¡ï¿½?�的demo。
这个Web App最开始是�?具备任何PWAçš„èƒ½åŠ›ã€‚æˆ‘ä¼šåœ¨è¿™ä¸€ç³»åˆ—æ–‡ç« ä¸ä»¥è¿™ä¸ªdemo为例,�?述�?�项技术的�?�时,将其应用在demoä¸Šã€‚ä¹Ÿå°±æ˜¯è¯´ï¼Œåœ¨è¿™ä¸€ç³»åˆ—çš„æ–‡ç« ä¸ï¼Œæˆ‘会和大家一起将一个普通的网页应用�?æ¥ï¿½?�级为一个简�?�的PWA,通过这�?方�?一起å¦ä¹ 。
首先简�?�介�?一下这个demoã€‚è¿™æ˜¯ä¸€ä¸ªæ ¹ï¿½?�关键�?�?�索图书信�?�的应用,用户在�?端输入关键�?,点击�?�索,会请求我们自己的�?务器,而�?务器使用豆瓣图书API V2�?�获�?�数�?�。
项目使用KOA�?��?�建node�?务器,所以需�?node版本>7.6.0,�?�以使用nvm�?�切�?�到适�?�的node版本。
�?�?行该项目,首先
git clone git@github.com:alienzhou/learning-pwa.git
# 切�?�到基础项目分支
git checkout basic注�?,需�?切�?�到basic分支,master分支是上�?过PWA�?�级�?�最新的demo代�?。�?�有在basic分支�?能看到原始的Web App。接下�?�,安装�?赖:
npm install
最�?�,�?行项目:
npm run start
然�?�就�?�以在127.0.0.1:8085上访问到该项目。
基础demo的代�?比较简�?�,这里就�?去赘述demoä¸çš„代�?细节了。简�?�了解一下项目结构,�?端代�?éƒ½å˜æ”¾äºŽpublic目录ä¸ï¼Œå…·ä½“结构如下:
|---public---|---index.html // �?端页�?�
| |---index.js // browser的JavaScript脚本
| |---style.css // æ ·ï¿½?文件
| |---img // 图片文件夹
|---app.js // node�?务�?�动入�?�
|---util.js // node�?务工具库
值得一�??的是,�?ï¿½ç»æ–‡ç« 内的代�?会以分支的形�?å˜åœ¨ï¼Œï¿½?ç¯‡æ–‡ç« çš„æœ€ç»ˆä»£ï¿½?ä¼šå˜æ”¾äºŽä¸€ä¸ªå¯¹åº”的分支ä¸ã€‚ä½ ï¿½?�以通过方便得切�?�分支,�?�查看�?ç¯‡æ–‡ç« å¯¹åº”çš„ç¤ºä¾‹ä»£ï¿½?。
- basic分支:基础项目demo,一个普通的图书�?�索应用(网站);
- manifest分支:基于basicåˆ†æ”¯ï¼Œæ·»åŠ manifestç‰åŠŸèƒ½ï¼›
- sw-cache分支:基于manifeståˆ†æ”¯ï¼Œæ·»åŠ ç¼“å˜ä¸Žç¦»çº¿åŠŸèƒ½ï¼›
- master分支:应用的最新代�?。
- ……
写在最�?�
ä½œä¸ºæœ¬ç³»åˆ—çš„ç¬¬ä¸€ç¯‡æ–‡ç« ï¼Œæœ¬æ–‡ç®€ï¿½?�介�?了PWA与其相关的技术概念。通过å¦ä¹ PWA,我们�?�以很快将其ä¸çš„优秀技术应用到我们的工作里。在下一部分(manifest分支),我就会介�?如何使用manifest�?ï¿½è®©ä½ çš„Web App“更Native�?,拥有一个App Shell。
�?�?多说,下�?�就让我们�?�具体地å¦ä¹ PWA相关技术�?��?
