Skip to content

TrieKai/micro-frontend-nextjs-ssr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

micro-frontend-nextjs-ssr

前置作業

如果要使用 module federation,需要在 next.config 配置幾個重要的屬性:

Container[host]:container

App1[remote]:app1

App2[remote]:app2

欄位名 型別 含義
name string 必填,即輸出的模組名,被遠端引用時路徑為${name}/${expose}
library object 宣告全域性變數的方式,name 為 umd 的 name
filename string 輸出的檔名
remotes object 引用遠端時的名稱及值,使用時以 key 值作為 name
exposes object 被遠端引用時可暴露的資源路徑及其別名
shared object 與其他應用之間可以共享的第三方依賴,使你的程式碼中不用重複載入同一份依賴

設定完 next.config 後,接著在 host app 裡引用 remote app 所 exposes 的資源,本專案是以 container app 當作 host,container 內的 _document.tsx 的設定如下:

import { patchSharing } from "@module-federation/nextjs-mf";

...

render() {
  return (
    <Html>
      {patchSharing()}
      <script src="http://localhost:3001/_next/static/remoteEntryMerged.js" />
      <script src="http://localhost:3002/_next/static/remoteEntryMerged.js" />
      ...
  }
}

Usage

const APP1 = (await import("app1/index")).default;
const APP2 = (await import("app2/index")).default;

...

  <APP1 />
  <APP2 />
  
...

Running the demo

About

Micro frontends with Next.js & module federation & ssr

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published