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

webpack生产环境优化:PWA

时间:2023-08-28 22:35:10浏览次数:34  
标签: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/eword/p/webpack202308273.html

相关文章

  • 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  感谢阅读,敬请斧正......
  • FX110: 花点时间寻找适合自己的交易风格,优化利润
    交易风格通常与交易者的个性相关。在选择交易策略和制定交易计划之前,对性格和生活方式进行内部反思非常重要 。这是因为使用与你的性格相反的交易风格会导致日后难以坚持你的交易计划。当交易者找到最适合他们的交易风格时,这种风格通常会持续很长时间。在交易中的表现取决于你如何......
  • 深入探讨Android启动优化策略
    在当今激烈竞争的移动应用市场,应用的启动速度直接影响着用户的第一印象和满意度。作为主流的移动操作系统之一,Android的启动优化是开发者必须关注的关键领域。本文将详细介绍一些强大有效的Android启动优化策略,帮助你优化应用的启动过程,为用户创造更出色的体验。冷启动与热启动在着......
  • 从原理聊 JVM(五):JVM 的编译过程和优化手段
    一、前端编译前端编译就是将Java源码文件编译成Class文件的过程,编译过程分为4步:1准备初始化插入式注解处理器(AnnotationProcessingTool)。2解析与填充符号表将源代码的字符流转变为标记(Token)集合,构造出抽象语法树(AST)。抽象语法树每个节点都代表着程序代码中的一个语法结......
  • 批量python爬虫采集性能优化之减少网络延迟的方法
    今天,我们将一起探讨批量爬虫采集的性能优化,特别关注减少网络延迟的方法。网络延迟是爬虫程序中一个常见的性能瓶颈,通过优化网络延迟,我们可以提高爬虫程序的采集速度和效率。让我们一起来看看如何实现这一目标。1.使用异步请求传统的同步请求方式会导致爬虫程序在等待服务器响应时浪......