WebPack 渐进式网络应用程序
发布时间:2023-05-06 13:31:57 所属栏目:教程 来源:
导读:渐进式网络应用程序(Progressive Web Application - PWA),是一种可以提供类似于原生应用程序(native app)体验的网络应用程序(web app)。PWA 可以用来做很多事。其中最重要的是,在离线(offline)时应用程序能够继续运
渐进式网络应用程序(Progressive Web Application - PWA),是一种可以提供类似于原生应用程序(native app)体验的网络应用程序(web app)。PWA 可以用来做很多事。其中最重要的是,在离线(offline)时应用程序能够继续运行功能。这是通过使用名为 Service Workers 的网络技术来实现的。 如何为我们的应用程序添加离线体验。我们将使用名为 Workbox 的 Google 项目来实现此目的,该项目提供的工具可帮助我们更轻松地配置 web app 的离线支持。 现在我们并没有离线环境下运行过 到目前为止,我们一直是直接查看本地文件系统的输出结果。通常情况下,真正的用户是通过网络访问网络应用程序;用户的浏览器会与一个提供所需资源的服务器通讯。 那么让我们来使用一个简易服务器,搭建出我们所需的离线体验。我们将使用 http-server package 包:npm install http-server --save-dev。还要修改 package.json 的 scripts 部分,来添加一个 start 脚本: package.json { ... "scripts": { - "build": "webpack" + "build": "webpack", + "start": "http-server dist" }, ... } 添加 WorkBox 添加 workBox-webpack-plugin 插件,并调整 webpack.config.js 文件: npm install workBox-webpack-plugin --save-dev webpack.config.js const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin'); + const WorkBoxPlugin = require('workBox-webpack-plugin'); module.exports = { entry: { app: './src/index.js', print: './src/print.js' }, plugins: [ new CleanWebpackPlugin(['dist']), new HtmlWebpackPlugin({ - title: 'Output Management' + title: 'Progressive Web Application' - }) + }), + new WorkBoxPlugin.GenerateSW({ + // 这些选项帮助 ServiceWorkers 快速启用 + // 不允许遗留任何“旧的” ServiceWorkers + clientsClaim: true, + skipwaiting: true + }) ], output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist') } }; 有了 WorkBox,我们再看下执行 npm run build 时会发生什么: clean-webpack-plugin: /mnt/c/Source/webpack-follow-along/dist has been removed. Hash: 6588e31715d9be04be25 Version: webpack 3.10.0 Time: 782ms Asset Size Chunks Chunk Names app.bundle.js 545 kB 0, 1 [emitted] [big] app print.bundle.js 2.74 kB 1 [emitted] print index.html 254 bytes [emitted] precache-manifest.b5ca1c555e832d6fbf9462efd29d27eb.js 268 bytes [emitted] sw.js 1 kB [emitted] [0] ./src/print.js 87 bytes {0} {1} [built] [1] ./src/index.js 477 bytes {0} [built] [3] (webpack)/buildin/global.js 509 bytes {0} [built] [4] (webpack)/buildin/module.js 517 bytes {0} [built] + 1 hidden module Child html-webpack-plugin for "index.html": 1 asset [2] (webpack)/buildin/global.js 509 bytes {0} [built] [3] (webpack)/buildin/module.js 517 bytes {0} [built] + 2 hidden modules 现在你可以看到,生成了 2 个额外的文件:sw.js 和体积很大的 precache-manifest.b5ca1c555e832d6fbf9462efd29d27eb.js。sw.js 是 Service Worker 文件,precache-manifest.b5ca1c555e832d6fbf9462efd29d27eb.js 是 sw.js 引用的文件,所以它也可以运行。可能在你本地生成的文件会有所不同;但是你那里应该会有一个 sw.js 文件。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |