@modern-js/main-doc 2.69.4 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/docs/en/{_meta.json → _nav.json} +5 -1
  2. package/docs/en/apis/app/commands.mdx +2 -3
  3. package/docs/en/apis/app/hooks/src/entry.mdx +1 -5
  4. package/docs/en/apis/app/hooks/src/entry.server.mdx +4 -5
  5. package/docs/en/apis/app/hooks/src/routes.mdx +2 -2
  6. package/docs/en/apis/app/runtime/_meta.json +0 -18
  7. package/docs/en/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  8. package/docs/en/apis/app/runtime/router/router.mdx +1 -1
  9. package/docs/en/apis/app/runtime/utility/css-in-js.mdx +3 -2
  10. package/docs/en/community/blog/v2-release-note.mdx +0 -2
  11. package/docs/en/community/contributing-guide.mdx +10 -12
  12. package/docs/en/components/bff-upload.mdx +16 -12
  13. package/docs/en/components/build-output.mdx +45 -0
  14. package/docs/en/components/debug-app.mdx +1 -1
  15. package/docs/en/components/enable-bff-caution.mdx +2 -2
  16. package/docs/en/components/enable-bff.mdx +38 -8
  17. package/docs/en/components/enable-ssg.mdx +48 -0
  18. package/docs/en/components/entry-scan-logic.mdx +7 -0
  19. package/docs/en/components/init-app.mdx +40 -17
  20. package/docs/en/components/international/install-command.mdx +9 -0
  21. package/docs/en/components/international/introduce.mdx +2 -0
  22. package/docs/en/components/module-federation.mdx +4 -4
  23. package/docs/en/components/new-entry-tooltip.mdx +0 -0
  24. package/docs/en/components/nodeVersion.mdx +2 -6
  25. package/docs/en/components/prerequisites.mdx +1 -1
  26. package/docs/en/components/ua-polyfill.mdx +16 -12
  27. package/docs/en/components/upgrade-browserslist.mdx +0 -0
  28. package/docs/en/configure/_meta.json +7 -8
  29. package/docs/en/configure/app/bff/cross-project.mdx +24 -0
  30. package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
  31. package/docs/en/configure/app/dev/server.mdx +103 -0
  32. package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
  33. package/docs/en/configure/app/html/app-icon.mdx +1 -23
  34. package/docs/en/configure/app/output/inline-scripts.mdx +1 -1
  35. package/docs/en/configure/app/output/override-browserslist.mdx +6 -4
  36. package/docs/en/configure/app/output/source-map.mdx +6 -3
  37. package/docs/en/configure/app/output/ssg.mdx +12 -43
  38. package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
  39. package/docs/en/configure/app/performance/build-cache.mdx +0 -4
  40. package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
  41. package/docs/en/configure/app/resolve/alias.mdx +13 -0
  42. package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
  43. package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
  44. package/docs/en/configure/app/resolve/extensions.mdx +18 -0
  45. package/docs/en/configure/app/runtime/0-intro.mdx +2 -51
  46. package/docs/en/configure/app/security/check-syntax.mdx +1 -1
  47. package/docs/en/configure/app/server/port.mdx +1 -21
  48. package/docs/en/configure/app/server/rsc.mdx +30 -0
  49. package/docs/en/configure/app/server/ssr.mdx +20 -9
  50. package/docs/en/configure/app/source/decorators.mdx +4 -2
  51. package/docs/en/configure/app/source/entries.mdx +0 -2
  52. package/docs/en/configure/app/source/main-entry-name.mdx +4 -4
  53. package/docs/en/configure/app/source/transform-import.mdx +1 -59
  54. package/docs/en/configure/app/tools/bundler-chain.mdx +5 -5
  55. package/docs/en/configure/app/tools/css-extract.mdx +1 -1
  56. package/docs/en/configure/app/tools/dev-server.mdx +14 -248
  57. package/docs/en/configure/app/tools/html-plugin.mdx +3 -3
  58. package/docs/en/configure/app/tools/lightningcss-loader.mdx +0 -1
  59. package/docs/en/configure/app/tools/swc.mdx +1 -43
  60. package/docs/en/configure/app/usage.mdx +7 -17
  61. package/docs/en/guides/_meta.json +1 -2
  62. package/docs/en/guides/advanced-features/_meta.json +6 -0
  63. package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -7
  64. package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
  65. package/docs/en/guides/advanced-features/bff/frameworks.mdx +1 -1
  66. package/docs/en/guides/advanced-features/bff/function.mdx +2 -6
  67. package/docs/en/guides/advanced-features/bff/sdk.mdx +3 -3
  68. package/docs/en/guides/advanced-features/build-performance.mdx +23 -26
  69. package/docs/en/guides/advanced-features/compatibility.mdx +53 -9
  70. package/docs/en/guides/advanced-features/international/_meta.json +11 -0
  71. package/docs/en/guides/advanced-features/international/advanced.mdx +193 -0
  72. package/docs/en/guides/advanced-features/international/api.mdx +400 -0
  73. package/docs/en/guides/advanced-features/international/basic.mdx +417 -0
  74. package/docs/en/guides/advanced-features/international/best-practices.mdx +135 -0
  75. package/docs/en/guides/advanced-features/international/configuration.mdx +437 -0
  76. package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
  77. package/docs/en/guides/advanced-features/international/quick-start.mdx +154 -0
  78. package/docs/en/guides/advanced-features/international/resource-loading.mdx +417 -0
  79. package/docs/en/guides/advanced-features/international/routing.mdx +212 -0
  80. package/docs/en/guides/advanced-features/international.mdx +37 -0
  81. package/docs/en/guides/advanced-features/low-level.mdx +21 -16
  82. package/docs/en/guides/advanced-features/page-performance/code-split.mdx +4 -4
  83. package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  84. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
  85. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
  86. package/docs/en/guides/advanced-features/rspack-start.mdx +2 -22
  87. package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
  88. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -34
  89. package/docs/en/guides/advanced-features/web-server.mdx +82 -299
  90. package/docs/en/guides/basic-features/_meta.json +6 -1
  91. package/docs/en/guides/basic-features/css/css-in-js.mdx +46 -11
  92. package/docs/en/guides/basic-features/css/css-modules.mdx +5 -17
  93. package/docs/en/guides/basic-features/css/css.mdx +3 -3
  94. package/docs/en/guides/basic-features/css/tailwindcss.mdx +5 -89
  95. package/docs/en/guides/basic-features/data/data-cache.mdx +5 -1
  96. package/docs/en/guides/basic-features/data/data-fetch.mdx +4 -4
  97. package/docs/en/guides/basic-features/data/data-write.mdx +2 -2
  98. package/docs/en/guides/basic-features/debug/mock.mdx +4 -1
  99. package/docs/en/guides/basic-features/debug/proxy.mdx +0 -8
  100. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +5 -5
  101. package/docs/en/guides/basic-features/deploy.mdx +25 -18
  102. package/docs/en/guides/basic-features/env-vars.mdx +1 -1
  103. package/docs/en/guides/basic-features/html.mdx +1 -1
  104. package/docs/en/guides/basic-features/output-files.mdx +3 -3
  105. package/docs/en/guides/basic-features/render/_meta.json +1 -1
  106. package/docs/en/guides/basic-features/render/before-render.mdx +16 -23
  107. package/docs/en/guides/basic-features/render/overview.mdx +51 -0
  108. package/docs/en/guides/basic-features/render/rsc.mdx +394 -0
  109. package/docs/en/guides/basic-features/render/ssg.mdx +26 -62
  110. package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -6
  111. package/docs/en/guides/basic-features/render/ssr.mdx +31 -31
  112. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +29 -9
  113. package/docs/en/guides/basic-features/routes/_meta.json +1 -0
  114. package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
  115. package/docs/en/guides/basic-features/{routes.mdx → routes/routes.mdx} +7 -110
  116. package/docs/en/guides/basic-features/static-assets/json-files.mdx +21 -3
  117. package/docs/en/guides/basic-features/static-assets.mdx +2 -2
  118. package/docs/en/guides/concept/builder.mdx +24 -9
  119. package/docs/en/guides/concept/entries.mdx +139 -147
  120. package/docs/en/guides/get-started/glossary.mdx +0 -18
  121. package/docs/en/guides/get-started/introduction.mdx +1 -4
  122. package/docs/en/guides/get-started/quick-start.mdx +8 -73
  123. package/docs/en/guides/get-started/tech-stack.mdx +7 -25
  124. package/docs/en/guides/get-started/upgrade.mdx +30 -23
  125. package/docs/en/guides/topic-detail/_meta.json +0 -12
  126. package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -1
  127. package/docs/en/guides/topic-detail/module-federation/application.mdx +16 -15
  128. package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
  129. package/docs/en/guides/topic-detail/module-federation/introduce.mdx +5 -4
  130. package/docs/en/guides/topic-detail/module-federation/ssr.mdx +50 -2
  131. package/docs/en/guides/topic-detail/module-federation/usage.mdx +10 -30
  132. package/docs/en/guides/troubleshooting/builder.mdx +3 -82
  133. package/docs/en/guides/troubleshooting/cli.mdx +6 -30
  134. package/docs/en/guides/troubleshooting/dependencies.mdx +22 -22
  135. package/docs/en/plugin/cli-plugins/api.mdx +4 -5
  136. package/docs/en/plugin/cli-plugins/migration.mdx +33 -48
  137. package/docs/en/plugin/introduction.mdx +39 -27
  138. package/docs/en/plugin/official/_meta.json +0 -5
  139. package/docs/en/plugin/official/cli-plugins/_meta.json +1 -1
  140. package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  141. package/docs/en/plugin/official/cli-plugins.mdx +0 -2
  142. package/docs/en/plugin/plugin-system.mdx +68 -61
  143. package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
  144. package/docs/en/plugin/runtime-plugins/migration.mdx +29 -20
  145. package/docs/en/tutorials/_meta.json +0 -10
  146. package/docs/en/tutorials/examples/csr-auth.mdx +1 -1
  147. package/docs/en/tutorials/foundations/introduction.mdx +9 -25
  148. package/docs/zh/{_meta.json → _nav.json} +10 -6
  149. package/docs/zh/apis/app/commands.mdx +2 -3
  150. package/docs/zh/apis/app/hooks/src/entry.mdx +1 -5
  151. package/docs/zh/apis/app/hooks/src/entry.server.mdx +4 -5
  152. package/docs/zh/apis/app/hooks/src/routes.mdx +2 -2
  153. package/docs/zh/apis/app/runtime/_meta.json +0 -18
  154. package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  155. package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +3 -2
  156. package/docs/zh/community/blog/v2-release-note.mdx +0 -2
  157. package/docs/zh/community/contributing-guide.mdx +10 -12
  158. package/docs/zh/components/auto-upgrade.mdx +0 -0
  159. package/docs/zh/components/bff-upload.mdx +8 -5
  160. package/docs/zh/components/build-output.mdx +45 -0
  161. package/docs/zh/components/debug-app.mdx +1 -1
  162. package/docs/zh/components/enable-bff-caution.mdx +1 -1
  163. package/docs/zh/components/enable-bff.mdx +37 -8
  164. package/docs/zh/components/enable-ssg.mdx +47 -0
  165. package/docs/zh/components/entry-scan-logic.mdx +7 -0
  166. package/docs/zh/components/init-app.mdx +40 -18
  167. package/docs/zh/components/international/install-command.mdx +8 -0
  168. package/docs/zh/components/international/introduce.mdx +2 -0
  169. package/docs/zh/components/international/platform-support.mdx +0 -0
  170. package/docs/zh/components/module-federation.mdx +4 -4
  171. package/docs/zh/components/new-entry-tooltip.mdx +0 -0
  172. package/docs/zh/components/nodeVersion.mdx +3 -7
  173. package/docs/zh/components/prerequisites.mdx +1 -1
  174. package/docs/zh/components/self-route-example.mdx +3 -3
  175. package/docs/zh/components/ua-polyfill.mdx +11 -6
  176. package/docs/zh/components/upgrade-browserslist.mdx +0 -0
  177. package/docs/zh/configure/_meta.json +7 -8
  178. package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
  179. package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
  180. package/docs/zh/configure/app/dev/server.mdx +104 -0
  181. package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
  182. package/docs/zh/configure/app/html/app-icon.mdx +1 -23
  183. package/docs/zh/configure/app/output/inline-scripts.mdx +1 -1
  184. package/docs/zh/configure/app/output/override-browserslist.mdx +3 -3
  185. package/docs/zh/configure/app/output/source-map.mdx +10 -3
  186. package/docs/zh/configure/app/output/ssg.mdx +13 -45
  187. package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
  188. package/docs/zh/configure/app/performance/build-cache.mdx +0 -4
  189. package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
  190. package/docs/zh/configure/app/resolve/alias.mdx +13 -0
  191. package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
  192. package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
  193. package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
  194. package/docs/zh/configure/app/runtime/0-intro.mdx +2 -53
  195. package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
  196. package/docs/zh/configure/app/server/port.mdx +2 -21
  197. package/docs/zh/configure/app/server/rsc.mdx +30 -0
  198. package/docs/zh/configure/app/server/ssr.mdx +21 -11
  199. package/docs/zh/configure/app/source/decorators.mdx +4 -4
  200. package/docs/zh/configure/app/source/entries.mdx +0 -2
  201. package/docs/zh/configure/app/source/main-entry-name.mdx +4 -4
  202. package/docs/zh/configure/app/source/transform-import.mdx +1 -59
  203. package/docs/zh/configure/app/tools/bundler-chain.mdx +6 -6
  204. package/docs/zh/configure/app/tools/css-extract.mdx +1 -1
  205. package/docs/zh/configure/app/tools/dev-server.mdx +14 -248
  206. package/docs/zh/configure/app/tools/html-plugin.mdx +3 -2
  207. package/docs/zh/configure/app/tools/lightningcss-loader.mdx +0 -1
  208. package/docs/zh/configure/app/tools/swc.mdx +1 -43
  209. package/docs/zh/configure/app/usage.mdx +8 -18
  210. package/docs/zh/guides/_meta.json +5 -1
  211. package/docs/zh/guides/advanced-features/_meta.json +6 -1
  212. package/docs/zh/guides/advanced-features/bff/cross-project.mdx +8 -16
  213. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +25 -8
  214. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +1 -1
  215. package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
  216. package/docs/zh/guides/advanced-features/bff/sdk.mdx +4 -4
  217. package/docs/zh/guides/advanced-features/build-performance.mdx +23 -30
  218. package/docs/zh/guides/advanced-features/compatibility.mdx +44 -0
  219. package/docs/zh/guides/advanced-features/international/_meta.json +11 -0
  220. package/docs/zh/guides/advanced-features/international/advanced.mdx +193 -0
  221. package/docs/zh/guides/advanced-features/international/api.mdx +400 -0
  222. package/docs/zh/guides/advanced-features/international/basic.mdx +416 -0
  223. package/docs/zh/guides/advanced-features/international/best-practices.mdx +135 -0
  224. package/docs/zh/guides/advanced-features/international/configuration.mdx +441 -0
  225. package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
  226. package/docs/zh/guides/advanced-features/international/quick-start.mdx +149 -0
  227. package/docs/zh/guides/advanced-features/international/resource-loading.mdx +417 -0
  228. package/docs/zh/guides/advanced-features/international/routing.mdx +212 -0
  229. package/docs/zh/guides/advanced-features/international.mdx +36 -0
  230. package/docs/zh/guides/advanced-features/low-level.mdx +21 -16
  231. package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +3 -3
  232. package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  233. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
  234. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
  235. package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
  236. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +63 -35
  237. package/docs/zh/guides/advanced-features/web-server.mdx +79 -300
  238. package/docs/zh/guides/basic-features/_meta.json +6 -1
  239. package/docs/zh/guides/basic-features/css/css-in-js.mdx +40 -5
  240. package/docs/zh/guides/basic-features/css/css-modules.mdx +6 -17
  241. package/docs/zh/guides/basic-features/css/css.mdx +2 -2
  242. package/docs/zh/guides/basic-features/css/tailwindcss.mdx +6 -90
  243. package/docs/zh/guides/basic-features/data/data-cache.mdx +8 -5
  244. package/docs/zh/guides/basic-features/data/data-fetch.mdx +6 -5
  245. package/docs/zh/guides/basic-features/data/data-write.mdx +4 -4
  246. package/docs/zh/guides/basic-features/debug/mock.mdx +4 -1
  247. package/docs/zh/guides/basic-features/debug/proxy.mdx +0 -8
  248. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +6 -6
  249. package/docs/zh/guides/basic-features/deploy.mdx +24 -20
  250. package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
  251. package/docs/zh/guides/basic-features/html.mdx +2 -2
  252. package/docs/zh/guides/basic-features/output-files.mdx +3 -3
  253. package/docs/zh/guides/basic-features/render/_meta.json +1 -1
  254. package/docs/zh/guides/basic-features/render/before-render.mdx +17 -24
  255. package/docs/zh/guides/basic-features/render/overview.mdx +52 -0
  256. package/docs/zh/guides/basic-features/render/rsc.mdx +413 -0
  257. package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
  258. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -5
  259. package/docs/zh/guides/basic-features/render/ssr.mdx +34 -31
  260. package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +34 -14
  261. package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
  262. package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
  263. package/docs/zh/guides/basic-features/{routes.mdx → routes/routes.mdx} +8 -114
  264. package/docs/zh/guides/basic-features/static-assets/json-files.mdx +21 -3
  265. package/docs/zh/guides/basic-features/static-assets.mdx +2 -2
  266. package/docs/zh/guides/basic-features/testing/cypress.mdx +5 -5
  267. package/docs/zh/guides/basic-features/testing/jest.mdx +12 -12
  268. package/docs/zh/guides/concept/builder.mdx +24 -9
  269. package/docs/zh/guides/concept/entries.mdx +95 -92
  270. package/docs/zh/guides/get-started/glossary.mdx +0 -18
  271. package/docs/zh/guides/get-started/introduction.mdx +1 -5
  272. package/docs/zh/guides/get-started/quick-start.mdx +5 -72
  273. package/docs/zh/guides/get-started/tech-stack.mdx +8 -26
  274. package/docs/zh/guides/get-started/upgrade.mdx +30 -23
  275. package/docs/zh/guides/topic-detail/_meta.json +0 -12
  276. package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -1
  277. package/docs/zh/guides/topic-detail/module-federation/application.mdx +18 -16
  278. package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
  279. package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +4 -4
  280. package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +51 -5
  281. package/docs/zh/guides/topic-detail/module-federation/usage.mdx +11 -32
  282. package/docs/zh/guides/troubleshooting/builder.mdx +3 -84
  283. package/docs/zh/guides/troubleshooting/cli.mdx +6 -30
  284. package/docs/zh/guides/troubleshooting/dependencies.mdx +23 -23
  285. package/docs/zh/guides/upgrade/_meta.json +1 -0
  286. package/docs/zh/guides/upgrade/config.mdx +809 -0
  287. package/docs/zh/guides/upgrade/entry.mdx +463 -0
  288. package/docs/zh/guides/upgrade/other.md +90 -0
  289. package/docs/zh/guides/upgrade/overview.mdx +36 -0
  290. package/docs/zh/guides/upgrade/tailwindcss.mdx +130 -0
  291. package/docs/zh/guides/upgrade/web-server.md +93 -0
  292. package/docs/zh/plugin/cli-plugins/api.mdx +4 -5
  293. package/docs/zh/plugin/cli-plugins/migration.mdx +30 -45
  294. package/docs/zh/plugin/introduction.mdx +36 -24
  295. package/docs/zh/plugin/official/_meta.json +0 -5
  296. package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -1
  297. package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  298. package/docs/zh/plugin/official/cli-plugins.mdx +0 -2
  299. package/docs/zh/plugin/plugin-system.mdx +45 -42
  300. package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
  301. package/docs/zh/plugin/runtime-plugins/migration.mdx +26 -17
  302. package/docs/zh/tutorials/_meta.json +0 -10
  303. package/docs/zh/tutorials/examples/csr-auth.mdx +1 -1
  304. package/docs/zh/tutorials/foundations/introduction.mdx +8 -25
  305. package/i18n.json +0 -16
  306. package/package.json +12 -12
  307. package/rspress.config.ts +5 -8
  308. package/src/components/ContentCard/index.module.scss +11 -7
  309. package/src/components/ContentCard/index.tsx +1 -1
  310. package/src/components/FeatureLayout/index.module.css +1 -1
  311. package/src/components/Footer/index.tsx +2 -14
  312. package/src/components/Footer/styles.module.scss +5 -5
  313. package/src/components/ListCard/index.tsx +1 -1
  314. package/src/components/RandomMemberList/index.tsx +1 -1
  315. package/src/components/RsbuildLink/index.tsx +1 -1
  316. package/src/components/Sandpack/index.tsx +1 -1
  317. package/src/custom.scss +15 -0
  318. package/src/i18n/enUS.ts +2 -4
  319. package/src/i18n/index.ts +1 -1
  320. package/src/i18n/zhCN.ts +2 -4
  321. package/src/index.ts +2 -1
  322. package/src/pages/index.module.scss +59 -41
  323. package/src/pages/index.tsx +9 -24
  324. package/docs/en/apis/app/hooks/server/index_.mdx +0 -10
  325. package/docs/en/apis/app/hooks/src/index_.mdx +0 -38
  326. package/docs/en/apis/app/hooks/src/stories.mdx +0 -16
  327. package/docs/en/apis/app/runtime/app/define-config.mdx +0 -67
  328. package/docs/en/apis/app/runtime/core/bootstrap.mdx +0 -74
  329. package/docs/en/apis/app/runtime/core/create-app.mdx +0 -49
  330. package/docs/en/apis/app/runtime/core/use-loader.mdx +0 -89
  331. package/docs/en/apis/app/runtime/core/use-module-apps.mdx +0 -140
  332. package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  333. package/docs/en/apis/app/runtime/model/Provider.mdx +0 -36
  334. package/docs/en/apis/app/runtime/model/auto-actions.mdx +0 -122
  335. package/docs/en/apis/app/runtime/model/connect.mdx +0 -146
  336. package/docs/en/apis/app/runtime/model/create-app.mdx +0 -75
  337. package/docs/en/apis/app/runtime/model/create-store.mdx +0 -61
  338. package/docs/en/apis/app/runtime/model/handle-effect.mdx +0 -107
  339. package/docs/en/apis/app/runtime/model/model_.mdx +0 -198
  340. package/docs/en/apis/app/runtime/model/use-local-model.mdx +0 -29
  341. package/docs/en/apis/app/runtime/model/use-model.mdx +0 -89
  342. package/docs/en/apis/app/runtime/model/use-static-model.mdx +0 -51
  343. package/docs/en/apis/app/runtime/model/use-store.mdx +0 -26
  344. package/docs/en/apis/app/runtime/ssr/pre-render.mdx +0 -96
  345. package/docs/en/apis/app/runtime/web-server/hook.mdx +0 -134
  346. package/docs/en/apis/app/runtime/web-server/middleware.mdx +0 -113
  347. package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +0 -167
  348. package/docs/en/components/bff-proxy-path-rewrite.mdx +0 -16
  349. package/docs/en/components/bff-proxy-principle.mdx +0 -1
  350. package/docs/en/components/builder.mdx +0 -3
  351. package/docs/en/components/create-bff-api-app.mdx +0 -25
  352. package/docs/en/components/custom-router-micro-frontend.mdx +0 -40
  353. package/docs/en/components/enable-micro-frontend.mdx +0 -30
  354. package/docs/en/components/enableSwc.mdx +0 -17
  355. package/docs/en/components/global-proxy-config.mdx +0 -85
  356. package/docs/en/components/global-proxy.mdx +0 -29
  357. package/docs/en/components/package-manager.mdx +0 -11
  358. package/docs/en/components/reduck-notify.mdx +0 -27
  359. package/docs/en/components/reduck-tip.mdx +0 -8
  360. package/docs/en/configure/app/auto-load-plugin.mdx +0 -66
  361. package/docs/en/configure/app/deploy/microFrontend.mdx +0 -53
  362. package/docs/en/configure/app/dev/port.mdx +0 -25
  363. package/docs/en/configure/app/dev/proxy.mdx +0 -9
  364. package/docs/en/configure/app/experiments/lazy-compilation.mdx +0 -106
  365. package/docs/en/configure/app/html/disable-html-folder.mdx +0 -46
  366. package/docs/en/configure/app/html/favicon-by-entries.mdx +0 -36
  367. package/docs/en/configure/app/html/inject-by-entries.mdx +0 -36
  368. package/docs/en/configure/app/html/meta-by-entries.mdx +0 -48
  369. package/docs/en/configure/app/html/tags-by-entries.mdx +0 -44
  370. package/docs/en/configure/app/html/template-by-entries.mdx +0 -33
  371. package/docs/en/configure/app/html/template-parameters-by-entries.mdx +0 -35
  372. package/docs/en/configure/app/html/title-by-entries.mdx +0 -37
  373. package/docs/en/configure/app/output/css-module-local-ident-name.mdx +0 -21
  374. package/docs/en/configure/app/output/disable-css-extract.mdx +0 -16
  375. package/docs/en/configure/app/output/disable-filename-hash.mdx +0 -16
  376. package/docs/en/configure/app/output/disable-minimize.mdx +0 -14
  377. package/docs/en/configure/app/output/disable-node-polyfill.mdx +0 -22
  378. package/docs/en/configure/app/output/disable-source-map.mdx +0 -31
  379. package/docs/en/configure/app/output/enable-asset-fallback.mdx +0 -36
  380. package/docs/en/configure/app/output/enable-inline-scripts.mdx +0 -22
  381. package/docs/en/configure/app/output/enable-inline-styles.mdx +0 -22
  382. package/docs/en/configure/app/output/enable-latest-decorators.mdx +0 -14
  383. package/docs/en/configure/app/performance/transform-lodash.mdx +0 -52
  384. package/docs/en/configure/app/runtime/master-app.mdx +0 -36
  385. package/docs/en/configure/app/runtime/state.mdx +0 -52
  386. package/docs/en/configure/app/source/disable-entry-dirs.mdx +0 -38
  387. package/docs/en/configure/app/source/enable-custom-entry.mdx +0 -68
  388. package/docs/en/configure/app/source/module-scopes.mdx +0 -72
  389. package/docs/en/configure/app/source/resolve-extension-prefix.mdx +0 -55
  390. package/docs/en/configure/app/source/resolve-main-fields.mdx +0 -46
  391. package/docs/en/configure/app/tools/esbuild.mdx +0 -44
  392. package/docs/en/configure/app/tools/pug.mdx +0 -54
  393. package/docs/en/configure/app/tools/styled-components.mdx +0 -55
  394. package/docs/en/configure/app/tools/tailwindcss.mdx +0 -98
  395. package/docs/en/configure/app/tools/terser.mdx +0 -58
  396. package/docs/en/configure/app/tools/ts-loader.mdx +0 -76
  397. package/docs/en/configure/app/tools/webpack-chain.mdx +0 -249
  398. package/docs/en/configure/app/tools/webpack.mdx +0 -305
  399. package/docs/en/guides/deprecated.md +0 -17
  400. package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -27
  401. package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +0 -290
  402. package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -298
  403. package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  404. package/docs/en/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -26
  405. package/docs/en/guides/topic-detail/model/_meta.json +0 -14
  406. package/docs/en/guides/topic-detail/model/auto-actions.mdx +0 -85
  407. package/docs/en/guides/topic-detail/model/computed-state.mdx +0 -148
  408. package/docs/en/guides/topic-detail/model/define-model.mdx +0 -62
  409. package/docs/en/guides/topic-detail/model/faq.mdx +0 -35
  410. package/docs/en/guides/topic-detail/model/manage-effects.mdx +0 -247
  411. package/docs/en/guides/topic-detail/model/model-communicate.mdx +0 -217
  412. package/docs/en/guides/topic-detail/model/performance.mdx +0 -167
  413. package/docs/en/guides/topic-detail/model/quick-start.mdx +0 -117
  414. package/docs/en/guides/topic-detail/model/redux-integration.mdx +0 -20
  415. package/docs/en/guides/topic-detail/model/typescript-best-practice.mdx +0 -68
  416. package/docs/en/guides/topic-detail/model/use-model.mdx +0 -243
  417. package/docs/en/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  418. package/docs/en/plugin/official/cli-plugins/plugin-swc.mdx +0 -363
  419. package/docs/en/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  420. package/docs/en/plugin/official/rsbuild-plugins/_meta.json +0 -1
  421. package/docs/en/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -205
  422. package/docs/en/plugin/official/rsbuild-plugins.mdx +0 -3
  423. package/docs/en/tutorials/first-app/c01-start.mdx +0 -99
  424. package/docs/en/tutorials/first-app/c02-component.mdx +0 -60
  425. package/docs/en/tutorials/first-app/c03-css.mdx +0 -324
  426. package/docs/en/tutorials/first-app/c04-routes.mdx +0 -172
  427. package/docs/en/tutorials/first-app/c05-loader.mdx +0 -87
  428. package/docs/en/tutorials/first-app/c06-model.mdx +0 -278
  429. package/docs/en/tutorials/first-app/c07-container.mdx +0 -281
  430. package/docs/en/tutorials/first-app/c08-entries.mdx +0 -135
  431. package/docs/zh/apis/app/hooks/server/index_.mdx +0 -10
  432. package/docs/zh/apis/app/hooks/src/index_.mdx +0 -39
  433. package/docs/zh/apis/app/hooks/src/stories.mdx +0 -16
  434. package/docs/zh/apis/app/runtime/app/define-config.mdx +0 -67
  435. package/docs/zh/apis/app/runtime/core/bootstrap.mdx +0 -74
  436. package/docs/zh/apis/app/runtime/core/create-app.mdx +0 -35
  437. package/docs/zh/apis/app/runtime/core/use-loader.mdx +0 -89
  438. package/docs/zh/apis/app/runtime/core/use-module-apps.mdx +0 -179
  439. package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  440. package/docs/zh/apis/app/runtime/model/Provider.mdx +0 -36
  441. package/docs/zh/apis/app/runtime/model/auto-actions.mdx +0 -122
  442. package/docs/zh/apis/app/runtime/model/connect.mdx +0 -143
  443. package/docs/zh/apis/app/runtime/model/create-app.mdx +0 -75
  444. package/docs/zh/apis/app/runtime/model/create-store.mdx +0 -61
  445. package/docs/zh/apis/app/runtime/model/handle-effect.mdx +0 -108
  446. package/docs/zh/apis/app/runtime/model/model_.mdx +0 -201
  447. package/docs/zh/apis/app/runtime/model/use-local-model.mdx +0 -29
  448. package/docs/zh/apis/app/runtime/model/use-model.mdx +0 -89
  449. package/docs/zh/apis/app/runtime/model/use-static-model.mdx +0 -49
  450. package/docs/zh/apis/app/runtime/model/use-store.mdx +0 -26
  451. package/docs/zh/apis/app/runtime/ssr/pre-render.mdx +0 -96
  452. package/docs/zh/apis/app/runtime/web-server/hook.mdx +0 -136
  453. package/docs/zh/apis/app/runtime/web-server/middleware.mdx +0 -114
  454. package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +0 -165
  455. package/docs/zh/components/bff-proxy-path-rewrite.mdx +0 -16
  456. package/docs/zh/components/bff-proxy-principle.mdx +0 -1
  457. package/docs/zh/components/builder.mdx +0 -3
  458. package/docs/zh/components/create-bff-api-app.mdx +0 -25
  459. package/docs/zh/components/custom-router-micro-frontend.mdx +0 -40
  460. package/docs/zh/components/enable-micro-frontend.mdx +0 -30
  461. package/docs/zh/components/enableSwc.mdx +0 -17
  462. package/docs/zh/components/global-proxy-config.mdx +0 -85
  463. package/docs/zh/components/global-proxy.mdx +0 -29
  464. package/docs/zh/components/package-manager.mdx +0 -11
  465. package/docs/zh/components/reduck-notify.mdx +0 -27
  466. package/docs/zh/components/reduck-tip.mdx +0 -8
  467. package/docs/zh/configure/app/auto-load-plugin.mdx +0 -66
  468. package/docs/zh/configure/app/deploy/microFrontend.mdx +0 -55
  469. package/docs/zh/configure/app/dev/port.mdx +0 -25
  470. package/docs/zh/configure/app/dev/proxy.mdx +0 -9
  471. package/docs/zh/configure/app/experiments/lazy-compilation.mdx +0 -105
  472. package/docs/zh/configure/app/html/disable-html-folder.mdx +0 -45
  473. package/docs/zh/configure/app/html/favicon-by-entries.mdx +0 -37
  474. package/docs/zh/configure/app/html/inject-by-entries.mdx +0 -37
  475. package/docs/zh/configure/app/html/meta-by-entries.mdx +0 -48
  476. package/docs/zh/configure/app/html/tags-by-entries.mdx +0 -44
  477. package/docs/zh/configure/app/html/template-by-entries.mdx +0 -33
  478. package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +0 -36
  479. package/docs/zh/configure/app/html/title-by-entries.mdx +0 -37
  480. package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +0 -21
  481. package/docs/zh/configure/app/output/disable-css-extract.mdx +0 -16
  482. package/docs/zh/configure/app/output/disable-filename-hash.mdx +0 -16
  483. package/docs/zh/configure/app/output/disable-minimize.mdx +0 -14
  484. package/docs/zh/configure/app/output/disable-node-polyfill.mdx +0 -22
  485. package/docs/zh/configure/app/output/disable-source-map.mdx +0 -31
  486. package/docs/zh/configure/app/output/enable-asset-fallback.mdx +0 -36
  487. package/docs/zh/configure/app/output/enable-inline-scripts.mdx +0 -22
  488. package/docs/zh/configure/app/output/enable-inline-styles.mdx +0 -22
  489. package/docs/zh/configure/app/output/enable-latest-decorators.mdx +0 -14
  490. package/docs/zh/configure/app/performance/transform-lodash.mdx +0 -52
  491. package/docs/zh/configure/app/runtime/master-app.mdx +0 -38
  492. package/docs/zh/configure/app/runtime/state.mdx +0 -52
  493. package/docs/zh/configure/app/source/disable-entry-dirs.mdx +0 -38
  494. package/docs/zh/configure/app/source/enable-custom-entry.mdx +0 -67
  495. package/docs/zh/configure/app/source/module-scopes.mdx +0 -72
  496. package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +0 -57
  497. package/docs/zh/configure/app/source/resolve-main-fields.mdx +0 -46
  498. package/docs/zh/configure/app/tools/esbuild.mdx +0 -44
  499. package/docs/zh/configure/app/tools/pug.mdx +0 -54
  500. package/docs/zh/configure/app/tools/styled-components.mdx +0 -54
  501. package/docs/zh/configure/app/tools/tailwindcss.mdx +0 -98
  502. package/docs/zh/configure/app/tools/terser.mdx +0 -58
  503. package/docs/zh/configure/app/tools/ts-loader.mdx +0 -76
  504. package/docs/zh/configure/app/tools/webpack-chain.mdx +0 -253
  505. package/docs/zh/configure/app/tools/webpack.mdx +0 -305
  506. package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -154
  507. package/docs/zh/guides/deprecated.md +0 -19
  508. package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -26
  509. package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +0 -332
  510. package/docs/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -296
  511. package/docs/zh/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  512. package/docs/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -27
  513. package/docs/zh/guides/topic-detail/model/_meta.json +0 -14
  514. package/docs/zh/guides/topic-detail/model/auto-actions.mdx +0 -88
  515. package/docs/zh/guides/topic-detail/model/computed-state.mdx +0 -147
  516. package/docs/zh/guides/topic-detail/model/define-model.mdx +0 -63
  517. package/docs/zh/guides/topic-detail/model/faq.mdx +0 -36
  518. package/docs/zh/guides/topic-detail/model/manage-effects.mdx +0 -256
  519. package/docs/zh/guides/topic-detail/model/model-communicate.mdx +0 -217
  520. package/docs/zh/guides/topic-detail/model/performance.mdx +0 -167
  521. package/docs/zh/guides/topic-detail/model/quick-start.mdx +0 -117
  522. package/docs/zh/guides/topic-detail/model/redux-integration.mdx +0 -20
  523. package/docs/zh/guides/topic-detail/model/typescript-best-practice.mdx +0 -67
  524. package/docs/zh/guides/topic-detail/model/use-model.mdx +0 -248
  525. package/docs/zh/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  526. package/docs/zh/plugin/official/cli-plugins/plugin-swc.mdx +0 -351
  527. package/docs/zh/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  528. package/docs/zh/plugin/official/rsbuild-plugins/_meta.json +0 -1
  529. package/docs/zh/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -201
  530. package/docs/zh/plugin/official/rsbuild-plugins.mdx +0 -3
  531. package/docs/zh/tutorials/first-app/c01-start.mdx +0 -99
  532. package/docs/zh/tutorials/first-app/c02-component.mdx +0 -60
  533. package/docs/zh/tutorials/first-app/c03-css.mdx +0 -323
  534. package/docs/zh/tutorials/first-app/c04-routes.mdx +0 -172
  535. package/docs/zh/tutorials/first-app/c05-loader.mdx +0 -89
  536. package/docs/zh/tutorials/first-app/c06-model.mdx +0 -274
  537. package/docs/zh/tutorials/first-app/c07-container.mdx +0 -281
  538. package/docs/zh/tutorials/first-app/c08-entries.mdx +0 -135
  539. /package/docs/en/components/{reduck-migration.mdx → auto-upgrade.mdx} +0 -0
  540. /package/docs/{zh/components/reduck-migration.mdx → en/components/international/platform-support.mdx} +0 -0
