在vue的模块化开发中需要用到webpack
两个核心:模块化、打包
webpack让我们可能进行模块化开发,并且会帮助我们处理模块间的依赖关系。css,图片,json文件等等在webpack中都可以被当作模块来使用
// 开发时依赖
"devDependencies": {
"webpack": "^3.6.0"
}
loader是webpack中一个非常核心的概念
不同的loader处理不同的文件
使用步骤
安装 loader,使用到哪些就安装哪些loader
//css
npm install css-loader style-loader --save-dev
//less
//
//vue
npm install vue-loader vue-template-compiler --save-dev
在配置文件中配置
module: {
rules: [
{
test: /\.css$/,
// css-loder只负责将css文件进行加载
// style-loder负责将样式添加到DOM中
use: [ 'style-loader','css-loader' ]
},
{
test: /\.less$/,
// 将 css-loader、style-loader 和 less-loader 链式调用,
// 可以把所有样式立即应用于 DOM。
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "less-loader" // compiles Less to CSS
}]
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
// 当加载的图片,小于limit时,会将图片编译成base64字符串形式
// 大于Limit时,需要使用file-loader模块进行加载
limit: 10000,
// images => 文件要打包到的文件夹
// [name] => 获取图片原来的名字
// [hash:8] => 为了防止图片名称冲突,使用Hash,保留8位
// [ext] => 保留图片的拓展名
name: 'images/[name].[hash:8].[ext]'
}
}
]
}
]
}
使用多个loader时,webpack是从右向左读的。
webpack处理图片文件时会将其打包到dist文件夹里,所以要在配置文件中配置publicPath: ‘dist/’,之后webpack打包遇到url时会在路径前自动加上’dist/’。
webpack打包的js文件并没有将es6语法转成es5,那么就意味着一些对es6还不支持的浏览器没有办法很好的运行代码。这时就需要使用babel。
安装
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
在配置文件中配置
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
}
使用npm安装
npm install vue --save
vue构建时有两个版本
默认是用runtime-only,所以这时我们得配置,用alias对象指定使用版本
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
}
el 和 template的区别
plugin是插件的意思,通常是用于对某个现有的架构进行扩展
webpack中的插件,就是对webpack现有的功能的各种扩展,比如打包优化,文件压缩等等
loader 和 plugin的区别
plugin的使用过程
打包html的plugin
npm install html-webpack-plugin --save-dev
webpack提供了一个本地开发服务器,这个本地服务器基于node.js搭建,内部使用express框架,
安装webpack-dev-server
配置
devServer: {
contentBase: './dist',
// 进行实时监听
inline: true
}
"dev": "webpack-dev-server --open"