静态资源:图片,富媒体,字体文件等
图片引入方式
1.html 中通过 标签等方式引入
2.css 中 通过 src等方式引入
3.javascript 中使用图片的URL或者内容 (比如 canvas)
使用 loader 来加载图片资源
file-loader url-loader
- file-loader 能够根据配置项复制使用到的资源(不局限于图片)到构建之后的文件夹,并且能够更改对应的链接
- url-loader 包含 file-loader 的全部功能,并且能够根据配置将符合配置的文件转换成base64方式引入,将小体积的图片base64引入项目可以减少 http 请求,也是一个前端常用的优化方式
url-loader 的 limit 选项来控制不超过一定限制的图片才使用base64
{test: /\.(png|svg|jpg|gif)$/,use: {loader: "url-loader",options: {limit: 3 * 1024, //3k},},},
配置 cdn 域名
一般静态资源上线的时候都会放到CDN,假设我们的CDN域名和路径为 http://xxx.xxx.com/img/
只需要修改 output.publicPath
module.exports = {output:{publicPath:'http://xxx.xxx.com/img/'}}

html和css中使用 alias
url-loader 会处理使用别名引入的方式
module.exports = {resolve:{alias:{'@assets':path.resolve(__dirname,'./src/assets')}}}
需要注意,在html和css使用alias 必须要前面添加 ~ **
tips: html中使用
引入图片等静态资源的时候,需要添加 html-loader 配置。不然也不会处理静态资源路径的问题
图片优化
image-webpack-loader
这个loader不能将图片嵌入应用,所以必须和 url-loader 以及 svg-url-loader 一起使用

css Sprite 雪碧图
安装
npm i postcss-loader postcss-sprites -D
修改 postcss 的 postcss.config.js , 增加插件的调用
//postcss.config.jsconst postcssSprites = require('postccss-sprites')module.exports = {plugins:[postcssScrites({spritePath:'./src/assets/img'})]}
修改 webpack.config.js 在 css-loader 之前配置上 postcss-loader (注意loader加载顺序,从后往前)
//webpack.config.js//rules{test: /\.css$/,use: [MiniCssExtractPlugin.loader,"css-loader",{loader: "postcss-loader",},],}
其他资源处理

面试题
1.webpack 怎么给静态资源加上 CDN域名
2.url-loader 和 file-loader 有什么区别
