Webpack是当下最热门的前端资源模块化管理和打包工具,它可以将很多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源,还可以将按需加载的模块进行代码分割,等到实际需要的时候再异步加载。通过 loader
的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 JSON、Coffeescript、 LESS 等。
安装完vue cli后,我们就可以基于vue-webpack-simple模板和vue-webpack模板创建项目了。
使用vue-webpack-simple模板
1.生成项目
在某个目录下右键运行Git Bash Here,比如我的目录是D:VueOfficialTemplates。

在git bash下输入以下命令:
vue init webpack-simple my-webpack-simple-demo
webpack-simple
是项目模板的名称,my-webpack-simple-demo
是你要生成的项目名称。

目录下生成了一个文件夹my-webpack-simple-demo。

2. 项目结构说明
打开my-webpack-simple-demo文件夹,看到以下目录结构:

文件树结构如下:
相比于browserify-simple模板,多了一个webpack.config.js文件。
package.json
","private": true,"scripts": {
"dev": "webpack-dev-server --inline --hot","build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},"dependencies": {
"vue": "^1.0.0","babel-runtime": "^6.0.0"
},"devDependencies": {
"babel-core": "^6.0.0","babel-loader": "^6.0.0","babel-plugin-transform-runtime": "^6.0.0","babel-preset-es2015": "^6.0.0","babel-preset-stage-2": "^6.0.0","cross-env": "^1.0.6","css-loader": "^0.23.0","file-loader": "^0.8.4","json-loader": "^0.5.4","url-loader": "^0.5.7","vue-hot-reload-api": "^1.2.0","vue-html-loader": "^1.0.0","vue-loader": "^8.2.1","vue-style-loader": "^1.0.0","webpack": "^1.12.2","webpack-dev-server": "^1.12.0"
}
}
开发时依赖babel、各种loader和webpack,发布时依赖vue和babel-runtime。scripts节点同样定义了开发时和发布时的编译命令,和browserify不同的是,编译的输入和输出是定义在webpack.config.js文件中的。
webpack.config.js
module.exports = {
entry: './src/main.js',output: {
path: path.resolve(dirname,'./dist'),publicPath: '/dist/',filename: 'build.js'
},resolveLoader: {
root: path.join(dirname,'node_modules'),},module: {
loaders: [
{
test: /.vue$/,loader: 'vue'
},{
test: /.js$/,loader: 'babel',exclude: /node_modules/
},{
test: /.json$/,loader: 'json'
},{
test: /.html$/,loader: 'vue-html'
},{
test: /.(png|jpg|gif|svg)$/,loader: 'url',query: {
limit: 10000,name: '[name].[ext]?[hash]'
}
}
]
},devServer: {
historyApiFallback: true,noInfo: true
},devtool: '#eval-source-map'
}
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
// http://vue-loader.vuejs.org/en/workflow/production.html
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
}),new webpack.optimize.OccurenceOrderPlugin()
])
}
webpack.config.js内容还是比较好理解的,它采用了CommonJS的写法,entry节点配置了编译入口,output节点配置了输出。这段entry和output配置的含义是:编译src/main.js文件,然后输出到dist/build.js文件。
3. 安装项目依赖
执行以下命令安装项目依赖:
cd my-webpack-simple-demo
npm install
安装完成后,目录下会产生一个node_modules文件夹。
项目相关的依赖都存放在这个文件夹下了,比vue-browserify-simple项目模板的依赖要多得多。
4. 运行示例
执行以下命令运行示例:
npm run dev
打开127.0.0.1:8080,可以看到以下画面:

npm run dev命令后并不会在dist目录下生成build.js文件,开发环境下build.js是在运行内存中的。

5. 发布
执行以下命令会生成发布时的build.js,并且是经过压缩的。


使用vue-webpack模板
重新打开一个git bash窗口,执行以下命令:
vue init webpack my-webpack-demo
webpack
是项目模板,my-webpack-demo
是项目名称。
目录下生成了一个文件夹my-webpack-demo:

文件目录结构如下(参考:)
2. 安装依赖
执行以下两行命令,安装项目依赖:
cd my-webpack-demo
npm install
(安装过程较为缓慢,需要耐心等待…)
3. 运行示例
执行以下命令运行示例:
npm run dev
打开127.0.0.1:8080,可以看到以下画面:

4. 发布
执行以下命令生成发布:

和vue-simple-webpack模板不同的是,所有的静态资源,包括index.html都生成到dist目录下了。

这意味着你可以直接拿着dist目录去发布应用,例如在IIS下将dist目录发布为一个网站。
vue-simple-webpack示例
昨天我们使用了vue-simple-browserify模板做了一个小示例,今天我们就用vue-simple-webpack模板完成同样的示例。
该示例的代码我就不贴出来了,大家可以到本文开头的GitHub地址去下载。

总结
browserify和webpack都是打包和模块依赖管理工具,webpack拥有比browserify更强的功能,使用哪种工具取决于你们个人的偏好、项目的要求。毋庸置疑的是,Vue.js官方基于vue cli,browserify,webpack构筑的几个项目模板,确实能够给我们带来很大的便利,可以让我们快速地投入到开发中。在后面的篇章中,我将尽可能地基于这些项目模板来讲解Vue.js的点点滴滴。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!