原文:www.yuque.com/xiezhongfu/…javascript
single-spa 框架你值得研究,源碼也比較簡單:www.yuque.com/xiezhongfu/…html
到底要不要微前端改造:mp.weixin.qq.com/s/ndNzkf1Gv…前端
隔離不一樣時期的代碼: 你有一個大型單頁面應用程序(SPA),參與開發的人來來每每比較多,多個迭代後業務代碼的差別比較明顯,應用的維護的成本比較高。
多個 spa 應用在一個上層 spa 中運行: 多個小 SPA 應用 獨立運行太浪費,合在一塊兒給打包和編譯帶來風險(一個應用出現問題致使整個前端應用運轉不起來)。
三大框架共存於一個應用: 能夠實現 react, vue, angular 共存在一個應用裏嗎?好比你前端寫了好多 vue 組件,你想直接用在 react 體系裏怎麼辦呢?single-spa 框架了解下:www.yuque.com/xiezhongfu/…vue
天下大事合久必分。除了能夠使用ES2015模塊,webpack和npm對代碼進行模塊化,還能夠引入新的獨立SPA,每一個SPA獨立開發或部署——這就是在前端成功引入了面向服務的架構(SOA)。java
react 應用中,router 能夠分發到不一樣的頁面。前端 historty 也能夠作到分發到不一樣的子應用。
這種技術方案其實對後端同窗來說已經很常見了,好比 nginx。react
面向服務的架構基本概念是服務,服務是一段孤立的代碼,只能經過 API 進行交互,服務能夠獨立開發/部署,這些服務之間是隔離的,是獨立的。 服務的概念須要和共享庫的概念區分下。共享庫是編譯打包代碼綁在一塊兒,好比前端的 react庫等,升級共享庫必須重複發版到 npm 倉庫。webpack
爲了隔離不一樣時期,不一樣前端業務模塊,對接的不一樣後臺應用等,強烈想拆分開(代碼拆分)。 面向服務的設計,公共代碼不是公共的依賴項,是經過獨立的服務,服務只是運行時加載。也正是由於是運行時加載,在應用啓動時若是同步加載過多的服務,性能可能會收到影響。在應用啓動後異步加載一些服務能夠減輕一些負擔。nginx
當用戶訪問到不一樣路由時,加載對應的代碼。隨着路由和業務代碼的增長,路由可能會變得比較大,每一個路由對應的代碼也會變得比較大。所以不能只使用基於路由的代碼拆分。基於路徑的拆分很不錯(好比使用動態加載),那如何從單純的靜態加載變成有動態加載的呢?(好比多入口打包後動態加載 後者 獨立應用打包)git
拆分完後基於 history 怎麼管理?singe-spa 源碼分析參見:www.yuque.com/xiezhongfu/…
單倉庫的實踐能夠參看 react 源碼倉庫對多個 package 的管理。把不一樣業務模塊放到不一樣的 package 管理。每個 package 是能夠單獨運行和部署的。web
更多內容參考:mp.weixin.qq.com/s/6-yjR_CsH…