1.全局安裝vue-clinpm install -g vue-cli
2.基於webpack項目模板建立項目vue init webpack demo
3.在模板項目的基礎上,調整項目目錄結構
在src目錄下新建modules,pages文件夾用來存放模塊和頁面。實際項目的每一個頁面都再單獨建一個文件夾並存放在pages文件夾中。注意pages下每一個文件夾下的各頁面入口js文件必須和模板文件(html文件)的名稱保持一致。
src目錄結構:
components存放公用組件
router存放頁面的路由配置
assets存放頁面的靜態資源
modules存放公用模塊
pages存放頁面
4.在build/utils.js中按如下內容修改變量聲明,並添加兩個方法:webpack多入口文件和多頁面輸出javascript
var path = require('path') var config = require('../config') var ExtractTextPlugin = require('extract-text-webpack-plugin') var glob = require('glob') var HtmlWebpackPlugin = require('html-webpack-plugin') var PAGE_PATH = path.resolve(__dirname, '../src/pages') var merge = require('webpack-merge') var packageConfig = require('../package.json') //多入口配置 exports.entries = function() { var entryFiles = glob.sync(PAGE_PATH + '/*/*.js') var map = {} entryFiles.forEach((filePath) => { var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.')) map[filename] = filePath }) return map } //多頁面輸出配置 exports.htmlPlugin = function() { let entryHtml = glob.sync(PAGE_PATH + '/*/*.html') let arr = [] entryHtml.forEach((filePath) => { let filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.')) let conf = { template: filePath, filename: filename + '.html', chunks: ['manifest', 'vendor', filename], inject: true } if (process.env.NODE_ENV === 'production') { conf = merge(conf, { chunks: ['manifest', 'vendor', filename], minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true }, chunksSortMode: 'dependency' }) } arr.push(new HtmlWebpackPlugin(conf)) }) return arr }
5.修改build/webpack.base.conf.js的入口配置html
module.exports = { entry: utils.entries(), ...
6.修改build/webpack.dev.conf.js和build/webpack.prod.conf.js的多頁面配置:把原有的頁面模板配置註釋或刪除,並把多頁面配置添加到plugins
webpack.dev.conf.js:vue
plugins: [ ...... // new HtmlWebpackPlugin({ // filename: 'index.html', // template: 'index.html', // inject: true // }), ...... ].concat(utils.htmlPlugin())
webpack.prod.conf.js:java
plugins: [ ...... // new HtmlWebpackPlugin({ // filename: config.build.index, // template: 'index.html', // inject: true, // minify: { // removeComments: true, // collapseWhitespace: true, // removeAttributeQuotes: true // }, // chunksSortMode: 'dependency' // }), ...... ].concat(utils.htmlPlugin()) 多頁面應用建立完畢,在pages目錄下建立應用對應的頁面文件。