npm install vue --save
webpack.config.js中配置
resolve: {
// 别名
alias: {
// 以vue结尾
'vue$': 'vue/dist/vue.esm.js'
}
}
npm install vue-loader vue-template-compiler --save-dev
webpack.config.js中
rules: [
// ... 其它规则
{
test: /\.vue$/,
loader: 'vue-loader'
}
]
},
plugins: [
// 请确保引入这个插件!
new VueLoaderPlugin()
]
这个插件是必须的! 它的职责是将你定义过的其它规则复制并应用到 .vue 文件里相应语言的块。例如,如果你有一条匹配 /.js$/ 的规则,那么它会应用到 .vue 文件里的 script> 块。
webpack自带的插件
webpack.config.js
const webpack = require('webpack')
module.exports = {
plugins: [
new webpack.BannerPlugin('每个js文件添加版权 ~~~~')
]
}
安装
npm install html-webpack-plugin@3.2.0 --save-dev
修改webpa.config.js文件
const htmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
plugins: [
new htmlWebpackPlugin({
// template: path.join(__dirname, './src/index.html'), // 指定模板界面 生成内存中的html
template: 'index.html',
filename: 'index.html' // 指定生成的页面名称
})
]
}
安装
npm install uglifyjs-webpack-plugin@1.2.0 --save-dev
配置
webpack.config.js
const uglifyjdWebpackPlugin = require('uglifyjs-webpack-plugin')
module.exports = {
plugins: [
// js压缩插件
new uglifyjdWebpackPlugin({
test: /\.js($|\?)/i
})
]
}
安装
npm install webpack-dev-server@2.9.3 --save-dev
配置
module.exports = {
devServer: {
// port: '',
contentBase: './dist',
inline: true, // 实时刷新页面
}
}
package.json
{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server"
},
}
运行
npm run dev
npm run dev --open # 默认打开浏览器
npm install webpack-merge --save-dev
最后直接删除webpack.config.js文件
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config ./build/product.config.js",
"dev": "webpack-dev-server --open --config ./build/dev.config.js"
},
npm run build
和 npm run dev
使否能执行成功需要将ES6语法转成ES5,那么就需要使用label
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
配置webpack.config.js文件
{
test: '/\.m?js$/',
exclude: /(node_modules|bower_components)/,
use: {
loader: 'label-loader',
options: {
presets: ['es2015']
}
}
}
重新打包,查看bundle.js文件,发现其中的内容变成了ES5的语法
现在最常用的 是 commonJS 和 ES6
核心思想:导出 和 导入
module.export = function () {
obj = {
}
return obj;
}
obj = require('./aaa.js')
导出
export {
flag, num
}
export var num1 = 999
export var height = 1.88
export function sum(num1, num2) {
return num1 + num2,
}
// ES6中的类
export class Persion {
run () {
console.log('类。。。')
}
}
const address = '北京市'
export default address
// 使用default导出,导入的时候可以自定义命名
// 默认只能有一个 default
导入
在应用js文件的时候,需要被类型设为module
<script src="./01-bbb.js" type="module"></script>
import {flag, sum} from './aaa.js'
import {num1, height} from './aaa.js'
import {sum} from './aaa.js'
const p = new Persoon()
p.run()
import addr from './aaa.js'
import * as obj from './aaa.js'