首页 > 其他分享 >webpack生产环境优化:PWA

webpack生产环境优化:PWA

时间:2023-08-28 22:58:17浏览次数:50  
标签:plugin serviceworker js webpack PWA workbox 优化

转载请注明 来源:http://www.eword.name/
Author:eword
Email:[email protected]

webpack生产环境优化:PWA

PWA可简称为“离线可访问技术”。

一、下载插件

PWA: 渐进式网络开发应用程序(离线可访问) ,需要插件workbox-webpack-plugin的支持。
workbox --〉 workbox-webpack-plugin
这里使用[email protected]

> npm i -D [email protected]

二、核心配置

2.1、配置webpack.config.js

/*
    webpack.config.js webpack的配置文件
    路径: ./webpack.config.js
*/
        ……
        
// 引入PWA支持插件workbox-webpack-plugin
const WorkboxWebpackPlugin = require('workbox-webpack-plugin');

module.exports = {
    
        ……
        
    // plugins的配置
    plugins: [
        // 详细的plugins配置

        ……

        // 离线可访问技术PWA
        new WorkboxWebpackPlugin.GenerateSW({
        /* 
            1.猪助serviceworker快速启动
            2.时除旧的 serviceworker
            
            生成一个 serviceworker 配罝文件~
        */
            clientsClaim: true,
            skipWaiting: true
        })
        
    ],
    
        ……
        
}

核心配置

/*
    webpack.config.js webpack的配置文件
    路径: ./webpack.config.js
    在plugins配置中加入workbox-webpack-plugin插件配置。
*/

        // 离线可访问技术PWA
        new WorkboxWebpackPlugin.GenerateSW({
        /* 
            1.猪助serviceworker快速启动
            2.时除旧的 serviceworker
            
            生成一个 serviceworker 配罝文件~
        */
            clientsClaim: true,
            skipWaiting: true
        })

2.2、package.json配置

eslint不认识 window. navigator全局变最
解决:需要修改package.json中eslintConfig配罝

  "eslintConfig": {
    "extends": "airbnb-base",
    "env": {
      "browser": true   //支持浏览器端全局变量
    }
  }

2.3、js入口文件注册serviceWorker

在js入口文件中注册打包生成的service-worker.js文件

// ./src/js/index.js

// 注册 serviceworker
// 处理兼容性问题
if ('serviceWorker' in  navigator) {
    window.addEventListener('load', () => {
        navigator.serviceWorker
            .register('/service-worker.js')
            .then(() => {
                console.log('serviceworker注册成功了~')
            })
            .catch(() => {
                console.log('serviceworker注册失败了~')
            })
    });
}

三、测试PWA

3.1、下载服务器支持库

serviceworker代码必须运行在服务器上。
为了方便测试,这里下载serve做为nodejs服务器。
这里使用[email protected]版本。

> npm i -g [email protected]

3.2、运行服务器

# 先打包构建生成service-worker.js文件
> npx webpack

# 启动服务器,将build目录下所有资源作为静态资源暴露出去
> serve -s build

   ┌────────────────────────────────────────────────────┐
   │                                                    │
   │   Serving!                                         │
   │                                                    │
   │   - Local:            http://localhost:54551       │
   │   - On Your Network:  http://172.10.10.107:54551   │
   │                                                    │
   │   This port was picked because 5000 is in use.     │
   │                                                    │
   │   Copied local address to clipboard!               │
   │                                                    │
   └────────────────────────────────────────────────────┘

3.3、浏览器访问

浏览器访问返回的web服务器地址:http://localhost:54551

四、工程文件目录

.
├── build     //构建打包生成的目录
│   ├── css
│   │   └── 42c0dc2a54.css
│   ├── imgs
│   │   └── ae7bf15c0d.jpg
│   ├── index.html
│   ├── js
│   │   ├── built.6c0be554d8.js
│   │   └── built.6c0be554d8.js.map
│   ├── media
│   │   └── cffec944b5.ttf
│   ├── service-worker.js       //index.js中要注册的service-worker.js文件
│   ├── service-worker.js.map
│   ├── workbox-bc1c2339.js
│   └── workbox-bc1c2339.js.map
├── src      //源代码目录
│   ├── css
│   │   ├── iconfont.css
│   │   ├── index.css
│   │   └── index.less
│   ├── imgs
│   │   ├── img.jpg
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── img3.jpg
│   ├── index.html
│   ├── js
│   │   ├── iconfont.js
│   │   ├── index.js        //添加:注册service-worker.js文件的js代码
│   │   └── test.js
│   └── media
│       ├── iconfont.json
│       └── iconfont.ttf
└── webpack.config.js       //添加 workbox-webpack-plugin插件配置

标签:plugin,serviceworker,js,webpack,PWA,workbox,优化
From: https://www.cnblogs.com/shylock/p/webpack202308273.html

相关文章

  • webpack生产环境优化:dll
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:dlldll动态链接库目的:单独的将多个指定的第三方库打包成一个chunk。意义:将不同的库分割开来,实现代码分割和避免重复打包,在节省打包时间的同时方便按需加载和预加载的实现......
  • webpack生产环境优化:tree shaking
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:treeshakingtreeshaking:去除无用代码前提:1.必须使用ES6模块化2.开启production环境1一、核心配置```js/*webpack.config.jswebpack的配置文件......
  • webpack生产环境优化:code split
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:codesplitcodesplit代码分割,既将打包后的js分割成多份js文件,方便后期实现“并行加载”、“按需加载”等,提高性能。一、核心配置建议使用方式二的单入口模式,并按需使用......
  • webpack生产环境优化:PWA
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:PWAPWA可简称为“离线可访问技术”。一、下载插件PWA:渐进式网络开发应用程序(离线可访问),需要插件workbox-webpack-plugin的支持。workbox--〉workbox-webpack-plugin......
  • webpack生产环境优化:多线程打包
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:多线程打包多线程打包主要用于需要打包的文件较多的情况下提高打包效率,缩短打包时间。注意:开启多进程打包时,进程开启大概需要600ms,进程通信也有开销。建议:只有工作消耗时间......
  • webpack生产环境优化:懒加载和预加载
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:懒加载和预加载一、直接加载浏览器一打开,直接加载了test.js这里使用了直接导入方式。直接导入:import{mul}from'./test';//./src/js/index.js//入口文件console.......
  • webpack生产环境优化:externals
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:externalsexternals配置主要是为了防止某些通过CDN引入的包被打包到输出的bundle中。一、核心配置/*webpack.config.jswebpack的配置文件路径:./webpack.config......
  • webpack生产环境优化:dll
    转载请注明来源:http://www.eword.name/Author:ewordEmail:[email protected]生产环境优化:dlldll动态链接库目的:单独的将多个指定的第三方库打包成一个chunk。意义:将不同的库分割开来,实现代码分割和避免重复打包,在节省打包时间的同时方便按需加载和预加载的实现......
  • 接口查询性能优化-缓存
    查询性能优化缓存种类mybatis一级缓存mybatis二级缓存本地缓存各个节点的数据不同步分布式缓存redis前端h5的缓存本地缓存session缓存mybatis一级缓存一个方法中对同一个sql,查询了多次当在这个方法上加@transactional后续的查......
  • UE4.27, Debug issues, "变量已被优化掉,因而不可用"
    调试时添加监控后,变量未被成功监控,显示"变量已被优化掉,因而不可用" 所使用的解决办法从解决方案配置的下拉菜单中选择DebugGameEditor  感谢阅读,敬请斧正......