webpack优化项目总结

本文介绍如何使用webpack优化前端项目,通过提取不变文件、多进程编译、缓存文件压缩等手段,显著提升打包速度,同时通过分离chunk、模块懒加载等方式改善用户体验。

简述webpack

webpack是用来做什么的?

本质上,webpack是一个现代化javascript应用程序的静态模块打包器(module bundler),是一种实现前端模块化的构建工具, 在前端模块化进程上有着重要的地位

webpack是怎么工作的?

当webpack处理应用程序时,它会递归地构建一个依赖关系图(dependency graph), 其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。

webpack的核心概念是什么?

  • 入口(entry)

  • 输出(output)

  • loader

  • 插件(plugins)

下一步

熟悉了这些概念之我们将使用webpack从两个方面来优化我们的项目;因为细节内容太多,这里暂时不会对某个plugins或loader进行深入讲解

项目背景

  1. 使用vue-cli1搭建, 使用了element-ui作为UI控件的后台管理平台
  2. 在没有更改vue-cli构建配置之前,npm run start启动时间为 65s - 90s, npm run build时间为120s~140s
  3. 使用webpack4进行优化, 优化之后npm run start40~50s,npm run build40s-50s,

优化打包速度

主要思路是提取不变文件,减少打包源文件总体体积

  1. 关闭开发工具(source-map严重影响js打包体积大小, 还会造成项目源文件暴露)

    devtool: false,
    
  2. 提取不变文件

    • extenals // 不变文件cdn 打包,如jquery, react, vue等等 (优先使用,cdn文件需要进行锁版本)

    • dllplugins // 提取不变库,减少打包文件(针对于没有cdn源的npm包)

  3. 多进程loader编译

    • thread-loader // 多进程运行loader, 针对于js,vue 等非常消耗资源的文件
  4. 缓存loader编译的文件

    • cache-loader // 缓存js,vue等非常消耗资源的文件进行缓存
  5. 多进程缓存文件压缩

    • TerserPlugin // 多进程缓存压缩文件

优化用户体验

主要思路是分离chunk,减少entry主包文件大小,模块懒加载减少白屏时间

  1. 使用require.ensure, import 进行模块的懒加载(详见懒加载

  2. 使用gzip缓存js,css文件

  3. 使用MiniCssExtractPlugin进行css文件提取

  4. 使用splitChunks中的minSize, maxSize对chunk模块进行分割

  5. 组件,js,css的按需加载

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值