最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Vue-cli的一套代碼支持多個(gè)項(xiàng)目

 更新時(shí)間:2021年03月18日 09:28:33   作者:xieyanmei  
這篇文章主要介紹了基于Vue-cli的一套代碼支持多個(gè)項(xiàng)目的方案,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下

應(yīng)用場景

在toB端業(yè)務(wù)中,同樣的產(chǎn)品,客戶多多少少會(huì)要求一些定制化。從皮膚,圖片,到一些小的功能的差異。
前端總是沖在最前面需要改的。如果改動(dòng)不大的話,拉個(gè)分支有增加了維護(hù)的成本,分支拉多了,如果主干有一個(gè)問題相當(dāng)于copy了n份,那個(gè)滋味簡直不要太酸爽。那么,是否可以一套代碼支持多個(gè)項(xiàng)目呢?

前段時(shí)間,接了一個(gè)需求,技術(shù)選型是VUE,用vue-cli搭建的。一套代碼需要支持10幾家客戶,每家的皮膚,功能都有一些小的差異,主體流程大致是一樣的。在這個(gè)場景下研究了一下解決方案。

思路

總體的思路模塊化,然后在編譯的時(shí)候根據(jù)輸入命令直接組裝不同的模塊,打包出我們需要的頁面。
這個(gè)地方就有兩個(gè)問題:

1.如何劃分頁面,控制組件的顆粒度?

2.如何差異化編譯?

項(xiàng)目結(jié)構(gòu)

同樣一個(gè)頁面,有相同的部分,也有一些不一樣的部分。vue本身的組件化思想很容易讓我們想到把頁面拆分成組件,然后把公共的提取出來,差異化的分別處理。

項(xiàng)目總體結(jié)構(gòu)

  • build

build結(jié)構(gòu)中主要是webpack的一些腳本配置

  • config

config文件主要是項(xiàng)目相關(guān)配置,我們常用的就是當(dāng)端口沖突時(shí)配置監(jiān)聽端口,打包輸出路徑及命名等

  • src

源碼文件。

  • assets

靜態(tài)資源,一般放圖片,樣式等

  • less

樣式文件,這里分主題處理了

  • pages

頁面文件

  • router

路由

  • util

工具類

  • components

文件夾中是各個(gè)項(xiàng)目的自有的組件。components目錄下的是公共的組件

  • static

靜態(tài)資源,不會(huì)被webpack編譯。一般放一下外部引用文件。

webpack打包配置

如何差異化編譯?

1.cross-env使用環(huán)境變量。在編譯階段,根據(jù)編譯傳入的變量不同,編譯不同的組件。
首先,要改的是package.json的文件

"scripts": {
 "dev:gx": "cross-env BRANCH_ENV=gx node build/dev-server.js",
 "build:gx": "cross-env BRANCH_ENV=gx node build/build.js"
 },

這個(gè)時(shí)候我們編譯的時(shí)候輸入對應(yīng)的命令 就可以傳入相應(yīng)的環(huán)境變量。
eg:npm run dev:gx 會(huì)傳入BRANCH_ENV=gx。

2.把config/prod.env.js中注入這個(gè)環(huán)境變量

module.exports = {
 NODE_ENV: '"production"',
 API_PATH:'""',
 BRANCH_ENV: JSON.stringify(process.env.BRANCH_ENV) || '"base"',
 ignoreCsrfToken:'"false"'
}

3.webpack.base.conf.js

 resolve: {
 extensions: ['', '.js', '.vue', '.json'],
 fallback: [path.join(__dirname, '../node_modules')],
 alias: {
 'vue$': 'vue/dist/vue.common.js',
 'src': path.resolve(__dirname, '../src'),
 'assets': path.resolve(__dirname, '../src/assets/images/'+process.env.BRANCH_ENV),
 'components': path.resolve(__dirname, '../src/components'),
 'componentsDif': path.resolve(__dirname, '../src/components/'+process.env.BRANCH_ENV),
 }
 },

可以看的出,我們把編譯命令注入的環(huán)境變量在引入別名的時(shí)候用上了。比如說,假設(shè)我輸入的編譯命令是

npm run build:gx

這個(gè)時(shí)候

'assets': path.resolve(__dirname, '../src/assets/images/'+process.env.BRANCH_ENV)
//等同于
'assets': path.resolve(__dirname, '../src/assets/images/gx')

