vue配置多頁面應用

第一步:使用vue-cli搭建項目(注:建議安裝淘寶鏡像,使用cnpm執行下面操作)

        1.按住shift按鈕,右鍵點擊存放項目的文件夾,點擊在此處打開命令窗口。

        2.在命令窗口中輸入 npm install -g vue-cli   安裝vue-cli。

        3.輸入 vue init webpack vue-demo 創建一個名爲vue-demo的項目。

        4.輸入  cd vue-demo   進入項目目錄。

        5.輸入 npm install   安裝項目依賴。

        6.npm run dev  運行項目。

        7.網頁打開localhost:8080,就可以看到項目頁面,如下圖。

       

註釋:在執行vue init webpack vue-demo命令時候一直按回車就行,只是因爲不需要tests模塊,這一部分我選擇了no,如下圖。體每個

含義後期我會在博客中更新。   


第二步:調整目錄結構

      在項目目錄中的src文件夾中新建一個pages文件夾,pages文件夾中新建一個test1文件夾,將src文件夾中的assets文件夾、router文件夾、App.vue文件及main.js文件都放到新建的test1文件夾中。如下圖紅框中的文件時需要移動的。


         、

        接下來將vue-demo文件夾中的index.html文件也放入test1文件中。如下圖。



        現在src文件中的目錄結構如下:


       最後將test1文件中的main.js,改爲test1.js,將index.html文件名改爲test1.html,保證入口js文件和模板文件的名稱是一致的。

第三步:修改build文件中配置

     1.修改build文件中utils文件,在文件代碼的最後面加入下面兩個函數。

// glob是webpack安裝時依賴的一個第三方模塊,還模塊允許你使用 *等符號, 例如lib/*.js就是獲取lib文件夾下的所有js後綴名的文件
var glob = require('glob')
// 頁面模板
var HtmlWebpackPlugin = require('html-webpack-plugin')
// 取得相應的頁面路徑,因爲之前的配置,所以是src文件夾下的pages文件夾
var PAGE_PATH = path.resolve(__dirname, '../src/pages')
// 用於做相應的merge處理
var merge = require('webpack-merge')


//多入口配置
// 通過glob模塊讀取pages文件夾下的所有對應文件夾下的js後綴文件,如果該文件存在
// 那麼就作爲入口處理
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
}

//多頁面輸出配置
// 與上面的多頁面入口配置相同,讀取pages文件夾下的對應的html後綴文件,然後放入數組中
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',
      // 頁面模板需要加對應的js腳本,如果不加這行則每個頁面都會引入所有的js腳本
      chunks: ['manifest', 'vendor', filename],
      inject: true
    }
    if (process.env.NODE_ENV === 'production') {
      conf = merge(conf, {
        minify: {
          removeComments: true,
          collapseWhitespace: true,
          removeAttributeQuotes: true
        },
        chunksSortMode: 'dependency'
      })
    }
    arr.push(new HtmlWebpackPlugin(conf))
  })
  return arr
}

    2.修改build/webpack.base.conf.js的入口配置

        找到下面這部分代碼

        

entry: {
  app: './src/main.js'
},

       改爲

entry: utils.entries(),

      3.修改build文件夾中的webpack.dev.conf.js的配置


       4.修改build中的webpack.prod.conf.js文件



      5.將test1文件中的router文件中index.js文件做如下修改。注:因爲使用了mode:‘history’,去掉地址中不美觀的#,所以所有路由中必須加入本頁面文件名,如下圖。


第四部:測試項目

    複製test1文件夾命名爲test2文件夾,將test2文件中的所有test1命名的地方全部改爲test2,注意路由路徑中的test1.html也要改爲test2.html。爲了方便區分,可以將test1.html中title改爲test1,test2.html中title改爲test2。

    重新啓動項目,訪問http://localhost:8080/test1.html  和  http://localhost:8080/test2.html。如下圖。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章