前端性能优化实践之 webpack 优化(5)

简介: 前端性能优化实践之 webpack 优化(5)

1、webpack 配置和优化 ?

  • 经典的 webpack 官网

网络异常,图片无法展示
|

  • 两种模式

网络异常,图片无法展示
|

1、重要部分  Tree-shaking 将没有用到的代码 摇晃过滤掉 生产模式 开启了 tree-shaking

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • babel 配置 相关
    网络异常,图片无法展示
    |

2、JS 压缩

网络异常,图片无法展示
|

3、作用域提升 基于es6import require这种语法 babel 配置不要转掉

网络异常,图片无法展示
|

4、babel 插件的按需引入

网络异常,图片无法展示
|

5、babel 辅助函数复用

网络异常,图片无法展示
|

网络异常,图片无法展示
|

2、webpack 依赖优化 ?

1、使用 noParse

网络异常,图片无法展示
|

网络异常,图片无法展示
|

2、使用 DllPlugin

网络异常,图片无法展示
|

  • 使用 方法 简单介绍
1、新建一个 配置文件 webpack.dll.config.js
  2、配置一下 
  3、package.json 中添加一个执行脚本 
  4、跑脚本 build 
  5、引用这部分内容 
  6、结果对比 
复制代码
  • webpack.dll.config.js
const webpack = require("webpack");
module.exports = {
    mode: "production",
    entry: {
        react: ["react", "react-dom"],
    },
    output: {
        filename: "[name].dll.js",
        path: path.resolve(__dirname, "dll"),
        library: "[name]"
    },
    plugins: [
        new webpack.DllPlugin({
            name: "[name]",
            path: path.resolve(__dirname, "dll/[name].manifest.json")
        })
    ]
};
复制代码
  • package.json 中添加脚本

网络异常,图片无法展示
|

  • 跑脚本 build

网络异常,图片无法展示
|

  • 引用这个内容

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 结果对比

使用前打包时间

网络异常,图片无法展示
|

使用后打包时间

网络异常,图片无法展示
|

  • 还有一个问题

网络异常,图片无法展示
|

3、基于 webpack 代码拆分 code splitting ?

  • 为什么要做这件事情 ? 有没有 意义 ?
    网络异常,图片无法展示
    |

  • 基础

网络异常,图片无法展示
|

  • 可以用在 项目中进阶的部分

网络异常,图片无法展示
|

  • 怎么实现呢 ? + 动态引入 组件
1、配置 webpack.config.js
  2、打包测试
  3、并且 配合组件动态引入 添加 loading 
  4、页面效果
复制代码
  • 配置后打包 可看到新增的部分

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 动态引入 例子

网络异常,图片无法展示
|

  • 动态引入 方法

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 页面效果
  • 非常 nice ~ app.bundle.js 已经非常小了

网络异常,图片无法展示
|

4、基于 webpack 资源压缩 ?

网络异常,图片无法展示
|

  • 检查一下项目 有没有做这几个 压缩
  • react 项目 集成了 webpack,那配置文件在那里 ?

网络异常,图片无法展示
|

  • 生产模式下 默认开启 terser 不需要手动 操作
  • css 压缩

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • html 压缩 使用到了模版的功能

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|

5、webpack 持久化 缓存怎么做  ?

网络异常,图片无法展示
|

  • 举个例子

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • hash 值的类型   和推荐使用什么 hash

网络异常,图片无法展示
|

  • 如果 和css 需要使用不一样的chunk 则 可在css 中配置 contenthash 内容不同则生成的 hash 值也不一样

网络异常,图片无法展示
|

6、基于 webpack 应用大小监测与分析  ?

网络异常,图片无法展示
|

1、 webpack-chart  alexkuz.github.io/webpack-cha…

1、项目中跑这个命令 webpack --profile --json > stats.json
    2、将项目生成的 stats.json 上传上来就可看
    3、
复制代码

网络异常,图片无法展示
|

  • 有个问题 需要说明一下

网络异常,图片无法展示
|

  • 解决的方式是 使用 npx

网络异常,图片无法展示
|

  • 就可生成 正确的 stats.json

网络异常,图片无法展示
|

2、webpack-bundle-analyzer 体积分析

1、package.json 配置一下 
2、config.js 使用 devtool
3、先 npm run build 然后 npm run analyze
复制代码

网络异常,图片无法展示
|

网络异常,图片无法展示
|

执行 命令后可以打开这样的网页内容

网络异常,图片无法展示
|

  • 可以详细看一下 每一块的内容

3、speed-measure-webpack-plugin 速度分析

1、config.js 配置一下
2、npm run build 
复制代码
  • config.js 配置

网络异常,图片无法展示
|

  • npm run build 之后的结果

网络异常,图片无法展示
|

  • nice~

7、react 按需加载实现方式   ?

  • 基于路由的按需加载,因为 可以使用 webpack 进行多个拆分,但每个部分都会有网络开销,到底是一个网络开销比较大,还是这些累计起来的开销大,存在粒度控制问题
    网络异常,图片无法展示
    |

网络异常,图片无法展示
|

  • 举个例子 说明这个事情
  • App.js 中引入 并新添加一个 About 组件,在 Home.jsx 使用

网络异常,图片无法展示
|

网络异常,图片无法展示
|

网络异常,图片无法展示
|



相关文章
|
20天前
|
前端开发 JavaScript 索引
前端性能优化:虚拟滚动技术原理与实战
前端性能优化:虚拟滚动技术原理与实战
211 80
|
25天前
|
缓存 监控 前端开发
前端性能优化:现代框架的关键策略
前端性能优化:现代框架的关键策略
136 74
|
1月前
|
缓存 前端开发 JavaScript
前端性能优化:打造流畅的用户体验
前端性能优化:打造流畅的用户体验
|
5月前
|
缓存 前端开发 UED
如何优化前端性能以提高加载速度
前端性能优化对提升网站加载速度至关重要,直接影响用户体验、SEO排名和转化率。本文介绍了优化前端加载速度的关键技巧,包括最小化HTTP请求、使用CDN、优化图片、利用浏览器缓存、压缩文件和实现懒加载。通过这些方法,可以显著减少页面加载时间,提高网站的整体性能和用户满意度。
|
2月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
136 3
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
6月前
|
前端开发 JavaScript 开发者
前端 CSS 优化:提升页面美学与性能
前端CSS优化旨在提升页面美学与性能。通过简化选择器(如避免复杂后代选择器、减少通用选择器使用)、合并样式表、合理组织媒体查询,可减少浏览器计算成本和HTTP请求。利用硬件加速和优化动画帧率,确保动画流畅。定期清理冗余代码并使用缩写属性,进一步精简代码。这些策略不仅加快页面加载和渲染速度,还提升了视觉效果,为用户带来更优质的浏览体验。
|
5月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
183 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
4月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
缓存 前端开发 JavaScript
Webpack 打包的基本原理
【10月更文挑战第5天】
|
9月前
|
前端开发 JavaScript
ES6模块化和webpack打包
【10月更文挑战第5天】