# Vue3+vite+ts 基於Qiankun的微服務框架設計 ###### tags: `Vue-cli`、`Vue3` ### 關於Qiankun qiankun 是一個基於 single-spa 而衍生出來的套件,由螞蟻金流開發,主要透過 html-rntry 技術崁入到主應用,並透過自身沙箱設計切開各微服務。 ### 崁入方法 專案會區分為主應用與子應用,主應用為主要呈現的畫面;子應用及微服務,為各自功能獨立的專案。畫面對應方式主要以路由對應為主,故在崁入微服務時必須給予獨立路由 * #### 主應用 安裝 qiankun 套件,並針對要崁入的畫面給予頁面 or 彈窗,並給他獨立路由。![](https://i.imgur.com/d1r0jk6.png) 使用 :page* 為了可以吃到微服務下所有路由對應 微服務崁入設定: ![](https://i.imgur.com/DSe5u35.png) onGlobalStateChange 為微服務傳向主應用的 function 呼叫,下方 loadMicroApp 為 qiankun 的動態載入方式 name:該微服務名稱(建議設定可識別的名稱) entry:該微服務程式進入點 container:渲染在畫面的 id or class 對應 props:由主應用要給微服務的參數傳遞 * #### 子應用 vite 使用可下載 vite-plugin-qiankun 套件,安裝完之後該套件會在全域創建一個 qiankunWindow 可供使用,在 main.ts 即可依據 qiankunWindow.__ POWERED_BY_QIANKUN __ 來判斷是否使用微服務掛載,透過此方式可以切割出直連方式,利於本地直接開啟開發,以及線上掛載版本。 ![](https://i.imgur.com/fZnuOrW.png) 設定完成之後則需設定對應路由 ![](https://i.imgur.com/eA2C4nP.png) 以上設定完之後即可由主應用崁入子應用 附註: qiankun 崁入不像 iframe 是強分割,CSS 是會互相影響的,所以要特別注意命名。 api呼叫時,要注意 domain 不同會產生跨域的問題