国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue.js學習之vue-cli定制腳手架詳解

2019-11-19 16:12:35
字體:
來源:轉載
供稿:網友

前言

年初的時候公司的老后臺系統(tǒng)實在難以維護和繼續(xù)在其上開發(fā)了,因為這個系統(tǒng)被很多人寫過頁面,有前端有后端,編寫前端代碼時都非常隨意,加之沒有模塊化,復用性和可維護性都極低,便下定決定,重新搞一套。

經過一段時間的調研選擇了vue全家桶+elementUI來開發(fā)后臺系統(tǒng),讓交互體驗更好,讓開發(fā)體驗更好,讓生產效率提高。

從零搭建其實考慮的事情還挺多的,比如:

  • 如何管理代碼倉庫
  • 開發(fā)環(huán)境,測試環(huán)境搭建
  • 如何接入公司的打包上線流程
  • 如何目錄劃分
  • 如何劃分模塊
  • 登錄和權限如何做

這篇文章來記錄下和腳手架相關的改造,首先其實就是上了vue-cli來做,可是呢?由于預計項目會有很多頁面,這些頁面其實是分模塊的,不同模塊的頁面之前其實關系不大。所以我覺得一個用戶其實大部分時候只會用到其中一個模塊的頁面,如果把所有頁面做成一個單頁應用很多資源加載就不是很必要了,所以第一個改造就是:做成多入口打包,也就是做成多個單頁應用,每個模塊一個入口。

/build/utils

exports.getEntries = function (globPath) {  var entries = {} glob.sync(globPath).forEach(function (entry) { var basename = path.basename(entry, path.extname(entry)) entries[basename] = entry }) return entries}

/build/webpack.base.conf

module.exports = {  entry: utils.getEntries('./src/modules/*/*.js'),

/build/webpack.dev.conf

/build/weback.prod.conf

var modules = utils.getEntries('./src/modules/*/*.html') Object.keys(modules).forEach(function (moduleName) {  var config = { filename: moduleName + '/index.html', template: modules[moduleName], inject: true, excludeChunks: Object.keys(modules).filter(function (name) {  return name != moduleName }) } module.exports.plugins.push(new HtmlWebpackPlugin(config))})

這樣就完成了多頁面的入口配置,其核心就是兩點:1. 入口配置成數組。2. plugins里面添加多個HtmlWebpackPlugin分別對應每一個頁面,完成js打包后路徑的自動注入功能。

這里還有個地方需要注意,就是抽取公用的js和css代碼出來,這里做了一下改造,就是echarts指定提取出來,而不是按引用次數那種自動提取, 這里還踩了個坑,詳細見注釋。

在webpack.prod.conf的plugins里面加入:

entry: {  vendor: ['vue', 'vue-router', 'vuex', 'element-ui'], echarts: ['vue-echarts'] },// 這個地方天坑啊~~~死人了。。。:( // vendor是echarts的父模塊,順序不能反:https://github.com/webpack/webpack/issues/1943 // 包括聲明CommonsChunkPlugin的順序也是有關系的,不是隨意的,后聲明的是頂級模塊,先聲明的是依賴頂級模塊的模塊 // HtmlWebpackPlugin注入模塊鏈接的時候的順序也是由此保證的 new webpack.optimize.CommonsChunkPlugin({  names: ['echarts', 'vendor'],  minChunks: function (module, count) { // 抽取公用vendor.css  // console.log(module.resource)  return (   module.resource &&   //.css$/.test(module.resource) &&   module.resource.indexOf(   path.join(__dirname, '../node_modules')   ) === 0  )  }  }),

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對武林網的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安福县| 万宁市| 东阿县| 普格县| 汨罗市| 富源县| 吉水县| 遵义市| 芦山县| 张家川| 万州区| 普兰县| 荥经县| 剑川县| 南投县| 富锦市| 牙克石市| 陵川县| 石泉县| 离岛区| 壶关县| 嵊州市| 明光市| 梁河县| 江华| 林芝县| 环江| 南通市| 临泉县| 尚志市| 辉南县| 松潘县| 随州市| 射洪县| 彝良县| 常德市| 甘德县| 临海市| 武安市| 凌海市| 高雄市|