【前端】webpack一本通

不定期补充,建议关注收藏点赞。


大纲

简介

官网

  • webpack作用(自动整合压缩并剔除无用代码)
    开发体验:模块化、热更新HMR、本地开发服务器、多环境配置
    构建优化:代码转换、treeShaking、代码分割按需加载、压缩资源、缓存优化
    减少文件数量、缩小代码体积、提高浏览器打开速度
  • 优点
  1. 专注于处理模块化的项目,开箱即用
  2. plugin扩展,完整好用灵活
  3. loaders扩展, 能够把所有类型文件都解析打包
  • webpack定义
    nodejs第三方模块包, 用于识别翻译压缩打包整合代码
    支持所有类型文件的打包
    支持less/sass => css
    支持ES6/7/8 => ES5
    压缩代码, 提高加载速度
    基于node, 所以导出遵守CommonJS规范。
    是打包模块化JS的工具,在webpack里【一切文件皆模块】,通过loader转换文件,通过plugin注入钩子,最后输出由多个模块组合成的文件,webpack专注构建【模块化】项目

python一切皆对象;
JavaScript 的“几乎一切皆对象” —— 但并不是绝对的。原始类型(Primitive Types)不是对象,它们是 值类型(by value),不可变,不是对象,虽然原始类型不是对象,但当你调用它们的方法时,JS 会临时把它们“包装成对象”;特殊情况:null,这个是历史遗留的 bug ,虽然typeof null 为"object" 但 null 本质上不是对象,也不能调用方法。

  • 安装
  1. 初始化文件夹包环境, 得到package.json文件
  2. 下载webpack等模块包
  3. 在package.json自定义命令, 为打包做准备
yarn init
yarn add webpack webpack-cli -D

#在配置文件中 配置自定义命令 
scripts: {
   
   
	"build": "webpack"
}

核心概念

Loader和Plugin的不同

  1. 不同的作用
    ​ Loader直译为"加载器"。Webpack将一切文件视为模块,但是webpack原生是只能解析js文件,如果想将其他文件也打包的话,就会用到loader。 所以Loader的作用是让webpack拥有了加载和解析非JavaScript文件的能力。
    ​ Plugin直译为"插件"。Plugin可以扩展webpack的功能,让webpack具有更多的灵活性。 在 Webpack 运行的生命周期中会广播出许多事件,Plugin 可以监听这些事件,在合适的时机通过 Webpack 提供的 API 改变输出结果。
  2. 不同的用法
    ​ Loader在module.rules中配置,也就是说他作为模块的解析规则而存在。 类型为数组,每一项都是一个Object,里面描述了对于什么类型的文件(test),使用什么加载器(loader)和使用的参数(options)
    ​ Plugin在plugins中单独配置。 类型为数组,每一项是一个plugin的实例,参数都通过构造函数传入。

使用

  1. 默认src/index.js – 打包入口文件
  2. 引入到入口的文件才会参与打包
  3. 上述配置文件中的自定义命令,使得:执行package.json里build命令则执行webpack打包命令
  4. 默认输出dist/main.js的打包结果
  5. 借助webpack, 把模块和代码打包后,需要将打包结果引入到项目中生效。不希望“手动引入”这么麻烦的,可以安装html-webpack-plugin插件。其使用方法见后。
  • 更改webpack打包默认的入口和出口
    新建webpack.config.js
    填入配置,entry设置为入口文件路径,output对象设置出口路径和文件名
    打包观察效果
    在这里插入图片描述
  • 例子:webpack打包代码–jquery实现功能
    注意:webpack打包后的js需要引入到html中使用才能生效
    步骤:
    ①:从0准备环境, 初始化包环境, 下载webpack和webpack-cli包, 配置自定义命令build
    ②:yarn下载jquery, 新建public/index.html,写入内容
    ③:src/main.js 引入jquery, 编写功能代码
    ④:执行打包命令
    ⑤:复制public/index.html到dist/, 然后引入打包后的js, 运行网页观察效果

webpack默认只能处理js文件 ->引入加载器

  • 有哪些常见的Loader?他们是解决什么问题的?(必会)
    1、 file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件
    2、 url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去
    3、 source-map-loader:加载额外的 Source Map 文件,以方便断点调试
    4、 image-loader:加载并且压缩图片文件
    5、 babel-loader:把 ES6 转换成 ES5
    6、 css-loader:加载 CSS,支持模块化、压缩、文件导入等特性
    7、 style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS。
    8、 eslint-loader:通过 ESLint 检查 JavaScript 代码
  • 处理css文件
    css文件引入到入口里,webpack打包css文件依然会报错。如何让webpack能处理css文件:使用下面的两个加载器
    css-loader 文档
    style-loader文档
    css-loader 让webpack能处理css类型文件
    style-loader 把css插入到DOM中(插入到head下style标签内)
  1. 下载加载器
yarn add css-loader style-loader -D
  1. webpack.config.js配置
module.exports={
   
   
	//其他配置 这里略
	module:{
   
   
		rules:[{
   
   
				test:/\.css$/i, //i 忽略大小写
				use:["style-loader","css-loader"]	
		}]
	}
}
  1. 打包观察效果:css代码被打包进js文件中,style-loader会把css代码插入到head下style标签内
  • 处理less文件
    加载器使用less-loader
    less-loader加载器作用: 识别less文件
    less作用:将less编译为css
yarn add less less-loader -D
//配置
	module:{
   
   
		rules:[
		//其他配置略
		{
   
   
			test:/\.less$/,
			use:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七灵微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值