前端性能优化实践之 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 使用

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

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

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



相关文章
|
7天前
|
前端开发 开发者
在前端开发中,webpack 作为一个强大的模块打包工具,为我们提供了丰富的功能和扩展性
【9月更文挑战第1天】在前端开发中,Webpack 作为强大的模块打包工具,提供了丰富的功能和扩展性。本文重点介绍 DefinePlugin 插件,详细探讨其原理、功能及实际应用。DefinePlugin 可在编译过程中动态定义全局变量,适用于环境变量配置、动态加载资源、接口地址配置等场景,有助于提升代码质量和开发效率。通过具体配置示例和注意事项,帮助开发者更好地利用此插件优化项目。
32 13
|
7天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
18 1
|
17小时前
|
前端开发 JavaScript API
前端性能优化-控制并发
【9月更文挑战第7天】前端性能优化-控制并发
8 0
|
7天前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
20 0
|
7天前
|
前端开发 JavaScript 开发者
JSF与WebSockets,打造实时通信魔法!让你的Web应用秒变聊天室,用户体验飞升!
【8月更文挑战第31天】在现代Web应用开发中,实时通信对于提升用户体验至关重要。本文探讨了如何在主要面向Web应用开发的JSF(JavaServer Faces)框架中引入WebSockets支持,以实现客户端与服务器之间的全双工通信。通过具体示例展示了在JSF应用中实现WebSockets的基本步骤:添加依赖、创建服务器端点以及在前端页面中嵌入JavaScript客户端代码。尽管这一过程中可能会遇到一些挑战,如复杂代码编写和额外配置需求,但借助AWS等云服务平台,开发者仍能高效地完成部署和管理工作,从而增强Web应用的实时通信能力。
|
7天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
26 0
|
7天前
|
前端开发 JavaScript 开发者
Angular与Webpack协同优化:打造生产级别的打包配置——详解从基础设置到高级代码拆分和插件使用
【8月更文挑战第31天】在现代前端开发中,优化应用性能和加载时间至关重要,尤其是对于使用Angular框架的项目。本文通过代码示例详细展示了如何配置Webpack,以实现生产级别的打包优化。从基础配置到生产环境设置、代码拆分,再到使用加载器与插件,每个步骤都旨在提升应用效率,确保快速加载和稳定运行。通过这些配置,开发者能更好地控制资源打包,充分发挥Webpack的强大功能。
19 0
|
7天前
|
前端开发 UED 开发者
React组件优化全攻略:深度解析让你的前端应用飞速运行的秘诀——从PureComponent到React.memo的彻底性能比较
【8月更文挑战第31天】在构建现代Web应用时,性能是提升用户体验的关键因素。React作为主流前端库,其组件优化尤为重要。本文深入探讨了React组件优化策略,包括使用`PureComponent`、`React.memo`及避免不必要的渲染等方法,帮助开发者显著提升应用性能。通过实践案例对比优化前后效果,不仅提高了页面渲染速度,还增强了用户体验。优化React组件是每个开发者必须关注的重点。
15 0
|
7天前
|
前端开发 JavaScript 大数据
React与Web Workers:开启前端多线程时代的钥匙——深入探索计算密集型任务的优化策略与最佳实践
【8月更文挑战第31天】随着Web应用复杂性的提升,单线程JavaScript已难以胜任高计算量任务。Web Workers通过多线程编程解决了这一问题,使耗时任务独立运行而不阻塞主线程。结合React的组件化与虚拟DOM优势,可将大数据处理等任务交由Web Workers完成,确保UI流畅。最佳实践包括定义清晰接口、加强错误处理及合理评估任务特性。这一结合不仅提升了用户体验,更为前端开发带来多线程时代的全新可能。
11 0
|
8天前
|
JavaScript 前端开发 API
解锁前端开发新境界:Vue.js携手Webpack,打造高效构建流程,你的项目值得拥有!
【8月更文挑战第30天】随着前端技术的发展,模块化与组件化趋势愈发显著。Vue.js 以其简洁的 API 和灵活的组件系统,深受开发者喜爱;Webpack 则凭借强大的模块打包能力成为前端工程化的基石。两者结合,不仅简化了组件编写与引用,还通过模块热替换、代码分割等功能大幅提升开发效率。本文将通过具体示例,展示如何利用 Vue.js 和 Webpack 构建高效、有序的前端开发环境。从安装配置到实际应用,逐步解析这一组合的优势所在。
27 0
下一篇
DDNS