reactjs - 使用 create-react-app 添加更多 service-worker 功能

标签 reactjs indexeddb service-worker create-react-app progressive-web-apps

因此 create-react-app 包含服务 worker 功能 by default ,这很可爱 - 我的所有静态资源都被缓存以供离线使用,开箱即用。很酷,但现在我想更进一步,使用 indexedDB 来缓存一些动态内容。

问题是,没有 service-worker.js 文件需要修改。它是在构建过程中生成的。

有没有办法添加额外的逻辑而不弹出 create-react-app 或重做所有好的静态缓存内容?

最佳答案

正如您所观察到的,create-react-app 的配置已被锁定,并且服务工作线程逻辑完全在配置中定义。

如果您不想eject,但想要进行一些自定义,另一种选择是修改create-react-app构建过程以显式调用 sw-precache CLI 正常构建完成后,覆盖 create-react-app 生成的 service-worker.js默认情况下。由于这涉及修改本地 package.json,因此不需要先eject

有一些关于这种方法的信息 here ,总体思路是修改您的 npm 脚本,使其看起来像:

"build": "react-scripts build && sw-precache --config=sw-precache-config.js"

使用sw-precache-config.js configured根据您的需求,但包括

swFilePath: './build/service-worker.js'

确保内置的 service-worker.js 被覆盖。

关于reactjs - 使用 create-react-app 添加更多 service-worker 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47636757/

相关文章:

javascript - Redux 中的排队操作

javascript - webpack/babel/react - 意外的 token 错误

javascript - 如何使用 JayData 为 indexedDB 中的表创建索引

jquery - 在indexedDB中打开多个数据库连接是否不好?

javascript - 离线页面的渲染无法在实时服务器上运行

javascript - 如何给 map 添加onClick `leaflet`

javascript - indexedDb 打开 onsuccess 且没有 onupgradeneed 事件

Angular Service Worker 启动太晚

javascript - "DOMException: Entry was not found"将大量响应放入缓存存储时

javascript - 如何在 React/Backbone 环境中删除 JSPlumb-Element?