vue-cli多頁面配置

vue-cli多頁面配置

對于vue-cli的基礎(chǔ)配置可以參考我的這篇blog vue-cli的基礎(chǔ)運用

閱讀本文需要了解的知識點

  1. webpack的基本配置 entry, output ,plugin
  2. ES6 的基本用法
  3. 文件的導(dǎo)入和導(dǎo)出

1.目錄結(jié)構(gòu)的調(diào)整

目錄結(jié)構(gòu).png

源文件下面的src分三個部分

  1. components : 存放單頁面組件和整體公用的的組件
  2. modules : 存放整體的模塊部分
  3. pages : 存放頁面刀诬,每一個頁面的內(nèi)容按照就近原則進行匹配
    • 把原來的單頁面的入口文件main.js改成index.js审轮,并放入到pages中的index文件夾
    • index文件夾中存放的是首頁的以前單頁面的內(nèi)容(router铲觉,assets, APP.vue

2.修改單頁面的webpack的入口文件

修改之前

webpack.base.conf.js的基本配置

// webpack編譯的基本配置
module.exports = {
  entry : {
    app: './src/main.js'  //單頁面的入口文件
  },
  ...
}

下面用到的glob模塊解釋

// js/try js文件夾下面的try文件夾里面的a.js b.js c.js 不能含有子目錄(try里面的子目錄的js讀取不了)
var PAGE_PATH = path.resolve(__dirname,'./js');
const entryFiles = glob.sync(PAGE_PATH + '/*/*.js'); //輸出的是一個數(shù)組

[ 'C:/Users/Z7/Desktop/glob/js/tyr/a.js',
  'C:/Users/Z7/Desktop/glob/js/tyr/b.js',
  'C:/Users/Z7/Desktop/glob/js/tyr/c.js' ]

在utils.js中添加方法作瞄,來配置多個入口

// 引入讀取文件名的glob模塊 (不用安裝菜拓,已經(jīng)被隱形安裝過)
var glob = require('glob')  // 讀取文件名的模塊
var PAGE_PATH = path.resolve(__dirname,'../src/pages') //入口文件頁面路徑

exports.entries = function() {
  var entryFiles = glob.sync(PAGE_PATH + '/*/*.js')  // 讀取pages下面的文件夾里面的.js文件
  return entryFiles.reduce((obj,filePath) => {
    var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'))
    obj[filename] = filePath
  },{})
}

修改webpack.base.conf.js的入口,這樣就有多個頁面的入口了蹬跃,下面修改多個頁面的輸出

module.exports = {
  entry: utils.entries(),
  .... 
}  

3.修改頁面的輸出配置

修改之前webpack.dev.conf.js的配置和webpack.prod.conf.js的配置

// 頁面的輸出通過webpack的html-webpack-plugin插件
var HtmlWebpackPlugin = require('html-webpack-plugin')

plugins:[
  ...
  new HtmlWebpackPlugin({
    filename: 'index.html',
    template: 'index.html',
    inject: true
  })
]

我們需要修改它的輸出多個頁面厢呵。在utils.js中添加方法窝撵,來配置多個入口

// 多頁面的輸出配置
exports.htmlPlugin = function() {
  let entryHtml = glob.sync(PAGE_PATH + '/*/*.html');
  let arr = [];
  entryHtml.forEach((filePath) => {
    let filename = filePath.substring(filePath.lastIndexOf('\/')+1, filePath.lastIndexOf('.'))
    var conf = {
      template: filePath,
      filename: filename+ '.html',
      chunks: [filename],
      inject: true
    }
    if(process.env.NODE_ENV === 'production') {
      conf = merge(conf, {
        chunks: ['manifest','vendor',filename],
        minify: {
          removeComments: true,
          collapseWhitespace: true,
          removeAttrubuteQuotes: true
        },
        chunksSortMode: 'dependency'
      })
    }
    arr.push(new HtmlWebpackPlugin(conf))
  })
  return arr;
}

修改build/webpack.dev.conf.js和build/webpack.prod.conf.js的配置:把原有的頁面模板配置注釋或刪除,并把多頁面配置添加到plugins

webpack.dev.conf.js:

plugins: [
  ...
  // new HtmlWebpackPlugin({
  //   filename: 'index.html',
  //   template: 'index.html',
  //   inject: true
  // }),
].concat(utils.htmlPlugin())

webpack.prod.conf.js

plugins: [
  ...
  // new HtmlWebpackPlugin({
  //   filename: config.build.index,
  //   template: 'index.html',
  //   inject: true,
  //   minify: {
  //     removeComments: true,
  //     collapseWhitespace: true,
  //     removeAttributeQuotes: true
  //     // more options:
  //     // https://github.com/kangax/html-minifier#options-quick-reference
  //   },
  //   // necessary to consistently work with multiple chunks via CommonsChunkPlugin
  //   chunksSortMode: 'dependency'
  // }),
].concat(utils.htmlPlugin())

4.運用頁面

  1. npm run dev
  2. npm run build

打包后的文件:

打包后的文件.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末襟铭,一起剝皮案震驚了整個濱河市碌奉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寒砖,老刑警劉巖赐劣,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哩都,居然都是意外死亡魁兼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門漠嵌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咐汞,“玉大人,你說我怎么就攤上這事儒鹿』海” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵约炎,是天一觀的道長植阴。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么掠手? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任热芹,我火速辦了婚禮,結(jié)果婚禮上惨撇,老公的妹妹穿的比我還像新娘。我一直安慰自己府寒,他們只是感情好魁衙,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著株搔,像睡著了一般剖淀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纤房,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天纵隔,我揣著相機與錄音,去河邊找鬼炮姨。 笑死捌刮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的舒岸。 我是一名探鬼主播绅作,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛾派!你這毒婦竟也來了俄认?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤洪乍,失蹤者是張志新(化名)和其女友劉穎眯杏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壳澳,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡岂贩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钾埂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片河闰。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖褥紫,靈堂內(nèi)的尸體忽然破棺而出姜性,到底是詐尸還是另有隱情,我是刑警寧澤髓考,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布部念,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儡炼。R本人自食惡果不足惜妓湘,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乌询。 院中可真熱鬧榜贴,春花似錦、人聲如沸妹田。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鬼佣。三九已至驶拱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晶衷,已是汗流浹背蓝纲。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晌纫,地道東北人税迷。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像锹漱,于是被迫代替她去往敵國和親翁狐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容