博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PWA实践
阅读量:5745 次
发布时间:2019-06-18

本文共 3128 字,大约阅读时间需要 10 分钟。

hot3.png

现在开始从头部署一个PWA项目

Step1 新建一个项目文件

项目目录如下图: template

其中manifest.json如下所示:

{  "name": "Weather",  "short_name": "Weather",  "icons": [{    "src": "images/icons/icon-128x128.png",      "sizes": "128x128",      "type": "image/png"    }, {      "src": "images/icons/icon-144x144.png",      "sizes": "144x144",      "type": "image/png"    }, {      "src": "images/icons/icon-152x152.png",      "sizes": "152x152",      "type": "image/png"    }, {      "src": "images/icons/icon-192x192.png",      "sizes": "192x192",      "type": "image/png"    }, {      "src": "images/icons/icon-256x256.png",      "sizes": "256x256",      "type": "image/png"    }],  "start_url": "/index.html",  "display": "standalone",  "background_color": "#3E4EB8",  "theme_color": "#2F3BA2"}

然后根目录下面的service-worker.js文件内容如下:

/** * author:SunShinewyf * date:2017-4-20 * desc:some setting of worker **/var dataCacheName = 'ppData-v1';var cacheName = 'ppPWA-final-1';var filesToCache = [    '/',    '/index.html',    'styles/index.css'];self.addEventListener('install',function(e){    console.log('[pp serviceWorker install');    e.waitUntil(        caches.open(cacheName).then(function(cache){            console.log('serviceWorker Caching app shell');            return cache.addAll(filesToCache);        })    );});self.addEventListener('activate', function(e) {    console.log('[ServiceWorker] Activate');    e.waitUntil(        caches.keys().then(function(keyList) {            return Promise.all(keyList.map(function(key) {                if (key !== cacheName && key !== dataCacheName) {                    console.log('[ServiceWorker] Removing old cache', key);                    return caches.delete(key);                }            }));        })    );    return self.clients.claim();});self.addEventListener('fetch', function(e) {    console.log('[Service Worker] Fetch', e.request.url);    var dataUrl = 'https://query.yahooapis.com/v1/public/yql';    if (e.request.url.indexOf(dataUrl) > -1) {        e.respondWith(            caches.open(dataCacheName).then(function(cache) {                return fetch(e.request).then(function(response){                    cache.put(e.request.url, response.clone());                    return response;                });            })        );    } else {        e.respondWith(            caches.match(e.request).then(function(response) {                return response || fetch(e.request);            })        );    }});

至于app.jsindex.html则根据你具体的项目而定,你可以根据自己的项目填充一些东西

在本地运行

添加web server for Chrome 点击 添加后会跳转到这个页面:

template

点击choose folder,然后选中上面新建的index.html,然后打开下面的http://127.0.0.1:8887就可以访问了

部署

部署到firebase

  • 进入
  • 创建一个Firebase账户
  • 添加一个项目

template

  • 通过 npm 安装 Firebasenpm install -g firebase-tools
  • 进入到你上面建的目录下面,执行firebase login,会看到下面的页面:

template

这时浏览器会自动跳转到下面这个页面

template

点击'允许'之后就会弹出一个页面

template

这里是public目录里面初始的index.html页面,这里需要将这个页面更改为你自己的项目文件

  • 执行firebase init 这时会跳出一些选项,你可以针对自己的实际情况进行选择。这里不多说

  • 执行firebase deploy 当看到控制台出现下面这样的时候:

template

就说明已经部署成功了

  • 在收集浏览器打开上面最后图片最后一行的网址,如下图所示:

template

  • 点击上图中右上角的三个小点的图标,然后选择 '添加到主屏幕'
  • 回到手机桌面,就可以看到有相应的图标出来了,离线打开该应用,看是否正常加载页面
  • 用 跑一下,按照提示改进一下
  • 对比一下谷歌的 ,按照提示改进改进;

至此,大功告成。 不过这个demo比较简单,也没有配置数据库,仅当入门教程使用

转载于:https://my.oschina.net/sunshinewyf/blog/887853

你可能感兴趣的文章
PostgreSQL控制台以竖行显示
查看>>
Docker 中如何连接多个 Container 协同工作 【已翻译100%】
查看>>
PHP 2016 中英手册,0511 在线版
查看>>
《低功耗蓝牙开发权威指南》——2.6节凡事皆有状态
查看>>
《IPv6精髓(第2版)》——6.2 IPv6协议中的QoS
查看>>
《产品设计与开发(原书第5版)》——3.9 步骤6:对结果和过程进行反思
查看>>
Java中NIO和IO的比较
查看>>
48% 的用户不知道物联网设备带来的安全威胁
查看>>
Office for Windows 10
查看>>
《ANSYS Workbench 14有限元分析自学手册》——2.3 绘制草图
查看>>
NeoLua —— 基于 .NET 动态运行时的 Lua 实现
查看>>
《锋利的SQL(第2版)》导读
查看>>
HttpClient/HttpURLConnection + HttpDns最佳实践
查看>>
回溯-POJ2676-Sudoku
查看>>
MD5验证小工具配合CENTOS 6.3
查看>>
搭建Dynamic Web Project(动态web项目)的springmvc工程2
查看>>
Linux下LCD 10分钟自动关屏的问题总结
查看>>
UML之构件图
查看>>
EF Code-First CRUD操作
查看>>
DOCKER简明教程 : 通过容器连接REDIS数据库
查看>>