日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vuecli3修改html,vue-cli3多页应用改造

發布時間:2023/12/15 vue 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vuecli3修改html,vue-cli3多页应用改造 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求

一個平臺P,包含產品a、b、c、d、e。各產品UI樣式風格統一,且會用到公共配置(HOST、是否添加埋點js)、組件(頭部導航、表格、搜索框)、方法(請求攔截、生成UUID)。

現狀:由于歷史遺留原因,各產品為獨立SPA、各自維護,配置、組件也都自成一體,只是大概樣式上保持了一致,但細節(比如同一面包屑樣式,左邊距5px、8px都有)都不一致。

這種情況下,改組件、改配置都得一改改多個地方,且有些項目是vue-cli2、有些是vue-cli3,項目間依賴包的版本也不一致,維護起來非常不友好。

目標:整合各產品單頁應用為MPA,提取公共文件(主題、配置、組件、方法),減少規范性東西的維護成本。

目錄結構對比

整合前

bds-bank-fe

│ README.md

│// 靜態資源輸出目錄

└───dist

│ └───index.html + static // 平臺首頁

│ └───label // 產品a

│ │ └───index.html + static

│ └───metrics // 產品b

│ └───service // 產品c

│ └───help // 產品d

│// 項目路徑

└───help-center // 產品d

└───portal-page // 平臺首頁

└───service-doc // 產品c

└───unify-label // 產品a

└───unify-metrics // 產品b

│ └───build

│ └───config

│ └───src

整合后

│// 靜態資源輸出目錄

└───dist

│ └───index.html

│ └───label.html

│ └───metric.html

│ └───service.html

│ └───stocktake.html

│ └───css

│ └───js

│ └───img

├── public

│ └───favicon.ico

│ └───index.html

│// 項目路徑

├── src

│?? └── assets

│?? └── components

│?? ├── pages

│?? ├── index

│?? ├── label

│?? ├── metric

│?? ├── service

│?? ├── stocktake

實現

vue-cli 3.0官方支持多頁,重點在于vue.config.js文件中pages這個配置項,每個頁面單獨配置entry、template、filename等。pages配置說明

// 官網示例如下

module.exports = {

pages: {

index: {

// page 的入口

entry: 'src/index/main.js',

// 模板來源

template: 'public/index.html',

// 在 dist/index.html 的輸出

filename: 'index.html',

// 當使用 title 選項時,

// template 中的 title 標簽需要是

title: 'Index Page',

// 在這個頁面中包含的塊,默認情況下會包含

// 提取出來的通用 chunk 和 vendor chunk。

chunks: ['chunk-vendors', 'chunk-common', 'index']

},

// 當使用只有入口的字符串格式時,

// 模板會被推導為 `public/subpage.html`

// 并且如果找不到的話,就回退到 `public/index.html`。

// 輸出文件名會被推導為 `subpage.html`。

subpage: 'src/subpage/main.js'

}

}

Step1: 創建新項目

選擇需要的Babel、Router、Vuex、eslint...

具體步驟參考官網:創建一個項目

Step2: 修改配置文件vue.config.js

在根目錄下新建public文件夾,包含favicon.ico和index.html兩個文件。

index文件內容如下:

P-公共服務平臺

We're sorry but page doesn't work properly without JavaScript enabled. Please enable it to continue.

然后,在根目錄下新建vue.config.js

const glob = require('glob')

const path = require('path')

const resolve = (dir) => path.join(__dirname, dir)

const PAGES_PATH = './src/pages/*/*.js'

module.exports = {

pages: setPages(),

// TODO:以下內容非生成多頁應用必須配置

lintOnSave: true,

productionSourceMap: false,

chainWebpack: config => {

/**

* 自動化導入文件

*/

const types = ['vue-modules', 'vue', 'normal-modules', 'normal']

types.forEach(

type => addStyleResource(config.module.rule('less').oneOf(type)))

/**

* 添加別名

*/

config.resolve.alias

.set('@index', resolve('src/pages/index'))

.set('@label', resolve('src/pages/label'))

.set('@metrics', resolve('src/pages/metric'))

.set('@service', resolve('src/pages/service'))

.set('@stocktake', resolve('src/pages/stocktake'))

/**

* 菜單icon處理為svg-sprite

*/

config.module

.rule('svg')

.exclude

.add(resolve('src/assets/icons/menus'))

.end()

config.module

.rule('svg-sprite-loader')

.test(/\.svg$/)

.include

.add(resolve('src/assets/icons/menus')) // 處理目錄

.end()

.use('svg-sprite-loader')

.loader('svg-sprite-loader')

.options({

symbolId: 'icon-[name]'

})

}

}

/**

* 組裝頁面

*/

function setPages () {

let pages = {}

glob.sync(PAGES_PATH).forEach(filepath => {

let fileList = filepath.split('/')

let fileName = fileList[fileList.length - 2]

pages[fileName] = {

entry: filepath,

template: 'public/index.html',

filename: `${fileName}.html`,

// title:

chunks: ['chunk-vendors', 'chunk-common', fileName]

}

})

return pages

}

/**

* 注入公共less

* @param rule

*/

function addStyleResource (rule) {

rule.use('style-resource')

.loader('style-resources-loader')

.options({

patterns: [

path.resolve(__dirname, 'src/assets/styles/variable.less')

]

})

}

Step3: 拷貝原項目src目錄至pages下,大概長這樣

Step4: 各產品原項目下package.json依賴包都挪到根目錄下package.json,重新安裝

PS:由于依賴向上升級,某些老版本依賴包可能會存在升級引發的問題,需要細心走查一遍。這里由于業務不一樣,就不詳細贅述了

然后npm start,完美啟動~

總結

以上是生活随笔為你收集整理的vuecli3修改html,vue-cli3多页应用改造的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。