真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vue.js學(xué)習(xí)之vue-cli定制腳手架詳解

前言

10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有遂昌免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

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

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

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

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

/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))
})

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

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

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

entry: { 
 vendor: ['vue', 'vue-router', 'vuex', 'element-ui'],
 echarts: ['vue-echarts']
 },

// 這個(gè)地方天坑啊~~~死人了。。。:(
 // vendor是echarts的父模塊,順序不能反:https://github.com/webpack/webpack/issues/1943
 // 包括聲明CommonsChunkPlugin的順序也是有關(guān)系的,不是隨意的,后聲明的是頂級模塊,先聲明的是依賴頂級模塊的模塊
 // HtmlWebpackPlugin注入模塊鏈接的時(shí)候的順序也是由此保證的
 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
  )
  } 
 }),

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。


當(dāng)前名稱:vue.js學(xué)習(xí)之vue-cli定制腳手架詳解
網(wǎng)址分享:http://weahome.cn/article/pohoho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部