寫在最前
未有知識需要較真饲鄙,哪里寫的不對請指出;
此文章技術棧為vue强饮,vue全家桶了解下~由桌。
一、先拋出幾個問題
1.支撐多條生產線邮丰,部分功能需要多條生產線同步更新行您;
2.項目體量不斷增大,造成代碼不斷增加剪廉;
3.運營團隊需要快速得到一個功能包括(A,B,C)的產品而研發(fā)團隊只有(A,B)和(B,C)兩條生產線娃循。
二、解決方案
1斗蒋、拷貝源代碼
1)想用就拷貝去捌斧,在同一組織內沒有什么可保密的。
優(yōu)點:
1)簡單快捷泉沾,拷貝即可捞蚂。
缺點:
1)最原始的解決方案,帶有原始人平均年齡不超過35歲的基因遺傳跷究。
2姓迅、Git分支tag解決
1)不同的源碼分支或者tag,在有更改時對不同分支進行更改俊马,需要同步時進行分支合并丁存。
優(yōu)點:
1)實現(xiàn)簡單,會Git基本操作就可以完成柴我;
2)代碼微調方便解寝,只更改當前分支或者tag源碼即可。
缺點:
1)在茫茫多的分支和tag面前效率已經(jīng)離你而去了屯换;
2)需要重新開始一條生產線不知道選擇哪個分支作為基礎分支编丘;
3)多條分支同時升級一個功能模塊与学,合并分支時處理沖突難度比較大;
4)出現(xiàn)合并遺漏會造成公共功能升級不同步嘉抓;
5)基礎分支源碼在各分支中可能會被更改索守,最終造成當前分支無法同步主分支功能;
6)代碼變得越來越多抑片,后期維護成本極高卵佛;
7)會出現(xiàn)多條生產線對同一業(yè)務包進行更改最終造成業(yè)務包功能差異無法合并。
3敞斋、基于組件化解決方案
將核心代碼截汪,業(yè)務代碼分離成不同的項目并編譯發(fā)布到私有npm服務器上,不同生產線在使用時以資源包的形式進行引用植捎。
優(yōu)點:
1)使用端黑盒引用衙解,無權修改源碼不會造成公共代碼被修改;
2)不同業(yè)務包獨立開發(fā)維護焰枢,統(tǒng)一整合需求并更改蚓峦;
3)公共功能更新通知使用端更新相應包的版本即可。
缺點:
1)因為是黑盒調用济锄,各個資源包需要有完善的文檔暑椰,如果文檔不足會造成使用成本提高甚至無法使用;
2)需要建立一整套開發(fā)荐绝、發(fā)布一汽、維護流程控制體系,需要提供統(tǒng)一的資源包查詢平臺低滩;
3)資源包升級時兼容問題需要考慮召夹。
三、如何實現(xiàn)
1委造、技術棧
vue
,scss
,vuex
,vue-router
,npm
,webpack
,vue-cli
,cnpm私有服務器
各項細節(jié)不在這里一一贅述戳鹅。
2 、結構圖
3昏兆、基礎項目創(chuàng)建腳手架
npm install pper-vue-cli
ppercli
核心與腳手架源碼地址:https://github.com/dreamsleep11/pper