@@ -4,14 +4,6 @@ Modern.js 提供了运行时 API,支持快速从应用中导出应用级别的
4
4
 
5
5
  我们以 [使用模块联邦](/guides/topic-detail/module-federation/usage) 创建的应用为例,进一步说明如何导入应用级别模块。
6
6
 
7
- ## 安装依赖
8
-
9
- 在原本应用的基础上,我们需要安装 `@module-federation/bridge-react` 依赖,用于使用 Bridge 加载应用级别模块。
10
-
11
- import { PackageManagerTabs } from '@theme';
12
-
13
- <PackageManagerTabs command="add @module-federation/bridge-react" />
14
-
15
7
  ## 生产者导出模块
16
8
 
17
9
  和直接导出组件级别的模块不同,我们需要为应用级别模块创建一个独立的入口来作为 `Module Federation` 的导出。
@@ -23,20 +15,30 @@ import { PackageManagerTabs } from '@theme';
23
15
  :::
24
16
 
25
17
  ```ts title="src/export-App.tsx"
26
- import '@modern-js/runtime/registry/main'; // 这一行必须引入,它会默认导入微前端运行时依赖
18
+ import '@modern-js/runtime/registry/index'; // 这一行必须引入,它会默认导入微前端运行时依赖
27
19
  import { render } from '@modern-js/runtime/browser';
28
20
  import { createRoot } from '@modern-js/runtime/react';
29
- import { createBridgeComponent } from '@module-federation/bridge-react';
21
+ import { createBridgeComponent } from '@module-federation/modern-js/react-v19';
30
22
 
31
23
  const ModernRoot = createRoot();
32
24
  export const provider = createBridgeComponent({
33
25
  rootComponent: ModernRoot,
34
- render: (Component, dom) => render(Component, dom),
26
+ render: (Component, dom) =>
27
+ render(Component as React.ReactElement<{ basename: string }>, dom),
35
28
  });
36
29
 
37
30
  export default provider;
38
31
  ```
39
32
 
33
+ :::note
34
+ 请根据你项目中使用的 React 版本来选择对应的导入路径:
35
+
36
+ - **React 19**:使用 `@module-federation/modern-js/react-v19`
37
+ - **React 18**:使用 `@module-federation/modern-js/react-v18`
38
+
39
+ 你可以通过查看项目的 `package.json` 文件中的 `react` 依赖版本来确定应该使用哪个导入路径。
40
+ :::
41
+
40
42
  该文件会将 `main` 入口的应用根组件传递给 Bridge API,并通过 Bridge 将调用渲染函数将其渲染到指定的节点上。
41
43
 
42
44
  接下来,我们配置 `module-federation.config.ts`,将导出修改为 `src/export-App.tsx`:
@@ -47,7 +49,7 @@ import { createModuleFederationConfig } from '@module-federation/modern-js';
47
49
  export default createModuleFederationConfig({
48
50
  name: 'remote',
49
51
  manifest: {
50
- filePath:'static',
52
+ filePath: 'static',
51
53
  },
52
54
  filename: 'static/remoteEntry.js',
53
55
  exposes: {
@@ -61,7 +63,7 @@ export default createModuleFederationConfig({
61
63
  ```
62
64
 
63
65
  :::info
64
- [`createBridgeComponent`](https://module-federation.io/zh/practice/bridge/react-bridge.html#createbridgecomponent) 用于导出应用级别模块,Modern.js 相关 API 可以查看 [createRoot](/apis/app/runtime/core/create-root)、[render](/apis/app/runtime/core/render)。
66
+ [`createBridgeComponent`](https://module-federation.io/zh/practice/bridge/react-bridge/export-app.html#createbridgecomponent-api-%E5%8F%82%E8%80%83) 用于导出应用级别模块,Modern.js 相关 API 可以查看 [createRoot](/apis/app/runtime/core/create-root)、[render](/apis/app/runtime/core/render)。
65
67
  :::
66
68
 
67
69
  ## 消费者使用模块
@@ -71,11 +73,11 @@ export default createModuleFederationConfig({
71
73
  我们希望所有访问到 `/remote` 的路由都能被进入上述应用级别模块中,因此我们重新添加 `src/routes/remote/$.tsx`。
72
74
 
73
75
  :::note
74
- 如果你还不了解 `$.tsx` 的能力,可以阅读 [通配路由](/guides/basic-features/routes.html#通配路由)。
76
+ 如果你还不了解 `$.tsx` 的能力,可以阅读 [通配路由](/guides/basic-features/routes/routes#通配路由)。
75
77
  :::
76
78
 
77
79
  ```tsx title="src/routes/remote/$.tsx"
78
- import { createRemoteAppComponent } from '@module-federation/bridge-react';
80
+ import { createRemoteAppComponent } from '@module-federation/modern-js/react';
79
81
  import { loadRemote } from '@module-federation/modern-js/runtime';
80
82
 
81
83
  const ErrorBoundary = (info?: { error: { message: string } }) => {
@@ -97,7 +99,7 @@ export default RemoteApp;
97
99
  ```
98
100
 
99
101
  :::info
100
- [`createRemoteAppComponent`](https://module-federation.io/zh/practice/bridge/react-bridge.html#createremoteappcomponent) 用于加载应用级别模块。
102
+ [`createRemoteAppComponent`](https://module-federation.io/zh/practice/bridge/react-bridge/load-app.html#%E4%BB%80%E4%B9%88%E6%98%AF-createremoteappcomponent) 用于加载应用级别模块。
101
103
  :::
102
104
 
103
105
  ## 启动应用
@@ -0,0 +1,623 @@
1
+ # 集成国际化能力
2
+
3
+ Modern.js 提供了 **@modern-js/plugin-i18n** 插件来支持国际化能力。当使用 Module Federation 时,需要针对不同的场景(组件或应用)提供相应的 i18n 集成方案。
4
+
5
+ ## 前置条件
6
+
7
+ 在开始之前,请确保你已经:
8
+
9
+ - 了解 [Module Federation 基础用法](/guides/topic-detail/module-federation/usage)
10
+ - 了解 [国际化插件的基础使用](/guides/advanced-features/international/quick-start)
11
+ - 创建了生产者和消费者应用
12
+
13
+ ## 方案概述
14
+
15
+ 在 Module Federation 场景下,生产者和消费者需要共享或独立管理 i18n 实例。根据不同的使用场景,我们提供了两种方案:
16
+
17
+ 1. **共享 I18n 实例**:生产者和消费者使用同一个 i18n 实例,语言切换会同步更新
18
+ 2. **独立 I18n 实例**:生产者和消费者各自维护独立的 i18n 实例,可以独立切换语言
19
+
20
+ :::tip
21
+
22
+ 对于组件场景,推荐使用共享 I18n 实例,因为组件最终会在同一棵 React 树上渲染,共享实例可以保证语言切换的一致性。
23
+
24
+ :::
25
+
26
+ :::info
27
+
28
+ 关于 i18n 插件的详细使用说明,请参考[国际化文档](/guides/advanced-features/international/quick-start)。
29
+
30
+ :::
31
+
32
+ ## 开启 I18n 能力
33
+
34
+ 不管是生产者还是消费者,都需要先开启 i18n 能力。
35
+
36
+ ### 安装依赖
37
+
38
+ 在 Module Federation 场景下,需要同时安装 i18n 插件和 Module Federation 插件:
39
+
40
+ ```bash
41
+ pnpm add i18next react-i18next @modern-js/plugin-i18n @module-federation/modern-js
42
+ ```
43
+
44
+ :::info
45
+
46
+ `i18next` 和 `react-i18next` 是 peer dependencies,需要手动安装。
47
+
48
+ :::
49
+
50
+ ### 配置插件
51
+
52
+ 在 `modern.config.ts` 中同时配置 i18n 插件和 Module Federation 插件:
53
+
54
+ ```ts title="modern.config.ts"
55
+ import { appTools, defineConfig } from '@modern-js/app-tools';
56
+ import { i18nPlugin } from '@modern-js/plugin-i18n';
57
+ import { moduleFederationPlugin } from '@module-federation/modern-js';
58
+
59
+ export default defineConfig({
60
+ plugins: [appTools(), i18nPlugin(), moduleFederationPlugin()],
61
+ });
62
+ ```
63
+
64
+ :::info
65
+
66
+ 关于 i18n 插件的详细配置选项,请参考[配置说明文档](/guides/advanced-features/international/configuration)。
67
+
68
+ :::
69
+
70
+ ## 场景一:生产者 - 组件
71
+
72
+ 当生产者导出的是组件级别的模块时,可以使用以下两种方案集成 i18n。
73
+
74
+ ### 共享 I18n 实例(推荐)
75
+
76
+ 对于组件场景,生产者和消费者最终是在同一棵 React 树上,因此只需要共享 i18next 和 react-i18next 依赖即可。
77
+
78
+ :::note
79
+
80
+ 生产者和消费者都需要在 `module-federation.config.ts` 中配置 `shared`,确保 `i18next` 和 `react-i18next` 使用 singleton 模式。
81
+
82
+ :::
83
+
84
+ #### 配置 Module Federation
85
+
86
+ ```ts title="module-federation.config.ts"
87
+ import { createModuleFederationConfig } from '@module-federation/modern-js';
88
+
89
+ export default createModuleFederationConfig({
90
+ // name 参数必须唯一,不能与其他应用(包括不同的 remote)使用相同的名称
91
+ name: 'i18nComponentProvider',
92
+ filename: 'remoteEntry.js',
93
+ exposes: {
94
+ './Text': './src/components/Text.tsx',
95
+ },
96
+ shared: {
97
+ react: { singleton: true },
98
+ 'react-dom': { singleton: true },
99
+ 'react-i18next': {
100
+ singleton: true,
101
+ },
102
+ i18next: {
103
+ singleton: true,
104
+ },
105
+ },
106
+ });
107
+ ```
108
+
109
+ #### 使用翻译
110
+
111
+ 在组件中使用 `react-i18next` 的 `useTranslation` hook 来完成翻译:
112
+
113
+ ```tsx title="src/components/Text.tsx"
114
+ import { useTranslation } from 'react-i18next';
115
+
116
+ export default () => {
117
+ const { t } = useTranslation();
118
+ return (
119
+ <div>
120
+ <p>{t('about')}</p>
121
+ </div>
122
+ );
123
+ };
124
+ ```
125
+
126
+ 使用共享实例时,远程组件会使用消费者的 i18n 实例,主应用切换语言时,对应的远程组件都会自动更新。
127
+
128
+ ### 独立 I18n 实例
129
+
130
+ 如果生产者需要维护自己的 I18n 实例(例如需要独立的语言资源或语言切换逻辑),可以不配置 `i18next` 和 `react-i18next` 的 shared,但需要:
131
+
132
+ 1. 创建独立的 i18n 实例
133
+ 2. 使用 `I18nextProvider` 包装导出的组件
134
+ 3. 导出语言切换的 Hook 供消费者使用
135
+
136
+ #### 创建独立的 i18n 实例
137
+
138
+ ```ts title="src/i18n.ts"
139
+ import originalI18next from 'i18next';
140
+
141
+ const i18next = originalI18next.createInstance();
142
+
143
+ i18next.init({
144
+ lng: 'en',
145
+ fallbackLng: 'en',
146
+ resources: {
147
+ en: {
148
+ translation: {
149
+ key: 'Hello World(provider)',
150
+ about: 'About(provider)',
151
+ },
152
+ },
153
+ zh: {
154
+ translation: {
155
+ key: '你好,世界(provider)',
156
+ about: '关于(provider)',
157
+ },
158
+ },
159
+ },
160
+ });
161
+
162
+ export default i18next;
163
+ ```
164
+
165
+ #### 使用 I18nextProvider 包装组件
166
+
167
+ ```tsx title="src/components/Text.tsx"
168
+ import { I18nextProvider, useTranslation } from 'react-i18next';
169
+ import i18next from '../i18n';
170
+
171
+ const Text = () => {
172
+ const { t } = useTranslation();
173
+ return <p>{t('about')}</p>;
174
+ };
175
+
176
+ export default () => {
177
+ return (
178
+ <I18nextProvider i18n={i18next}>
179
+ <Text />
180
+ </I18nextProvider>
181
+ );
182
+ };
183
+ ```
184
+
185
+ #### 导出切换语言的 Hook
186
+
187
+ 导出 `changeLanguage` 的 hook,支持让消费者去切换对应生产者的语言:
188
+
189
+ ```ts title="src/hooks/useSwitchLanguage.ts"
190
+ import i18next from '../i18n';
191
+
192
+ const useSwitchLanguage = () => {
193
+ return (languageId: string) => i18next.changeLanguage(languageId);
194
+ };
195
+
196
+ export default useSwitchLanguage;
197
+ ```
198
+
199
+ #### 配置 Module Federation
200
+
201
+ ```ts title="module-federation.config.ts"
202
+ import { createModuleFederationConfig } from '@module-federation/modern-js';
203
+
204
+ export default createModuleFederationConfig({
205
+ // name 参数必须唯一,不能与其他应用(包括不同的 remote)使用相同的名称
206
+ name: 'i18nComponentProvider',
207
+ filename: 'remoteEntry.js',
208
+ exposes: {
209
+ './Text': './src/components/Text.tsx',
210
+ './hooks/useSwitchLanguage': './src/hooks/useSwitchLanguage',
211
+ },
212
+ shared: {
213
+ react: { singleton: true },
214
+ 'react-dom': { singleton: true },
215
+ },
216
+ });
217
+ ```
218
+
219
+ ## 场景二:消费者 - 组件
220
+
221
+ 当消费者需要加载远程组件时,需要根据生产者使用的方案进行相应配置。
222
+
223
+ ### 配置 Module Federation
224
+
225
+ 首先,在消费者的 `module-federation.config.ts` 中配置远程模块:
226
+
227
+ ```ts title="module-federation.config.ts"
228
+ import { createModuleFederationConfig } from '@module-federation/modern-js';
229
+
230
+ export default createModuleFederationConfig({
231
+ // name 参数必须唯一,不能与其他应用(包括不同的 remote)使用相同的名称
232
+ name: 'consumer',
233
+ remotes: {
234
+ componentRemote:
235
+ 'i18nComponentProvider@http://localhost:3006/mf-manifest.json',
236
+ },
237
+ shared: {
238
+ react: { singleton: true },
239
+ 'react-dom': { singleton: true },
240
+ 'react-i18next': { singleton: true },
241
+ i18next: { singleton: true },
242
+ },
243
+ });
244
+ ```
245
+
246
+ :::note
247
+
248
+ 如果生产者使用共享 I18n 实例,消费者必须配置 `i18next` 和 `react-i18next` 的 shared。如果生产者使用独立实例,则不需要配置这两个依赖的 shared。
249
+
250
+ :::
251
+
252
+ ### 共享 I18n 实例
253
+
254
+ 当生产者使用共享 I18n 实例时,消费者可以直接加载远程组件,无需额外配置:
255
+
256
+ ```tsx title="src/routes/page.tsx"
257
+ import { createLazyComponent } from '@module-federation/modern-js/react';
258
+ import { getInstance } from '@module-federation/modern-js/runtime';
259
+
260
+ const RemoteComponent = createLazyComponent({
261
+ instance: getInstance(),
262
+ loader: () => import('componentRemote/Text'),
263
+ loading: 'loading...',
264
+ export: 'default',
265
+ });
266
+
267
+ export default () => {
268
+ return (
269
+ <div>
270
+ <RemoteComponent />
271
+ </div>
272
+ );
273
+ };
274
+ ```
275
+
276
+ 这里使用的 i18n 资源、i18n 实例都是主应用的,主应用切换语言时,对应的远程组件都会自动更新。
277
+
278
+ ### 独立 I18n 实例
279
+
280
+ 当生产者使用独立 I18n 实例时,消费者需要同时处理主应用和远程组件的语言切换逻辑:
281
+
282
+ ```tsx title="src/routes/layout.tsx"
283
+ import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
284
+ import { Outlet } from '@modern-js/runtime/router';
285
+ import useSwitchComponentLanguage from 'componentRemote/hooks/useSwitchLanguage';
286
+
287
+ export default function Layout() {
288
+ const { changeLanguage } = useModernI18n();
289
+ const switchComponentLanguage = useSwitchComponentLanguage();
290
+
291
+ const handleSwitchLanguage = (language: string) => {
292
+ changeLanguage(language);
293
+ switchComponentLanguage(language);
294
+ };
295
+
296
+ return (
297
+ <div>
298
+ <div>
299
+ <button onClick={() => handleSwitchLanguage('zh')}>zh</button>
300
+ <button onClick={() => handleSwitchLanguage('en')}>en</button>
301
+ </div>
302
+ <Outlet />
303
+ </div>
304
+ );
305
+ }
306
+ ```
307
+
308
+ :::info
309
+
310
+ 关于 `useModernI18n` Hook 的详细 API 说明,请参考[API 参考文档](/guides/advanced-features/international/api)。
311
+
312
+ :::
313
+
314
+ ## 场景三:生产者 - 应用
315
+
316
+ 当生产者导出的是应用级别的模块时,需要使用 Bridge API 来导出应用。关于应用级别模块的详细说明,请参考[应用级别模块](/guides/topic-detail/module-federation/application)。
317
+
318
+ :::warning
319
+
320
+ 生产者不支持开启路径重定向(`localePathRedirect`),需要在消费者统一管理路由和语言切换。
321
+
322
+ :::
323
+
324
+ :::info
325
+
326
+ 关于路由集成的详细说明,请参考[路由集成文档](/guides/advanced-features/international/routing)。
327
+
328
+ :::
329
+
330
+ ### 导出应用
331
+
332
+ 首先需要创建导出应用的入口文件:
333
+
334
+ ```tsx title="src/export-app.tsx"
335
+ import '@modern-js/runtime/registry/index';
336
+ import { render } from '@modern-js/runtime/browser';
337
+ import { createRoot } from '@modern-js/runtime/react';
338
+ import { createBridgeComponent } from '@module-federation/modern-js/react-v19';
339
+ import type { ReactElement } from 'react';
340
+
341
+ const ModernRoot = createRoot();
342
+
343
+ export const provider = createBridgeComponent({
344
+ rootComponent: ModernRoot,
345
+ render: (Component, dom) =>
346
+ render(Component as ReactElement<{ basename: string }>, dom),
347
+ });
348
+
349
+ export default provider;
350
+ ```
351
+
352
+ ### 共享 I18n 实例
353
+
354
+ #### 配置 Module Federation
355
+
356
+ ```ts title="module-federation.config.ts"
357
+ import { createModuleFederationConfig } from '@module-federation/modern-js';
358
+
359
+ export default createModuleFederationConfig({
360
+ // name 参数必须唯一,不能与其他应用(包括不同的 remote)使用相同的名称
361
+ name: 'i18nAppProvider',
362
+ filename: 'remoteEntry.js',
363
+ exposes: {
364
+ './export-app': './src/export-app.tsx',
365
+ },
366
+ shared: {
367
+ react: { singleton: true },
368
+ 'react-dom': { singleton: true },
369
+ 'react-i18next': { singleton: true },
370
+ i18next: { singleton: true },
371
+ },
372
+ });
373
+ ```
374
+
375
+ #### 配置运行时使用共享实例
376
+
377
+ 在 `modern.runtime.tsx` 中配置使用共享的 i18n 实例:
378
+
379
+ ```ts title="modern.runtime.tsx"
380
+ import { defineRuntimeConfig } from '@modern-js/runtime';
381
+ import i18next from 'i18next';
382
+
383
+ if (!i18next.isInitialized) {
384
+ i18next.init({
385
+ fallbackLng: 'en',
386
+ resources: {
387
+ en: {
388
+ translation: {
389
+ key: 'Hello World(provider)',
390
+ about: 'About(provider)',
391
+ },
392
+ },
393
+ zh: {
394
+ translation: {
395
+ key: '你好,世界(provider)',
396
+ about: '关于(provider)',
397
+ },
398
+ },
399
+ },
400
+ });
401
+ }
402
+
403
+ export default defineRuntimeConfig({
404
+ i18n: {
405
+ i18nInstance: i18next,
406
+ },
407
+ });
408
+ ```
409
+
410
+ :::note
411
+
412
+ 使用共享实例时,这里的 `i18next` 不需要调用 `init`,直接使用消费者初始化过的 i18next 默认导出实例即可。
413
+
414
+ :::
415
+
416
+ :::info
417
+
418
+ 关于 `i18nInstance` 配置的详细说明,请参考[配置说明文档](/guides/advanced-features/international/configuration#i18ninstance-配置)。
419
+
420
+ :::
421
+
422
+ ### 独立 I18n 实例(推荐)
423
+
424
+ 对于独立 I18n 实例,无需额外操作,生产者会使用自己的 i18n 实例。i18n 插件会自动初始化 i18n 实例。
425
+
426
+ ## 场景四:消费者 - 应用
427
+
428
+ 当消费者需要加载远程应用时,需要使用 Bridge API 来加载应用级别模块。
429
+
430
+ ### 配置 Module Federation
431
+
432
+ 首先,在消费者的 `module-federation.config.ts` 中配置远程应用:
433
+
434
+ ```ts title="module-federation.config.ts"
435
+ import { createModuleFederationConfig } from '@module-federation/modern-js';
436
+
437
+ export default createModuleFederationConfig({
438
+ // name 参数必须唯一,不能与其他应用(包括不同的 remote)使用相同的名称
439
+ name: 'consumer',
440
+ remotes: {
441
+ AppRemote: 'i18nAppProvider@http://localhost:3005/mf-manifest.json',
442
+ },
443
+ shared: {
444
+ react: { singleton: true },
445
+ 'react-dom': { singleton: true },
446
+ 'react-i18next': { singleton: true },
447
+ i18next: { singleton: true },
448
+ },
449
+ });
450
+ ```
451
+
452
+ :::note
453
+
454
+ 如果生产者使用共享 I18n 实例,消费者必须配置 `i18next` 和 `react-i18next` 的 shared。如果生产者使用独立实例,则不需要配置这两个依赖的 shared。
455
+
456
+ :::
457
+
458
+ ### 定义加载远程应用组件
459
+
460
+ 创建用于加载远程应用的组件:
461
+
462
+ ```tsx title="src/components/RemoteApp.tsx"
463
+ import { createRemoteAppComponent } from '@module-federation/modern-js/react';
464
+ import { loadRemote } from '@module-federation/modern-js/runtime';
465
+ import React from 'react';
466
+
467
+ const FallbackErrorComp = (info: any) => {
468
+ return (
469
+ <div
470
+ style={{ padding: '20px', border: '1px solid red', borderRadius: '4px' }}
471
+ >
472
+ <h3>加载失败</h3>
473
+ <p>{info?.error?.message}</p>
474
+ <button onClick={() => info.resetErrorBoundary()}>重试</button>
475
+ </div>
476
+ );
477
+ };
478
+
479
+ const FallbackComp = (
480
+ <div style={{ padding: '20px', textAlign: 'center' }}>
481
+ <div>正在加载远程应用...</div>
482
+ </div>
483
+ );
484
+
485
+ const RemoteApp = createRemoteAppComponent({
486
+ loader: () => loadRemote('AppRemote/export-app'),
487
+ export: 'provider' as any,
488
+ fallback: FallbackErrorComp,
489
+ loading: FallbackComp,
490
+ });
491
+
492
+ export default RemoteApp;
493
+ ```
494
+
495
+ ### 在路由中使用远程应用
496
+
497
+ 在路由文件中使用远程应用组件。`basename` 参数用于指定远程应用的基础路径,需要根据是否开启路径重定向(`localePathRedirect`)来决定:
498
+
499
+ #### 开启路径重定向时
500
+
501
+ 如果消费者开启了路径重定向(`localePathRedirect: true`),路由会包含 `[lang]` 动态参数,需要从路由参数中获取语言信息并传递给 `basename`:
502
+
503
+ ```tsx title="src/routes/[lang]/remote/$.tsx"
504
+ import { useParams } from '@modern-js/runtime/router';
505
+ import React from 'react';
506
+ import RemoteApp from '../../../components/RemoteApp';
507
+
508
+ export default (props: Record<string, any>) => {
509
+ const { lang } = useParams();
510
+ return (
511
+ <div>
512
+ <h2>远程应用页面</h2>
513
+ {/* basename 需要包含语言前缀,例如:zh/remote 或 en/remote */}
514
+ <RemoteApp {...props} basename={`${lang}/remote`} />
515
+ </div>
516
+ );
517
+ };
518
+ ```
519
+
520
+ #### 未开启路径重定向时
521
+
522
+ 如果消费者未开启路径重定向(`localePathRedirect: false` 或未配置),路由中不包含语言参数,`basename` 只需要包含路由路径即可:
523
+
524
+ ```tsx title="src/routes/remote/$.tsx"
525
+ import React from 'react';
526
+ import RemoteApp from '../../components/RemoteApp';
527
+
528
+ export default (props: Record<string, any>) => {
529
+ return (
530
+ <div>
531
+ <h2>远程应用页面</h2>
532
+ {/* 未开启路径重定向时,basename 不需要包含语言前缀 */}
533
+ <RemoteApp {...props} basename="remote" />
534
+ </div>
535
+ );
536
+ };
537
+ ```
538
+
539
+ :::note
540
+
541
+ `basename` 的计算规则:
542
+
543
+ - **开启 `localePathRedirect`**:`basename` 需要包含语言前缀,格式为 `${lang}/${routePath}`(例如:`zh/remote`、`en/remote`)
544
+ - **未开启 `localePathRedirect`**:`basename` 只需要包含路由路径,格式为 `${routePath}`(例如:`remote`),不需要添加语言前缀
545
+
546
+ :::
547
+
548
+ ### 共享 I18n 实例
549
+
550
+ 当生产者使用共享 I18n 实例时,消费者需要创建自定义的 i18n 实例,并在运行时配置中使用它。
551
+
552
+ #### 创建自定义 I18n 实例
553
+
554
+ 创建自定义的 i18n 实例,使用 i18next 的默认导出实例:
555
+
556
+ ```ts title="src/i18n.ts"
557
+ import i18next from 'i18next';
558
+
559
+ i18next.init({
560
+ lng: 'en',
561
+ fallbackLng: 'en',
562
+ resources: {
563
+ en: {
564
+ translation: {
565
+ key: 'Hello World(consumer)',
566
+ about: 'About(consumer)',
567
+ },
568
+ },
569
+ zh: {
570
+ translation: {
571
+ key: '你好,世界(consumer)',
572
+ about: '关于(consumer)',
573
+ },
574
+ },
575
+ },
576
+ });
577
+
578
+ export default i18next;
579
+ ```
580
+
581
+ #### 配置运行时使用自定义实例
582
+
583
+ 将自定义的 i18n 实例传入到应用中:
584
+
585
+ ```ts title="modern.runtime.tsx"
586
+ import { defineRuntimeConfig } from '@modern-js/runtime';
587
+ import i18next from './i18n';
588
+
589
+ export default defineRuntimeConfig({
590
+ i18n: {
591
+ i18nInstance: i18next,
592
+ },
593
+ });
594
+ ```
595
+
596
+ :::info
597
+
598
+ 关于 `i18nInstance` 配置的详细说明,请参考[配置说明文档](/guides/advanced-features/international/configuration#i18ninstance-配置)。
599
+
600
+ :::
601
+
602
+ ### 独立 I18n 实例
603
+
604
+ 对于独立 I18n 实例,无需额外操作,远程应用会使用自己的 i18n 实例。
605
+
606
+ ## 总结
607
+
608
+ Module Federation 集成 i18n 的关键点:
609
+
610
+ 1. **组件场景**:推荐使用共享 I18n 实例,生产者和消费者共享 `i18next` 和 `react-i18next`,语言切换会自动同步
611
+ 2. **应用场景**:可以选择共享或独立 I18n 实例,根据业务需求决定
612
+ 3. **配置要点**:确保生产者和消费者的 `shared` 配置一致,特别是 `i18next` 和 `react-i18next` 的 singleton 配置
613
+ 4. **路由管理**:生产者不支持路径重定向(`localePathRedirect`),需要在消费者统一管理路由和语言切换
614
+ 5. **依赖共享**:使用共享实例时,必须在生产者和消费者的 `module-federation.config.ts` 中都配置 `i18next` 和 `react-i18next` 为 singleton
615
+ 6. **名称唯一性**:`createModuleFederationConfig` 的 `name` 参数必须每个应用唯一,不能不同的 remote 使用相同的名称
616
+
617
+ ## 相关文档
618
+
619
+ - [Module Federation 基础用法](/guides/topic-detail/module-federation/usage)
620
+ - [应用级别模块](/guides/topic-detail/module-federation/application)
621
+ - [国际化快速开始](/guides/advanced-features/international/quick-start)
622
+ - [国际化配置说明](/guides/advanced-features/international/configuration)
623
+ - [国际化路由集成](/guides/advanced-features/international/routing)