頁面引用

1.圖片引用

<img class="icon-arrow" src="~assets/arrow.png">
//根據(jù)編譯命令。圖片引用的是src/assets/images/gx/arrow.png

background: url(~assets/btn_1.png) no-repeat;

ps:用別名的時(shí)候記得要加上~號

2.組件引用

//公共組件
import ruleTitle from 'components/RuleTitle'
//差異化組件
import ruleContent from 'componentsDif/RuleContent'

總結(jié)

總而言之,核心思想就是跟進(jìn)編譯命令傳入環(huán)境變量,利用環(huán)境變量和別名的配置來差異化打包。比較難的是如何控制組件的顆粒度,如何拆分組件,這個(gè)需要跟據(jù)需求的不同來實(shí)際定制。

以上就是基于Vue-cli的一套代碼支持多個(gè)項(xiàng)目的詳細(xì)內(nèi)容,更多關(guān)于Vue-cli的一套代碼支持多個(gè)項(xiàng)目的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue3(二)集成Ant Design Vue

    Vue3(二)集成Ant Design Vue

    上一篇文章我們介紹了利用Vue3 創(chuàng)建Vue CLI 項(xiàng)目(一),接下來就來看看Vue3集成Ant Design Vue 的相關(guān)資料,需要的小伙伴可以參考一下文章的具體內(nèi)容
    2021-10-10
  • 解決vant-UI庫修改樣式無效的問題

    解決vant-UI庫修改樣式無效的問題

    這篇文章主要介紹了解決vant-UI庫修改樣式無效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 公共Hooks封裝文件下載useDownloadFile實(shí)例詳解

    公共Hooks封裝文件下載useDownloadFile實(shí)例詳解

    這篇文章主要為大家介紹了公共Hooks封裝文件下載useDownloadFile實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • vue+elementUI實(shí)現(xiàn)分頁效果

    vue+elementUI實(shí)現(xiàn)分頁效果

    這篇文章主要為大家詳細(xì)介紹了vue+elementUI實(shí)現(xiàn)分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Vue過濾器(filter)實(shí)現(xiàn)及應(yīng)用場景詳解

    Vue過濾器(filter)實(shí)現(xiàn)及應(yīng)用場景詳解

    在Vue中使用過濾器(Filters)來渲染數(shù)據(jù)是一種很有趣的方式,下面這篇文章主要給大家介紹了關(guān)于Vue過濾器(filter)實(shí)現(xiàn)及應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • vue計(jì)算屬性及函數(shù)的選擇

    vue計(jì)算屬性及函數(shù)的選擇

    這篇文章主要介紹了vue計(jì)算屬性及函數(shù)的選擇,文章圍繞主題的相關(guān)資料展開詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • 用vue和node寫的簡易購物車實(shí)現(xiàn)

    用vue和node寫的簡易購物車實(shí)現(xiàn)

    這篇文章主要介紹了用vue和node寫的簡易購物車實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Vue.js中使用components組件的實(shí)例講解

    Vue.js中使用components組件的實(shí)例講解

    這篇文章主要介紹了Vue.js中使用components組件的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出導(dǎo)入實(shí)戰(zhàn)案例

    Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出導(dǎo)入實(shí)戰(zhàn)案例

    我們經(jīng)常需要在Vue搭建的后臺(tái)管理系統(tǒng)里進(jìn)行數(shù)據(jù)導(dǎo)入導(dǎo)出等操作,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出導(dǎo)入實(shí)戰(zhàn)案例的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 如何修改vue-treeSelect的高度

    如何修改vue-treeSelect的高度

    這篇文章主要介紹了如何修改vue-treeSelect的高度,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

游戏| 镇宁| 吉木乃县| 同仁县| 镇原县| 根河市| 惠来县| 阳谷县| 永定县| 特克斯县| 桦川县| 涟源市| 丰镇市| 新绛县| 广德县| 扶绥县| 巴东县| 聂荣县| 革吉县| 皮山县| 阿鲁科尔沁旗| 肇庆市| 寿阳县| 元阳县| 茂名市| 金山区| 汾阳市| 喜德县| 桑植县| 高密市| 河南省| 定西市| 潼南县| 封开县| 东乡族自治县| 青海省| 陈巴尔虎旗| 五莲县| 安康市| 天等县| 高碑店市|