webpack那些事

1. 什么是webpack

webpack是打包模块化js的工具,在 webpack中一切文件皆模块,输出由多个模块组成的文件。
webpack也可以看成是一个模块打包机,首先分析项目结构,找到js模块以及浏览器无法运行的拓展语言如(scss,ts)等将其打包成合适的格式供浏览器使用。

2 loader和plugin

loader:模块转换器; webpack只能解析js文件,loaderwebpack拥有加载和解析非js文件的能力。在module.rules中配置,作为模块的解析规则而存在,类型为一个数组,每一项是一个Object,描述了对于什么文件使用什么loader加载和什么参数options

plugin: 在webpack构建中特定时机注入扩展逻辑,让其具有更多的灵活性,在webpack运行的生命周期中会广播许多事件,plugin会监听这些事件,在合适的时机通过webpack提供的api改变输出结果。在plugins中单独配置,类型为数组,每一项为plugin实例,通过构造函数传入。

3 常用的loader

  • file-loader 把文件输出到一个文件夹中,通过对应的url引用输出的文件
  • url-loader 和file-loader类似,当文件很小时,以base64的方式把文件注入到代码中去
  • image-loader 加载并压缩图片文件
  • babel-loader 把ES6转化成ES5
  • css-loader 加载css,支持模块化,压缩,文件导入等功能
  • style-loader 把css注入到js中,通过操作dom来改变样式
  • awesome-typescript-loader 把ts转化成js,性能优于ts-loader
  • postcss-loader 扩展css语法,使用下一代css,可以配合autoprefixer插件自动补齐css3前缀

4 常见的plugin

  • define-plugin 定义环境变量
  • commons-chunk-plugin 提取公共代码
  • terser-webpack-plugin 支持压缩ES6
  • ignore-plugin 忽略部分文件
  • html-webpack-plugin 简化HTML文件的创建
  • mini-css-extract-plugin 分离样式文件,把css提取为独立文件,按需加载
  • serviceworker-webpack-plugin 增加离线缓存功能
  • clean-webpack-plugin 删除打包文件
  • happypack 多线程加速编译

5 如何用webpack来优化前端性能

  • 压缩代码如用mini-css-extract-plugin
  • 删除死代码如JS 用Tree-Shaking, CSS用purify-css
  • 提取公共代码如用commons-chunk-plugin
  • 利用CDN加速,把应用过程中的静态资源,换成CDN上的对应路径

6 webpack 热更新

其实是基于webpack-dev-server,当代码进行修改并保存后,将会对代码进行重新打包,将改动的模块发到浏览器端,浏览器用新的模块替代旧的模块,实行局部更新而非整体的刷新页面。

文字在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值