==webpack 最难理解的点是 ‘编译’这个概念==html
egwebpack
document.getElementById('app').innerHTML = 'hello xxx'
热更新:在工程启动时, 保存main.js, 会发现页面自动更新了,这是webpack-web-server的热更新功能(经过创建一个Websocket链接来实现响应代码的修改)web
webpack中每一个文件都是一个模块,不一样的模块,须要不一样的加载器来加载, 因此就须要安装不一样的加载器对各类后缀名的文件进行处理。
eg: css样式
安装 style-loader css-loader数组
yarn add css-loader --save-dev yarn add style-loader --save-dev
安装后, 在webpack.config.js中配置loaderapp
在module对象的rules属性中去指定一系列的loaders,
每一个loader必须包含test和use两个选项。dom
// 解释: 当webpack编译过程当中遇到require() 或import语句导入一个后缀为.css的文件时,现将它经过css-loader转换,再经过style-loader转换,而后继续打包 // (use选项的值能够是数组也但是字符串,若是是数组编译顺序为从下至上) module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] }
新建文件style.css,随便写几个样式
将style.css文件引入到main.js中socket
// 新建文件 打开文件 (固然你也能够手动打开) touch style.css open style.css // style.css #app { font-size: 30px; color: lightblue; } //main.js import './style.css'
从新执行yarn run devui
页面会加载你写的样式插件
插件功能强大 而且能够定制
这里以 extract-text-webpack-plugin的插件为例
安装
yarn add extract-text-webpack-plugin --dev
改写配置
module: { rules: [ { test: /\.css$/, use: ExtractTextPlugin.extract({ use: 'css-loader', fallback: 'style-loader' }) } ] }, plugins: [ //重命名提取后的css文件 new ExtractTextPlugin("main.css") ]
在index.html中经过link添加main.css
<link rel="stylesheet" type="text/css" href="/dist/main.css">
执行
yarn run dev
webpack看似复杂,其实只不过是一个js配置文件
只要弄清楚4个概念: