項目地址javascript
Puzzle 是基於 Vue 和 Webpack4 實現的一種項目結構;業務模塊能夠像拼圖同樣與架構模塊組合,造成不一樣的系統,而這一切都是能夠在生產環境熱插拔的;這意味着你能夠隨時向你的系統添加新的功能模塊,甚至改版整個系統,而不須要全量替換整個項目。css
此外當多個項目使用此架構開發,即便模塊是由不一樣的項目打包出來的,也能夠在生成環境進行快速組合,模塊能夠很是簡單的進行復用。html
umd
模塊的方式用 webpack
打包出來window
對象上附加該模塊對象安裝依賴前端
npm install
構建第三方依賴java
npm run dll
運行webpack
npm start
安裝依賴git
npm install
構建第三方依賴github
npm run dll
構建,在這步你能夠選擇須要打包的基座模塊和業務模塊方便進行靈活組合web
npm run build
前端項目根據後端菜單請求進行模塊加載,如本項目中後端請求返回格式爲(數據來自阿里雲):數據庫
[ { id: "elastic", name: "彈性計算", leaf: false, children: [ { id: "ecs", name: "雲服務器 ECS", leaf: true, page: "/ecs", puzzle: "elastic" }, // ... ], icon: "aperture", puzzle: "elastic" }, { id: "database", name: "數據庫", leaf: false, children: [ // ... ], icon: "aperture", puzzle: "database" }, // ... ]
規定以第一級目錄爲模塊目錄(這裏看本身的需求能夠對項目進行修改)
固模塊 ID 爲 elastic、database 等,系統會在生產環境對全部子系統的入口文件進行請求,嘗試加載模塊,並生成路由;
因此經過不一樣用戶的不一樣業務模塊返回結果,能夠進行不一樣模塊的加載,從而進行權限控制;
同理經過不一樣用戶的不一樣基座模塊返回結果,能夠進行不一樣基座的加載,從而進行灰度測試等操做(目前系統所用基座是寫在public/config.js中,固此條僅做參考,項目自己能夠自由發揮);
npm run core
npm run frame --name="xxx"
npm run puzzle --name="xxx"
經過上述操做打包出的模塊,能夠直接新增到生產環境或者替換生產環境對應應模塊
此文件夾內包含webpack全部打包配置文件
config.js:項目配置,用於生產環境配置
index.html:HTML 模版
架構代碼
基座模塊代碼,多個基座模塊並列放置
業務模塊代碼,多個業務模塊並列放置
主要用於放置靜態資源,將會直接複製到生產環境static文件夾
由npm run dll
生成的第三方庫和公共代碼等
生產環境代碼按照必定結構放置,能夠自由升級替換對應模塊
由 npm run core
生成的架構代碼
由 npm run frame
生成的基座模塊代碼
由 npm run puzzle
生成的業務模塊代碼
靜態資源,包含打包生成的第三方庫和公共代碼等
此架構僅做爲平常工做的一個總結,具體業務場景,能夠進行修改,基座模塊等能夠進行自由發揮;業務模塊返回的信息也能夠按照需求增長;只要各個模塊遵循必定標準,並在core中進行統一處理,都可以達到可插拔的效果。
具體能夠看項目代碼,方便的話能夠給個star 項目地址