webpack学习笔记3 管理资源
在上一节中,我们通过webpack生成了一个小的项目,项目虽小,五脏俱全。这一节,将会看到webpack是如何管理资源的,这些资源包括样式,图片,js脚本等等。webpack相对于gulp之类的基于流的前端配置工具,其动态打包的机制,可以做到按需加载内容,我们可以明确模块到底依赖了哪些资源,那些没有别依赖的资源就不会加载。
是的,webpack最棒的功能就是,可以通过loader这个东西,加载任意资源类型的文件,我们将从css资源开始,看看webpack是如何处理这些资源的。
加载css
首先安装相关的loader,包括style-loader,css-loader.
npm install --save-dev style-loader css-loader
const path = require('path')
const config = {
entry:'./src/index.js',
output:{
filename:'bundle.js',
path:path.resolve(__dirname,'dist')
},
module:{
rule:[
{
test:/\.css$/,
use:['style-loader','css-loader']
}
]
}
}
修改完webpack文件之后,我们可以在js里依赖相关的样式文件,再上一节的index.js里加一句
element.classList.add('hello')
style.css:
.hello{
color:red
}
加载图片
npm install --save-dev file-loader
file-loader和url-loader可以加载任何文件。
module:{
rule:[
{
test:/\.css$/,
use:['style-loader','css-loader']
},
{
test:/\.(png|jpg|gif)$/,
use:['file-loader']
}
]
}
这样在index.js里新增加内容
import icon from './icon.png';
var Icon = new Image();
Icon.src = icon;
element.appendChild(Icon);
全局资源
用这种方式加载资源,可以最直观的看到各个资源之间的依赖关系,无需依赖全局资源,一般全局资源放在/assets文件夹下。这样的结构会非常有用。
比如,在react中,一个组件jsx.可以单独建一个文件夹(以组件名),和这个组件有关的样式,图片等可以都存在这个文件夹下,这样可以把组件所需要的资源紧密的耦合在一起,真正做到按需加载。
当然,如果有一些资源是需要各个组件之间共享的,可以把这些组件放到一个公共的文件夹下,即assets文件夹。
总结
在webpack中,可以家在各种各样的资源,除了上边说的样式和图片意外,还有js文件,字体,有各种xx-loader帮你实现各种各样的功能。此文仅仅是介绍两种最常用的资源类型,样式和图片。
下一章,将会总结一下如何用webpack管理输出
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。