1 代码_给你代码:Workbox介绍(1)
Workbox是一组库和Node模块,可轻松缓存资产并充分利用用于构建Progressive Web Apps的功能。
1.安装
1.直接cdn引入
importScripts ('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js' );//谷歌文档
从cdn引入workbox就可以使用workbox。
2.通过npm安装
import {precaching} from 'workbox-precaching';import {registerRoute} from 'workbox-routing';import {BackgroundSyncPlugin} from 'workbox-background-sync';
可以借助打包工具webpack或者rollup
2.预缓存文件
网址项目里很多资源是可以长期储存的,比如像字体,样式等。
import {precacheAndRoute} from 'workbox-precaching';precacheAndRoute([ {url: '/index.html', revision: '383676' }, {url: '/styles/app.0c9a31.css', revision: null}, {url: '/scripts/app.0d5770.js', revision: null},]);
如果手动去配置这些东西是很繁琐的,版本很难管理,而且需要一个个去填写。
workbox支持利用cli构建它。
npm install workbox-cli -gworbox wizard 可以生成配置文件workbox generateSW workbox-config.js 可以配置文件生成对于的js文件执行完命令可以看到已经自动生成了代码,当有静态文件需要变化的时候再运行一次更新代码就可以了。也可以使用 --injectManifest 在已有的sw里插入代码import {precacheAndRoute} from 'workbox-precaching';precacheAndRoute(self.__WB_MANIFEST);上述代码会被替换掉
或者直接用gulp/node去构建
npm install workbox-build --save-dev 安装//等到内容插入 src/sw.jsimport {precacheAndRoute} from 'workbox-precaching';precacheAndRoute(self.__WB_MANIFEST);//config.jsconst workboxBuild = require('workbox-build');//在bulid后面生成const buildSW = () => { //返回一个promise return workboxBuild.injectManifest({ swSrc: 'src/sw.js', swDest: 'build/sw.js', globDirectory: 'build', globPatterns: [ '**/*.{js,css,html,png}', ] }).then(({count, size, warnings}) => { //打印错误 warnings.forEach(console.warn); console.log(`${count} files will be precached, totaling ${size} bytes.`); });}buildSW();
3.workbox配置
使用各种Workbox API时,您会注意到一些缓存是自动创建的。
每个缓存名称由三部分信息组成:--
我们可以设置缓存的名字
import {setCacheNameDetails} from 'workbox-core';setCacheNameDetails({ prefix: 'my-app', suffix: 'v1'});//根据策略的缓存可以自定义名称import {registerRoute} from 'workbox-routing';import {CacheFirst} from 'workbox-strategies';registerRoute( *** new CacheFirst({ cacheName: '***', }));
debuig
//当通过workbox-sw引入workbox(全局变量)//开发环境workbox.setConfig({ debug: true });// 生产环境workbox.setConfig({ debug: false });//默认 本地测试localhost debug是开启的 而在https下 是自动关闭的//另外用node构建的话 debug是跟着node变化的//webpackconst webpack = require("webpack");module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production'), }), ],//rollupimport replace from 'rollup-plugin-replace';export default { plugins: [ replace({ 'process.env.NODE_ENV': JSON.stringify('production'), }), ], }
往期回顾:
给你代码:关于npm的坑
扩展的上传与更新|给你代码
你是否像我一样排斥Composer?|给你代码
1 代码_给你代码:Workbox介绍(1)相关推荐
- c++hello world代码_在 Rust 代码中编写 Python 是种怎样的体验?
作者 | Mara Bos,Rust资深工程师译者 | Arvin 责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews) 以下为译文: 大约一年前,我发布了一 ...
- c++hello world代码_在Rust代码中编写Python是种怎样的体验?
作者 | Mara Bos,Rust资深工程师译者 | Arvin,编辑 | 屠敏来源 | CSDN(ID:CSDNnews)大约一年前,我发布了一个名为inline-python(https://c ...
- 手游方舟怎么输入代码_方舟自定义代码怎么输入 | 手游网游页游攻略大全
发布时间:2016-02-16 我的世界手机版代码输入方法 代码怎么用.我的世界手机版代码怎么输入?我的世界手机版代码怎么用?很多玩家对此不是很清楚,下面小编为大家介绍一下我的世界手机版代码怎么用,希 ...
- 读代码读的什么代码_您的代码应读得像书
读代码读的什么代码 There's a pandemic among programmers. Long functions, broad and nondescriptive names for f ...
- java计分系统编程代码_使用Java代码对实时系统进行编程
由于许多重要原因,Java语言在实时系统中的使用并不广泛. 这些包括Java语言设计固有的不确定性性能影响,例如动态类加载,以及Java Runtime Environment(JRE)本身,例如垃圾 ...
- 回滚master代码_[转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)...
两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 情况二 代码已经push到运程仓库,想把代码还原到上一次提交,此 ...
- 收藏本站html,加入收藏代码_加入收藏代码 -收藏本站的代码
摘要 腾兴网为您分享:加入收藏代码 -收藏本站的代码,追书神器,智慧医疗,云端学习,央视影音等软件知识,以及workflow,电脑管家2017,自动考勤表,双录系统,国泰君安富易,佳缘佳信,谷歌浏览器 ...
- 同步代码和异步代码_告别异步代码
同步代码和异步代码 Quasar是一个将真正的轻量级线程(纤维)添加到JVM的库. 它们非常便宜且非常快-实际上,光纤的行为就像Erlang进程或Go goroutines-并允许您编写简单的阻塞代码 ...
- python灰色模型代码_几行代码搞定ML模型,低代码机器学习Python库正式开源
机器之心报道 机器之心编辑部 PyCaret 库支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型,提升机器学习实验的效率. 想提高机器学习实验的效率,把更多精力放在解决业务问题而不是写代 ...
- python低代码_几行代码搞定ML模型,低代码机器学习Python库正式开源
PyCaret 库支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型,提升机器学习实验的效率. 想提高机器学习实验的效率,把更多精力放在解决业务问题而不是写代码上?低代码平台或许是个不错的 ...
最新文章
- jupyter 写入csv pandas_Pandas 最详细教程在这里
- 不讲码德!坏味道偷袭我这个老码农
- Selenium2(WebDriver)开发环境搭建(java版)
- Python的oop概述
- erlang精要(2)-数制
- matlab仿真图片png,Simulink仿真入门到精通(六) Simulink模型保存为图片
- vsftpd给root设置访问权限
- LeetCode 1601. 最多可达成的换楼请求数目(回溯+剪枝)
- C++数据的一些注意事项
- zuul 自定义策略_如何为您的社区定义指标策略
- 安卓学习笔记37:利用OpenGL ES绘制平面图形
- U盘被写保护的解决办法
- MVVM MVC MVP
- Open3d之对点云进行DBSCAN 聚类
- respberry pi VNC 连接设置
- HTML - 'MARQUEE'
- [JNI] 开发基础(7)结构体
- java输出日志_Java日志打印方法
- python- 机器人抓取谷歌地图数据
- 【Unity】 HTFramework框架(十)Resource资源管理器
热门文章
- 西湖大学鞠峰组招聘“污水处理”与“微生物组”方向博士后与科研助理
- 科学通报:合成微生物群落的构建与应用
- R最快且比dplyr最高效的大数据处理R包:tidyfst
- pandas使用sort_values函数将dataframe按照指定数据列的内容对dataframe的数据行进行排序(sort dataframe rows by a specific column
- Seaborn使用violinplot函数可视化多分组小提琴图(violin plot)、每个小提琴图内部包含两个分组、使用inner函数设置在小提琴图中使用虚线显示分位数位置
- R语言使用str_locate函数和str_locate_all函数来定位特定字符串或者字符串模式在字符串中的位置:str_locate函数第一个位置、str_locate_all函数定位所有位置
- R语言可视化包ggplot2改变图例(legend)标签实战
- ModuleNotFoundError: No module named ‘cx_Oracle‘
- python使用imbalanced-learn的EditedNearestNeighbours方法进行下采样处理数据不平衡问题
- 可视化LassoCV的最佳alpha值