簡體   English   中英

模塊聯合如何選擇使用哪個依賴版本?

[英]How does module federation choose which dependency version to use?

我一直在玩這個模塊聯合示例,其中設置相對簡單 - 主機正在使用具有共享反應依賴關系的遠程模塊。 在本地運行時,我注意到盡管主機和遠程具有相同的 react/react-dom 版本,但遠程的版本始終是下載的版本。

根據我的研究,模塊聯合似乎會選擇共享依賴項的“最佳”版本,但我很驚訝在兩者具有相同版本的情況下會選擇遠程版本。 這個決定是如何做出的? 有沒有辦法強制在這種情況下使用主機的版本?

基本上,當您的主機啟動時,它會將它擁有的所有版本注冊到共享的 scope 中。 每次從遠程加載remoteEntry.js時,遠程也會將它們的版本添加到同一個 scope,但前提是該確切版本不存在。

例如,如果主機在version 1.0.0共享module-a -a。 當主機加載時,它會將module-a:1.0.0放入共享上下文中。 如果遠程也共享module-a:1.0.0它不會把它放在上下文中,因為它已經在那里了。 如果主機正在共享module-a:1.0.1 ,那么上下文現在將有兩個版本:來自主機的module-a:1.0.0和來自遠程module-a:1.0.1

在這一點上,我們只是在談論注冊......我們還沒有選擇使用哪個版本,但我們正在注冊從所有遙控器和主機共享的所有唯一版本。 基本上第一個注冊它的人就贏了。

現在,當版本解析算法運行時......它將根據所有要求確定要使用哪個版本。 如果算法選擇模塊的1.0.0版本,那么它將 go 到 scope 並使用分配給版本1.0.0的任何模塊,在這種情況下將是來自主機的模塊,因為主機首先運行並且能夠先注冊它。 如果算法選擇1.0.1 ,它將使用遠程模塊。 如果多個遙控器提供1.0.1 ,那么它將使用首先將其注冊到 scope 的遙控器中的那個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM