基於umi-nest實現微前端子應用css
項目代碼 基於umi-nest實現微前端子應用前端
公衆號 《前端厚說》node
QQ小羣 713593204jquery
根據實際場景去探索更優的方案是咱們應該去積極面對的。那麼面對着愈來愈大型的項目。例如TOB
的前端開發,咱們每每會遇到一些困境git
隨着微前端的興起,慢慢業內開始對之進行探索,不斷的挖坑踩坑。針對以上或者不只僅是以上的痛點。咱們決定嘗試以小組
爲單位,集體實踐。那麼咱們須要面對的問題就來了github
要求實現一個應用裏包含其餘的子應用這種效果,「不起眼」 的iframe 以及單頁面應用等等都可以實現這種目的。web
爲了不page之間互相影響,每一個page採用統一公共的iframe加載。公共的iframe由框架設計提供相關API支撐,好比,提示、通訊等。面試
在採用iframe來加載帶來的一些問題:數據庫
最初是jquery技術棧,不具可行性,潛在問題太多,好比:同一個頁面須要在多個區域屢次展現,隨着功能的疊加,選擇器效率大大下降,樣式的互相影響也不可避免。後端
業內已經有開發者對之探索,咱們重點採起qiankun
這也是踩在巨人的肩膀上。那麼什麼是微前端
在前端的前一階段,咱們仍是僅僅切圖
而後後端進行套頁面。慢慢地慢慢地咱們開始進行先後端分離。慢慢的出現三大框架,也是主流的框架。前端還得會PS
那在2016
年時候,被提出,也是和微服務概念
有殊途同歸之妙。
Techniques, strategies and recipes for building a modern web app with multiple teams that can ship features independently.
咱們能夠稱:微前端是一種方案,或者策略方法技術。咱們能夠實現由
不一樣的團隊
不一樣的技術
構建統一化的現代web應用程序
即便咱們不在本身的項目實踐微前端,可是在面試
或者一些其餘的場景中,不免會說起,就像是TypeScript
同樣,凡是流行的,就是你們關注的。咱們可能會想獲得這樣一個效果
那麼既然有許多優點,咱們實際操做起來又會遇到什麼問題呢?好比說像是js代碼的隔離
css樣式的衝突
按需加載資源
。一些衝突咱們可想而知,是再所不免的。爲何這樣說,由於一個簡單的項目由不一樣的開發人員參與不免還會出現命名的衝突。
既然明確了咱們的目標,以及技術方案,以及設想到了可能帶來的優點與挑戰。咱們擬分析一下當前的需求
結合當前業內流行的技術棧,咱們選擇Reatc
結合 TypeScript
需求點 | 收益要求 |
---|---|
拆分解耦 | 頁面是頁面,組件拆分解耦,(例如像彈窗組件) |
學習成本 | 保持單頁面開發的體驗 |
統一技術棧 | 子應用禁止使用不一樣的技術棧開發 |
項目實現一個後臺的admin
管理後臺可以對數據進行操做
因爲是實踐項目咱們重點分析需求的技術可行性:使用 web
前端技術 ,利用MySQL
數據庫,以及TypeORM
進行數據實體的設計。在技術上可行的
在設計之初,咱們須要對子應用
的流程進行簡單的分析。
因爲微前端
的概念是由 後端微服務
直接或間接產生,而且保證每一個子應用可以獨立運行。那就須要一套可以提供服務的接口,以及前端一套前端頁面
後端接口選取當下NodeJS
的上層框架NestJS
。經調研,NestJS
是一個精美的node.js 框架,考慮到使用原生的NodeJS
是有必定的成本在,包括一些 錯誤捕捉監控等等
。NEST 是構建高效,可擴展的 NodeJS 服務器端應用程序的框架。
TS
語法,上手成本較高前端的框架以及技術層出不窮,吸收他人優秀的開發實踐是一件比較不錯的事情。國內阿里鑑於項目的實踐通常爲
因此咱們打算採用UmiJS
,有更好的數據流管理,更好的結合TS
與 antd
。但在實踐的過程當中不免會遇到一些坑
。不過能夠積極擁抱社區
前端 | 後端 |
---|---|
基於umi生態的前端方案 | 基於NodeJS的後端方案 |
根據上述的需求分析
咱們的系統暫時分爲幾個模塊
實踐是檢驗真理的惟一標準 , 實際開發的過程即是個遇到問題
解決問題
的過程。故擬定一份開發時間進度表
日期 | 前端進度 | 後端進度 |
---|---|---|
2020-06-17 | 初始化前端項目 | 初始化後端項目 |
子應用須要獨立運行
子應用包含登陸頁面
子應用包含兩個模塊 模塊以前要求可以通訊
子應用必須 存在表單、表格、彈出框、圖片
功能上要有數據的增刪改查一些基本開發需求
子應用盡可能引入插件
子應用須要同主應用進行通訊
例如用戶的登陸狀態,主應用登陸上,子應用應該自動登陸
子應用能夠同子應用通訊
2020-06-17 第一次擬定項目的策劃內容