@modern-js/main-doc 2.69.7 → 3.0.0-alpha.1

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 (618) hide show
  1. package/docs/en/{_meta.json → _nav.json} +5 -1
  2. package/docs/en/apis/app/commands.mdx +8 -33
  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 +19 -17
  13. package/docs/en/components/build-output.mdx +45 -0
  14. package/docs/en/components/bundler.mdx +1 -1
  15. package/docs/en/components/debug-app.mdx +1 -1
  16. package/docs/en/components/enable-bff-caution.mdx +2 -2
  17. package/docs/en/components/enable-bff.mdx +42 -8
  18. package/docs/en/components/enable-ssg.mdx +49 -0
  19. package/docs/en/components/entry-scan-logic.mdx +7 -0
  20. package/docs/en/components/esbuild.mdx +2 -2
  21. package/docs/en/components/extend-bff-function.mdx +2 -4
  22. package/docs/en/components/hono.mdx +119 -0
  23. package/docs/en/components/init-app.mdx +40 -17
  24. package/docs/en/components/international/custom-instance-code.mdx +16 -0
  25. package/docs/en/components/international/init-options-desc.mdx +1 -0
  26. package/docs/en/components/international/install-command.mdx +23 -0
  27. package/docs/en/components/international/instance-code.mdx +26 -0
  28. package/docs/en/components/international/introduce.mdx +2 -0
  29. package/docs/en/components/module-federation.mdx +4 -4
  30. package/docs/en/components/nodeVersion.mdx +2 -6
  31. package/docs/en/components/prerequisites.mdx +1 -1
  32. package/docs/en/components/ua-polyfill.mdx +16 -12
  33. package/docs/en/components/upgrade-config-deploy.mdx +0 -0
  34. package/docs/en/configure/_meta.json +7 -8
  35. package/docs/en/configure/app/bff/cross-project.mdx +24 -0
  36. package/docs/en/configure/app/builder-plugins.mdx +1 -2
  37. package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
  38. package/docs/en/configure/app/dev/server.mdx +211 -0
  39. package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
  40. package/docs/en/configure/app/experiments/source-build.mdx +0 -1
  41. package/docs/en/configure/app/html/app-icon.mdx +1 -23
  42. package/docs/en/configure/app/output/assets-retry.mdx +1 -1
  43. package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  44. package/docs/en/configure/app/output/filename.mdx +2 -4
  45. package/docs/en/configure/app/output/inline-scripts.mdx +1 -1
  46. package/docs/en/configure/app/output/override-browserslist.mdx +6 -4
  47. package/docs/en/configure/app/output/source-map.mdx +6 -3
  48. package/docs/en/configure/app/output/ssg.mdx +12 -43
  49. package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
  50. package/docs/en/configure/app/output/temp-dir.mdx +3 -3
  51. package/docs/en/configure/app/performance/build-cache.mdx +1 -5
  52. package/docs/en/configure/app/performance/profile.mdx +1 -1
  53. package/docs/en/configure/app/plugins.mdx +1 -3
  54. package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
  55. package/docs/en/configure/app/resolve/alias.mdx +13 -0
  56. package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
  57. package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
  58. package/docs/en/configure/app/resolve/extensions.mdx +18 -0
  59. package/docs/en/configure/app/runtime/0-intro.mdx +2 -51
  60. package/docs/en/configure/app/runtime/router.mdx +0 -4
  61. package/docs/en/configure/app/security/check-syntax.mdx +1 -1
  62. package/docs/en/configure/app/security/sri.mdx +0 -1
  63. package/docs/en/configure/app/server/port.mdx +1 -21
  64. package/docs/en/configure/app/server/rsc.mdx +30 -0
  65. package/docs/en/configure/app/server/ssr.mdx +20 -9
  66. package/docs/en/configure/app/source/alias.mdx +1 -1
  67. package/docs/en/configure/app/source/decorators.mdx +4 -2
  68. package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
  69. package/docs/en/configure/app/source/entries.mdx +0 -2
  70. package/docs/en/configure/app/source/include.mdx +2 -14
  71. package/docs/en/configure/app/source/main-entry-name.mdx +4 -4
  72. package/docs/en/configure/app/source/transform-import.mdx +1 -59
  73. package/docs/en/configure/app/tools/bundler-chain.mdx +5 -5
  74. package/docs/en/configure/app/tools/css-extract.mdx +1 -1
  75. package/docs/en/configure/app/tools/dev-server.mdx +22 -256
  76. package/docs/en/configure/app/tools/html-plugin.mdx +3 -3
  77. package/docs/en/configure/app/tools/lightningcss-loader.mdx +0 -1
  78. package/docs/en/configure/app/tools/swc.mdx +1 -43
  79. package/docs/en/configure/app/usage.mdx +5 -27
  80. package/docs/en/guides/_meta.json +5 -1
  81. package/docs/en/guides/advanced-features/_meta.json +6 -0
  82. package/docs/en/guides/advanced-features/bff/_meta.json +9 -1
  83. package/docs/en/guides/advanced-features/bff/cross-project.mdx +2 -8
  84. package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
  85. package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -15
  86. package/docs/en/guides/advanced-features/bff/function.mdx +6 -10
  87. package/docs/en/guides/advanced-features/bff/operators.mdx +628 -0
  88. package/docs/en/guides/advanced-features/bff/sdk.mdx +20 -12
  89. package/docs/en/guides/advanced-features/bff/upload.mdx +3 -1
  90. package/docs/en/guides/advanced-features/build-performance.mdx +23 -26
  91. package/docs/en/guides/advanced-features/compatibility.mdx +53 -9
  92. package/docs/en/guides/advanced-features/international/_meta.json +11 -0
  93. package/docs/en/guides/advanced-features/international/advanced.mdx +193 -0
  94. package/docs/en/guides/advanced-features/international/api.mdx +400 -0
  95. package/docs/en/guides/advanced-features/international/basic.mdx +417 -0
  96. package/docs/en/guides/advanced-features/international/best-practices.mdx +135 -0
  97. package/docs/en/guides/advanced-features/international/configuration.mdx +428 -0
  98. package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
  99. package/docs/en/guides/advanced-features/international/quick-start.mdx +126 -0
  100. package/docs/en/guides/advanced-features/international/resource-loading.mdx +417 -0
  101. package/docs/en/guides/advanced-features/international/routing.mdx +212 -0
  102. package/docs/en/guides/advanced-features/international.mdx +37 -0
  103. package/docs/en/guides/advanced-features/low-level.mdx +21 -16
  104. package/docs/en/guides/advanced-features/page-performance/code-split.mdx +4 -4
  105. package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  106. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +8 -22
  107. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +19 -12
  108. package/docs/en/guides/advanced-features/rspack-start.mdx +3 -23
  109. package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
  110. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +121 -36
  111. package/docs/en/guides/advanced-features/web-server.mdx +82 -299
  112. package/docs/en/guides/basic-features/_meta.json +6 -1
  113. package/docs/en/guides/basic-features/css/css-in-js.mdx +46 -11
  114. package/docs/en/guides/basic-features/css/css-modules.mdx +5 -17
  115. package/docs/en/guides/basic-features/css/css.mdx +3 -3
  116. package/docs/en/guides/basic-features/css/tailwindcss.mdx +5 -89
  117. package/docs/en/guides/basic-features/data/data-cache.mdx +65 -77
  118. package/docs/en/guides/basic-features/data/data-fetch.mdx +19 -18
  119. package/docs/en/guides/basic-features/data/data-write.mdx +2 -2
  120. package/docs/en/guides/basic-features/debug/mock.mdx +4 -1
  121. package/docs/en/guides/basic-features/debug/proxy.mdx +6 -17
  122. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +5 -5
  123. package/docs/en/guides/basic-features/deploy.mdx +25 -18
  124. package/docs/en/guides/basic-features/env-vars.mdx +1 -1
  125. package/docs/en/guides/basic-features/html.mdx +1 -1
  126. package/docs/en/guides/basic-features/output-files.mdx +3 -3
  127. package/docs/en/guides/basic-features/render/_meta.json +1 -1
  128. package/docs/en/guides/basic-features/render/before-render.mdx +16 -23
  129. package/docs/en/guides/basic-features/render/overview.mdx +51 -0
  130. package/docs/en/guides/basic-features/render/rsc.mdx +399 -0
  131. package/docs/en/guides/basic-features/render/ssg.mdx +26 -67
  132. package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -10
  133. package/docs/en/guides/basic-features/render/ssr.mdx +31 -31
  134. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +29 -9
  135. package/docs/en/guides/basic-features/routes/_meta.json +1 -0
  136. package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
  137. package/docs/en/guides/basic-features/{routes.mdx → routes/routes.mdx} +7 -110
  138. package/docs/en/guides/basic-features/static-assets/json-files.mdx +21 -3
  139. package/docs/en/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  140. package/docs/en/guides/basic-features/static-assets.mdx +2 -2
  141. package/docs/en/guides/concept/builder.mdx +27 -12
  142. package/docs/en/guides/concept/entries.mdx +139 -147
  143. package/docs/en/guides/get-started/glossary.mdx +0 -18
  144. package/docs/en/guides/get-started/introduction.mdx +1 -4
  145. package/docs/en/guides/get-started/quick-start.mdx +4 -71
  146. package/docs/en/guides/get-started/tech-stack.mdx +7 -27
  147. package/docs/en/guides/get-started/upgrade.mdx +30 -23
  148. package/docs/en/guides/topic-detail/_meta.json +0 -12
  149. package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -1
  150. package/docs/en/guides/topic-detail/module-federation/application.mdx +16 -15
  151. package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
  152. package/docs/en/guides/topic-detail/module-federation/introduce.mdx +5 -4
  153. package/docs/en/guides/topic-detail/module-federation/ssr.mdx +50 -2
  154. package/docs/en/guides/topic-detail/module-federation/usage.mdx +10 -30
  155. package/docs/en/guides/troubleshooting/builder.mdx +3 -82
  156. package/docs/en/guides/troubleshooting/cli.mdx +6 -30
  157. package/docs/en/guides/troubleshooting/dependencies.mdx +22 -22
  158. package/docs/en/guides/upgrade/_meta.json +1 -0
  159. package/docs/en/guides/upgrade/config.mdx +936 -0
  160. package/docs/en/guides/upgrade/entry.mdx +463 -0
  161. package/docs/en/guides/upgrade/other.mdx +83 -0
  162. package/docs/en/guides/upgrade/overview.mdx +33 -0
  163. package/docs/en/guides/upgrade/tailwindcss.mdx +130 -0
  164. package/docs/en/guides/upgrade/web-server.mdx +91 -0
  165. package/docs/en/plugin/_meta.json +5 -0
  166. package/docs/en/plugin/cli-plugins/_meta.json +1 -1
  167. package/docs/en/plugin/cli-plugins/api.mdx +17 -68
  168. package/docs/en/plugin/cli-plugins/life-cycle.mdx +0 -4
  169. package/docs/en/plugin/introduction.mdx +44 -44
  170. package/docs/en/plugin/official/_meta.json +0 -5
  171. package/docs/en/plugin/official/cli-plugins/_meta.json +1 -1
  172. package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  173. package/docs/en/plugin/official/cli-plugins.mdx +0 -2
  174. package/docs/en/plugin/plugin-system.mdx +69 -62
  175. package/docs/en/plugin/runtime-plugins/_meta.json +1 -1
  176. package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
  177. package/docs/en/plugin/server-plugins/_meta.json +1 -0
  178. package/docs/en/plugin/server-plugins/api.mdx +210 -1
  179. package/docs/en/plugin/server-plugins/life-cycle.mdx +41 -1
  180. package/docs/en/tutorials/_meta.json +0 -10
  181. package/docs/en/tutorials/examples/csr-auth.mdx +1 -1
  182. package/docs/en/tutorials/foundations/introduction.mdx +9 -25
  183. package/docs/zh/{_meta.json → _nav.json} +10 -6
  184. package/docs/zh/apis/app/commands.mdx +8 -33
  185. package/docs/zh/apis/app/hooks/src/entry.mdx +1 -5
  186. package/docs/zh/apis/app/hooks/src/entry.server.mdx +4 -5
  187. package/docs/zh/apis/app/hooks/src/routes.mdx +2 -2
  188. package/docs/zh/apis/app/runtime/_meta.json +0 -18
  189. package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  190. package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +3 -2
  191. package/docs/zh/community/blog/v2-release-note.mdx +0 -2
  192. package/docs/zh/community/contributing-guide.mdx +10 -12
  193. package/docs/zh/components/auto-upgrade.mdx +0 -0
  194. package/docs/zh/components/bff-operator-code.mdx +5 -0
  195. package/docs/zh/components/bff-upload.mdx +8 -7
  196. package/docs/zh/components/build-output.mdx +45 -0
  197. package/docs/zh/components/bundler.mdx +1 -1
  198. package/docs/zh/components/debug-app.mdx +1 -1
  199. package/docs/zh/components/enable-bff-caution.mdx +1 -1
  200. package/docs/zh/components/enable-bff.mdx +41 -8
  201. package/docs/zh/components/enable-ssg.mdx +49 -0
  202. package/docs/zh/components/entry-scan-logic.mdx +7 -0
  203. package/docs/zh/components/esbuild.mdx +2 -2
  204. package/docs/zh/components/extend-bff-function.mdx +2 -4
  205. package/docs/zh/components/hono.mdx +119 -0
  206. package/docs/zh/components/init-app.mdx +40 -18
  207. package/docs/zh/components/international/custom-instance-code.mdx +16 -0
  208. package/docs/zh/components/international/init-options-desc.mdx +1 -0
  209. package/docs/zh/components/international/install-command.mdx +23 -0
  210. package/docs/zh/components/international/instance-code.mdx +26 -0
  211. package/docs/zh/components/international/introduce.mdx +2 -0
  212. package/docs/zh/components/international/platform-support.mdx +0 -0
  213. package/docs/zh/components/module-federation.mdx +4 -4
  214. package/docs/zh/components/new-entry-tooltip.mdx +0 -0
  215. package/docs/zh/components/nodeVersion.mdx +3 -7
  216. package/docs/zh/components/prerequisites.mdx +1 -1
  217. package/docs/zh/components/self-route-example.mdx +3 -3
  218. package/docs/zh/components/ua-polyfill.mdx +11 -6
  219. package/docs/zh/components/upgrade-browserslist.mdx +0 -0
  220. package/docs/zh/components/upgrade-config-deploy.mdx +0 -0
  221. package/docs/zh/configure/_meta.json +7 -8
  222. package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
  223. package/docs/zh/configure/app/builder-plugins.mdx +1 -2
  224. package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
  225. package/docs/zh/configure/app/dev/server.mdx +211 -0
  226. package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
  227. package/docs/zh/configure/app/experiments/source-build.mdx +0 -1
  228. package/docs/zh/configure/app/html/app-icon.mdx +1 -23
  229. package/docs/zh/configure/app/output/assets-retry.mdx +1 -1
  230. package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  231. package/docs/zh/configure/app/output/filename.mdx +2 -4
  232. package/docs/zh/configure/app/output/inline-scripts.mdx +1 -1
  233. package/docs/zh/configure/app/output/override-browserslist.mdx +3 -3
  234. package/docs/zh/configure/app/output/source-map.mdx +10 -3
  235. package/docs/zh/configure/app/output/ssg.mdx +13 -45
  236. package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
  237. package/docs/zh/configure/app/output/temp-dir.mdx +3 -3
  238. package/docs/zh/configure/app/performance/build-cache.mdx +1 -5
  239. package/docs/zh/configure/app/performance/profile.mdx +1 -1
  240. package/docs/zh/configure/app/plugins.mdx +1 -2
  241. package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
  242. package/docs/zh/configure/app/resolve/alias.mdx +13 -0
  243. package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
  244. package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
  245. package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
  246. package/docs/zh/configure/app/runtime/0-intro.mdx +2 -53
  247. package/docs/zh/configure/app/runtime/router.mdx +0 -4
  248. package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
  249. package/docs/zh/configure/app/security/sri.mdx +0 -1
  250. package/docs/zh/configure/app/server/port.mdx +2 -21
  251. package/docs/zh/configure/app/server/rsc.mdx +30 -0
  252. package/docs/zh/configure/app/server/ssr.mdx +21 -11
  253. package/docs/zh/configure/app/source/alias.mdx +1 -1
  254. package/docs/zh/configure/app/source/decorators.mdx +4 -4
  255. package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
  256. package/docs/zh/configure/app/source/entries.mdx +0 -2
  257. package/docs/zh/configure/app/source/include.mdx +2 -16
  258. package/docs/zh/configure/app/source/main-entry-name.mdx +4 -4
  259. package/docs/zh/configure/app/source/transform-import.mdx +1 -59
  260. package/docs/zh/configure/app/tools/bundler-chain.mdx +6 -6
  261. package/docs/zh/configure/app/tools/css-extract.mdx +1 -1
  262. package/docs/zh/configure/app/tools/dev-server.mdx +14 -248
  263. package/docs/zh/configure/app/tools/html-plugin.mdx +3 -2
  264. package/docs/zh/configure/app/tools/lightningcss-loader.mdx +0 -1
  265. package/docs/zh/configure/app/tools/swc.mdx +1 -43
  266. package/docs/zh/configure/app/usage.mdx +6 -28
  267. package/docs/zh/guides/_meta.json +5 -1
  268. package/docs/zh/guides/advanced-features/_meta.json +6 -1
  269. package/docs/zh/guides/advanced-features/bff/_meta.json +9 -1
  270. package/docs/zh/guides/advanced-features/bff/cross-project.mdx +8 -16
  271. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +25 -8
  272. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +2 -16
  273. package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
  274. package/docs/zh/guides/advanced-features/bff/operators.mdx +628 -0
  275. package/docs/zh/guides/advanced-features/bff/sdk.mdx +23 -16
  276. package/docs/zh/guides/advanced-features/bff/upload.mdx +3 -1
  277. package/docs/zh/guides/advanced-features/build-performance.mdx +23 -30
  278. package/docs/zh/guides/advanced-features/compatibility.mdx +44 -0
  279. package/docs/zh/guides/advanced-features/international/_meta.json +11 -0
  280. package/docs/zh/guides/advanced-features/international/advanced.mdx +193 -0
  281. package/docs/zh/guides/advanced-features/international/api.mdx +400 -0
  282. package/docs/zh/guides/advanced-features/international/basic.mdx +416 -0
  283. package/docs/zh/guides/advanced-features/international/best-practices.mdx +135 -0
  284. package/docs/zh/guides/advanced-features/international/configuration.mdx +432 -0
  285. package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
  286. package/docs/zh/guides/advanced-features/international/quick-start.mdx +126 -0
  287. package/docs/zh/guides/advanced-features/international/resource-loading.mdx +417 -0
  288. package/docs/zh/guides/advanced-features/international/routing.mdx +212 -0
  289. package/docs/zh/guides/advanced-features/international.mdx +36 -0
  290. package/docs/zh/guides/advanced-features/low-level.mdx +21 -16
  291. package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +3 -3
  292. package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  293. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +8 -22
  294. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +19 -12
  295. package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
  296. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +120 -37
  297. package/docs/zh/guides/advanced-features/web-server.mdx +79 -300
  298. package/docs/zh/guides/basic-features/_meta.json +6 -1
  299. package/docs/zh/guides/basic-features/css/css-in-js.mdx +40 -5
  300. package/docs/zh/guides/basic-features/css/css-modules.mdx +6 -17
  301. package/docs/zh/guides/basic-features/css/css.mdx +2 -2
  302. package/docs/zh/guides/basic-features/css/tailwindcss.mdx +6 -90
  303. package/docs/zh/guides/basic-features/data/data-cache.mdx +55 -59
  304. package/docs/zh/guides/basic-features/data/data-fetch.mdx +14 -16
  305. package/docs/zh/guides/basic-features/data/data-write.mdx +4 -4
  306. package/docs/zh/guides/basic-features/debug/mock.mdx +4 -1
  307. package/docs/zh/guides/basic-features/debug/proxy.mdx +4 -15
  308. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +6 -6
  309. package/docs/zh/guides/basic-features/deploy.mdx +24 -20
  310. package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
  311. package/docs/zh/guides/basic-features/html.mdx +2 -2
  312. package/docs/zh/guides/basic-features/output-files.mdx +3 -3
  313. package/docs/zh/guides/basic-features/render/_meta.json +1 -1
  314. package/docs/zh/guides/basic-features/render/before-render.mdx +17 -24
  315. package/docs/zh/guides/basic-features/render/overview.mdx +52 -0
  316. package/docs/zh/guides/basic-features/render/rsc.mdx +399 -0
  317. package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
  318. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -9
  319. package/docs/zh/guides/basic-features/render/ssr.mdx +34 -31
  320. package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +34 -14
  321. package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
  322. package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
  323. package/docs/zh/guides/basic-features/{routes.mdx → routes/routes.mdx} +8 -114
  324. package/docs/zh/guides/basic-features/static-assets/json-files.mdx +21 -3
  325. package/docs/zh/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  326. package/docs/zh/guides/basic-features/static-assets.mdx +2 -2
  327. package/docs/zh/guides/basic-features/testing/cypress.mdx +5 -5
  328. package/docs/zh/guides/basic-features/testing/jest.mdx +12 -12
  329. package/docs/zh/guides/concept/builder.mdx +26 -11
  330. package/docs/zh/guides/concept/entries.mdx +95 -92
  331. package/docs/zh/guides/get-started/glossary.mdx +0 -18
  332. package/docs/zh/guides/get-started/introduction.mdx +1 -5
  333. package/docs/zh/guides/get-started/quick-start.mdx +5 -72
  334. package/docs/zh/guides/get-started/tech-stack.mdx +8 -28
  335. package/docs/zh/guides/get-started/upgrade.mdx +30 -23
  336. package/docs/zh/guides/topic-detail/_meta.json +0 -12
  337. package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -1
  338. package/docs/zh/guides/topic-detail/module-federation/application.mdx +18 -16
  339. package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
  340. package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +4 -4
  341. package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +51 -5
  342. package/docs/zh/guides/topic-detail/module-federation/usage.mdx +11 -31
  343. package/docs/zh/guides/troubleshooting/builder.mdx +4 -85
  344. package/docs/zh/guides/troubleshooting/cli.mdx +6 -30
  345. package/docs/zh/guides/troubleshooting/dependencies.mdx +23 -23
  346. package/docs/zh/guides/upgrade/_meta.json +1 -0
  347. package/docs/zh/guides/upgrade/config.mdx +940 -0
  348. package/docs/zh/guides/upgrade/entry.mdx +463 -0
  349. package/docs/zh/guides/upgrade/other.md +90 -0
  350. package/docs/zh/guides/upgrade/overview.mdx +36 -0
  351. package/docs/zh/guides/upgrade/tailwindcss.mdx +130 -0
  352. package/docs/zh/guides/upgrade/web-server.md +93 -0
  353. package/docs/zh/plugin/_meta.json +5 -0
  354. package/docs/zh/plugin/cli-plugins/_meta.json +1 -1
  355. package/docs/zh/plugin/cli-plugins/api.mdx +19 -70
  356. package/docs/zh/plugin/cli-plugins/life-cycle.mdx +0 -4
  357. package/docs/zh/plugin/introduction.mdx +40 -40
  358. package/docs/zh/plugin/official/_meta.json +0 -5
  359. package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -1
  360. package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  361. package/docs/zh/plugin/official/cli-plugins.mdx +0 -2
  362. package/docs/zh/plugin/plugin-system.mdx +43 -51
  363. package/docs/zh/plugin/runtime-plugins/_meta.json +1 -1
  364. package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
  365. package/docs/zh/plugin/server-plugins/_meta.json +1 -0
  366. package/docs/zh/plugin/server-plugins/api.mdx +210 -1
  367. package/docs/zh/plugin/server-plugins/life-cycle.mdx +41 -1
  368. package/docs/zh/tutorials/_meta.json +0 -10
  369. package/docs/zh/tutorials/examples/csr-auth.mdx +1 -1
  370. package/docs/zh/tutorials/foundations/introduction.mdx +8 -25
  371. package/i18n.json +0 -16
  372. package/package.json +12 -12
  373. package/rspress.config.ts +5 -8
  374. package/src/components/ContentCard/index.module.scss +11 -7
  375. package/src/components/ContentCard/index.tsx +1 -1
  376. package/src/components/FeatureLayout/index.module.css +1 -1
  377. package/src/components/Footer/index.tsx +2 -14
  378. package/src/components/Footer/styles.module.scss +5 -5
  379. package/src/components/FrameworkCode/index.tsx +605 -0
  380. package/src/components/ListCard/index.tsx +1 -1
  381. package/src/components/RandomMemberList/index.tsx +1 -1
  382. package/src/components/RsbuildLink/index.tsx +1 -1
  383. package/src/components/Sandpack/index.tsx +1 -1
  384. package/src/custom.scss +15 -0
  385. package/src/i18n/enUS.ts +2 -4
  386. package/src/i18n/index.ts +1 -1
  387. package/src/i18n/zhCN.ts +2 -4
  388. package/src/index.ts +2 -1
  389. package/src/pages/index.module.scss +59 -41
  390. package/src/pages/index.tsx +9 -24
  391. package/docs/en/apis/app/hooks/server/index_.mdx +0 -10
  392. package/docs/en/apis/app/hooks/src/index_.mdx +0 -38
  393. package/docs/en/apis/app/hooks/src/stories.mdx +0 -16
  394. package/docs/en/apis/app/runtime/app/define-config.mdx +0 -67
  395. package/docs/en/apis/app/runtime/core/bootstrap.mdx +0 -74
  396. package/docs/en/apis/app/runtime/core/create-app.mdx +0 -49
  397. package/docs/en/apis/app/runtime/core/use-loader.mdx +0 -89
  398. package/docs/en/apis/app/runtime/core/use-module-apps.mdx +0 -140
  399. package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  400. package/docs/en/apis/app/runtime/model/Provider.mdx +0 -36
  401. package/docs/en/apis/app/runtime/model/auto-actions.mdx +0 -122
  402. package/docs/en/apis/app/runtime/model/connect.mdx +0 -146
  403. package/docs/en/apis/app/runtime/model/create-app.mdx +0 -75
  404. package/docs/en/apis/app/runtime/model/create-store.mdx +0 -61
  405. package/docs/en/apis/app/runtime/model/handle-effect.mdx +0 -107
  406. package/docs/en/apis/app/runtime/model/model_.mdx +0 -198
  407. package/docs/en/apis/app/runtime/model/use-local-model.mdx +0 -29
  408. package/docs/en/apis/app/runtime/model/use-model.mdx +0 -89
  409. package/docs/en/apis/app/runtime/model/use-static-model.mdx +0 -51
  410. package/docs/en/apis/app/runtime/model/use-store.mdx +0 -26
  411. package/docs/en/apis/app/runtime/ssr/pre-render.mdx +0 -96
  412. package/docs/en/apis/app/runtime/web-server/hook.mdx +0 -134
  413. package/docs/en/apis/app/runtime/web-server/middleware.mdx +0 -113
  414. package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +0 -167
  415. package/docs/en/components/bff-proxy-path-rewrite.mdx +0 -16
  416. package/docs/en/components/bff-proxy-principle.mdx +0 -1
  417. package/docs/en/components/builder.mdx +0 -3
  418. package/docs/en/components/create-bff-api-app.mdx +0 -25
  419. package/docs/en/components/custom-router-micro-frontend.mdx +0 -40
  420. package/docs/en/components/enable-micro-frontend.mdx +0 -30
  421. package/docs/en/components/enableSwc.mdx +0 -17
  422. package/docs/en/components/global-proxy-config.mdx +0 -85
  423. package/docs/en/components/global-proxy.mdx +0 -29
  424. package/docs/en/components/package-manager.mdx +0 -11
  425. package/docs/en/components/reduck-notify.mdx +0 -27
  426. package/docs/en/components/reduck-tip.mdx +0 -8
  427. package/docs/en/configure/app/auto-load-plugin.mdx +0 -66
  428. package/docs/en/configure/app/deploy/microFrontend.mdx +0 -53
  429. package/docs/en/configure/app/dev/port.mdx +0 -25
  430. package/docs/en/configure/app/dev/proxy.mdx +0 -9
  431. package/docs/en/configure/app/experiments/lazy-compilation.mdx +0 -106
  432. package/docs/en/configure/app/html/disable-html-folder.mdx +0 -46
  433. package/docs/en/configure/app/html/favicon-by-entries.mdx +0 -36
  434. package/docs/en/configure/app/html/inject-by-entries.mdx +0 -36
  435. package/docs/en/configure/app/html/meta-by-entries.mdx +0 -48
  436. package/docs/en/configure/app/html/tags-by-entries.mdx +0 -44
  437. package/docs/en/configure/app/html/template-by-entries.mdx +0 -33
  438. package/docs/en/configure/app/html/template-parameters-by-entries.mdx +0 -35
  439. package/docs/en/configure/app/html/title-by-entries.mdx +0 -37
  440. package/docs/en/configure/app/output/css-module-local-ident-name.mdx +0 -21
  441. package/docs/en/configure/app/output/disable-css-extract.mdx +0 -16
  442. package/docs/en/configure/app/output/disable-filename-hash.mdx +0 -16
  443. package/docs/en/configure/app/output/disable-minimize.mdx +0 -14
  444. package/docs/en/configure/app/output/disable-node-polyfill.mdx +0 -22
  445. package/docs/en/configure/app/output/disable-source-map.mdx +0 -31
  446. package/docs/en/configure/app/output/enable-asset-fallback.mdx +0 -36
  447. package/docs/en/configure/app/output/enable-inline-scripts.mdx +0 -22
  448. package/docs/en/configure/app/output/enable-inline-styles.mdx +0 -22
  449. package/docs/en/configure/app/output/enable-latest-decorators.mdx +0 -14
  450. package/docs/en/configure/app/performance/bundle-analyze.mdx +0 -24
  451. package/docs/en/configure/app/performance/transform-lodash.mdx +0 -52
  452. package/docs/en/configure/app/runtime/master-app.mdx +0 -36
  453. package/docs/en/configure/app/runtime/state.mdx +0 -52
  454. package/docs/en/configure/app/source/disable-entry-dirs.mdx +0 -38
  455. package/docs/en/configure/app/source/enable-custom-entry.mdx +0 -68
  456. package/docs/en/configure/app/source/module-scopes.mdx +0 -72
  457. package/docs/en/configure/app/source/resolve-extension-prefix.mdx +0 -55
  458. package/docs/en/configure/app/source/resolve-main-fields.mdx +0 -46
  459. package/docs/en/configure/app/tools/babel.mdx +0 -225
  460. package/docs/en/configure/app/tools/esbuild.mdx +0 -44
  461. package/docs/en/configure/app/tools/pug.mdx +0 -54
  462. package/docs/en/configure/app/tools/styled-components.mdx +0 -55
  463. package/docs/en/configure/app/tools/tailwindcss.mdx +0 -98
  464. package/docs/en/configure/app/tools/terser.mdx +0 -58
  465. package/docs/en/configure/app/tools/ts-loader.mdx +0 -76
  466. package/docs/en/configure/app/tools/webpack-chain.mdx +0 -253
  467. package/docs/en/configure/app/tools/webpack.mdx +0 -309
  468. package/docs/en/guides/deprecated.md +0 -17
  469. package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -27
  470. package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +0 -290
  471. package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -298
  472. package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  473. package/docs/en/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -26
  474. package/docs/en/guides/topic-detail/model/_meta.json +0 -14
  475. package/docs/en/guides/topic-detail/model/auto-actions.mdx +0 -85
  476. package/docs/en/guides/topic-detail/model/computed-state.mdx +0 -148
  477. package/docs/en/guides/topic-detail/model/define-model.mdx +0 -62
  478. package/docs/en/guides/topic-detail/model/faq.mdx +0 -35
  479. package/docs/en/guides/topic-detail/model/manage-effects.mdx +0 -247
  480. package/docs/en/guides/topic-detail/model/model-communicate.mdx +0 -217
  481. package/docs/en/guides/topic-detail/model/performance.mdx +0 -167
  482. package/docs/en/guides/topic-detail/model/quick-start.mdx +0 -117
  483. package/docs/en/guides/topic-detail/model/redux-integration.mdx +0 -20
  484. package/docs/en/guides/topic-detail/model/typescript-best-practice.mdx +0 -68
  485. package/docs/en/guides/topic-detail/model/use-model.mdx +0 -243
  486. package/docs/en/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  487. package/docs/en/plugin/cli-plugins/migration.mdx +0 -98
  488. package/docs/en/plugin/official/cli-plugins/plugin-swc.mdx +0 -363
  489. package/docs/en/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  490. package/docs/en/plugin/official/rsbuild-plugins/_meta.json +0 -1
  491. package/docs/en/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -205
  492. package/docs/en/plugin/official/rsbuild-plugins.mdx +0 -3
  493. package/docs/en/plugin/runtime-plugins/migration.mdx +0 -101
  494. package/docs/en/tutorials/first-app/c01-start.mdx +0 -99
  495. package/docs/en/tutorials/first-app/c02-component.mdx +0 -60
  496. package/docs/en/tutorials/first-app/c03-css.mdx +0 -324
  497. package/docs/en/tutorials/first-app/c04-routes.mdx +0 -172
  498. package/docs/en/tutorials/first-app/c05-loader.mdx +0 -87
  499. package/docs/en/tutorials/first-app/c06-model.mdx +0 -278
  500. package/docs/en/tutorials/first-app/c07-container.mdx +0 -281
  501. package/docs/en/tutorials/first-app/c08-entries.mdx +0 -135
  502. package/docs/zh/apis/app/hooks/server/index_.mdx +0 -10
  503. package/docs/zh/apis/app/hooks/src/index_.mdx +0 -39
  504. package/docs/zh/apis/app/hooks/src/stories.mdx +0 -16
  505. package/docs/zh/apis/app/runtime/app/define-config.mdx +0 -67
  506. package/docs/zh/apis/app/runtime/core/bootstrap.mdx +0 -74
  507. package/docs/zh/apis/app/runtime/core/create-app.mdx +0 -35
  508. package/docs/zh/apis/app/runtime/core/use-loader.mdx +0 -89
  509. package/docs/zh/apis/app/runtime/core/use-module-apps.mdx +0 -179
  510. package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  511. package/docs/zh/apis/app/runtime/model/Provider.mdx +0 -36
  512. package/docs/zh/apis/app/runtime/model/auto-actions.mdx +0 -122
  513. package/docs/zh/apis/app/runtime/model/connect.mdx +0 -143
  514. package/docs/zh/apis/app/runtime/model/create-app.mdx +0 -75
  515. package/docs/zh/apis/app/runtime/model/create-store.mdx +0 -61
  516. package/docs/zh/apis/app/runtime/model/handle-effect.mdx +0 -108
  517. package/docs/zh/apis/app/runtime/model/model_.mdx +0 -201
  518. package/docs/zh/apis/app/runtime/model/use-local-model.mdx +0 -29
  519. package/docs/zh/apis/app/runtime/model/use-model.mdx +0 -89
  520. package/docs/zh/apis/app/runtime/model/use-static-model.mdx +0 -49
  521. package/docs/zh/apis/app/runtime/model/use-store.mdx +0 -26
  522. package/docs/zh/apis/app/runtime/ssr/pre-render.mdx +0 -96
  523. package/docs/zh/apis/app/runtime/web-server/hook.mdx +0 -136
  524. package/docs/zh/apis/app/runtime/web-server/middleware.mdx +0 -114
  525. package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +0 -165
  526. package/docs/zh/components/bff-proxy-path-rewrite.mdx +0 -16
  527. package/docs/zh/components/bff-proxy-principle.mdx +0 -1
  528. package/docs/zh/components/builder.mdx +0 -3
  529. package/docs/zh/components/create-bff-api-app.mdx +0 -25
  530. package/docs/zh/components/custom-router-micro-frontend.mdx +0 -40
  531. package/docs/zh/components/default-mwa-generate.mdx +0 -4
  532. package/docs/zh/components/enable-micro-frontend.mdx +0 -30
  533. package/docs/zh/components/enableSwc.mdx +0 -17
  534. package/docs/zh/components/global-proxy-config.mdx +0 -85
  535. package/docs/zh/components/global-proxy.mdx +0 -29
  536. package/docs/zh/components/package-manager.mdx +0 -11
  537. package/docs/zh/components/reduck-notify.mdx +0 -27
  538. package/docs/zh/components/reduck-tip.mdx +0 -8
  539. package/docs/zh/configure/app/auto-load-plugin.mdx +0 -66
  540. package/docs/zh/configure/app/deploy/microFrontend.mdx +0 -55
  541. package/docs/zh/configure/app/dev/port.mdx +0 -25
  542. package/docs/zh/configure/app/dev/proxy.mdx +0 -9
  543. package/docs/zh/configure/app/experiments/lazy-compilation.mdx +0 -105
  544. package/docs/zh/configure/app/html/disable-html-folder.mdx +0 -45
  545. package/docs/zh/configure/app/html/favicon-by-entries.mdx +0 -37
  546. package/docs/zh/configure/app/html/inject-by-entries.mdx +0 -37
  547. package/docs/zh/configure/app/html/meta-by-entries.mdx +0 -48
  548. package/docs/zh/configure/app/html/tags-by-entries.mdx +0 -44
  549. package/docs/zh/configure/app/html/template-by-entries.mdx +0 -33
  550. package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +0 -36
  551. package/docs/zh/configure/app/html/title-by-entries.mdx +0 -37
  552. package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +0 -21
  553. package/docs/zh/configure/app/output/disable-css-extract.mdx +0 -16
  554. package/docs/zh/configure/app/output/disable-filename-hash.mdx +0 -16
  555. package/docs/zh/configure/app/output/disable-minimize.mdx +0 -14
  556. package/docs/zh/configure/app/output/disable-node-polyfill.mdx +0 -22
  557. package/docs/zh/configure/app/output/disable-source-map.mdx +0 -31
  558. package/docs/zh/configure/app/output/enable-asset-fallback.mdx +0 -36
  559. package/docs/zh/configure/app/output/enable-inline-scripts.mdx +0 -22
  560. package/docs/zh/configure/app/output/enable-inline-styles.mdx +0 -22
  561. package/docs/zh/configure/app/output/enable-latest-decorators.mdx +0 -14
  562. package/docs/zh/configure/app/performance/bundle-analyze.mdx +0 -24
  563. package/docs/zh/configure/app/performance/transform-lodash.mdx +0 -52
  564. package/docs/zh/configure/app/runtime/master-app.mdx +0 -38
  565. package/docs/zh/configure/app/runtime/state.mdx +0 -52
  566. package/docs/zh/configure/app/source/disable-entry-dirs.mdx +0 -38
  567. package/docs/zh/configure/app/source/enable-custom-entry.mdx +0 -67
  568. package/docs/zh/configure/app/source/module-scopes.mdx +0 -72
  569. package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +0 -57
  570. package/docs/zh/configure/app/source/resolve-main-fields.mdx +0 -46
  571. package/docs/zh/configure/app/tools/babel.mdx +0 -224
  572. package/docs/zh/configure/app/tools/esbuild.mdx +0 -44
  573. package/docs/zh/configure/app/tools/pug.mdx +0 -54
  574. package/docs/zh/configure/app/tools/styled-components.mdx +0 -54
  575. package/docs/zh/configure/app/tools/tailwindcss.mdx +0 -98
  576. package/docs/zh/configure/app/tools/terser.mdx +0 -58
  577. package/docs/zh/configure/app/tools/ts-loader.mdx +0 -76
  578. package/docs/zh/configure/app/tools/webpack-chain.mdx +0 -257
  579. package/docs/zh/configure/app/tools/webpack.mdx +0 -309
  580. package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -154
  581. package/docs/zh/guides/deprecated.md +0 -19
  582. package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -26
  583. package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +0 -332
  584. package/docs/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -296
  585. package/docs/zh/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  586. package/docs/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -27
  587. package/docs/zh/guides/topic-detail/model/_meta.json +0 -14
  588. package/docs/zh/guides/topic-detail/model/auto-actions.mdx +0 -88
  589. package/docs/zh/guides/topic-detail/model/computed-state.mdx +0 -147
  590. package/docs/zh/guides/topic-detail/model/define-model.mdx +0 -63
  591. package/docs/zh/guides/topic-detail/model/faq.mdx +0 -36
  592. package/docs/zh/guides/topic-detail/model/manage-effects.mdx +0 -256
  593. package/docs/zh/guides/topic-detail/model/model-communicate.mdx +0 -217
  594. package/docs/zh/guides/topic-detail/model/performance.mdx +0 -167
  595. package/docs/zh/guides/topic-detail/model/quick-start.mdx +0 -117
  596. package/docs/zh/guides/topic-detail/model/redux-integration.mdx +0 -20
  597. package/docs/zh/guides/topic-detail/model/typescript-best-practice.mdx +0 -67
  598. package/docs/zh/guides/topic-detail/model/use-model.mdx +0 -248
  599. package/docs/zh/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  600. package/docs/zh/plugin/cli-plugins/migration.mdx +0 -98
  601. package/docs/zh/plugin/official/cli-plugins/plugin-swc.mdx +0 -351
  602. package/docs/zh/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  603. package/docs/zh/plugin/official/rsbuild-plugins/_meta.json +0 -1
  604. package/docs/zh/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -201
  605. package/docs/zh/plugin/official/rsbuild-plugins.mdx +0 -3
  606. package/docs/zh/plugin/runtime-plugins/migration.mdx +0 -101
  607. package/docs/zh/tutorials/first-app/c01-start.mdx +0 -99
  608. package/docs/zh/tutorials/first-app/c02-component.mdx +0 -60
  609. package/docs/zh/tutorials/first-app/c03-css.mdx +0 -323
  610. package/docs/zh/tutorials/first-app/c04-routes.mdx +0 -172
  611. package/docs/zh/tutorials/first-app/c05-loader.mdx +0 -89
  612. package/docs/zh/tutorials/first-app/c06-model.mdx +0 -274
  613. package/docs/zh/tutorials/first-app/c07-container.mdx +0 -281
  614. package/docs/zh/tutorials/first-app/c08-entries.mdx +0 -135
  615. /package/docs/en/components/{reduck-migration.mdx → auto-upgrade.mdx} +0 -0
  616. /package/docs/en/components/{router-legacy-tip.mdx → international/platform-support.mdx} +0 -0
  617. /package/docs/{zh/components/reduck-migration.mdx → en/components/new-entry-tooltip.mdx} +0 -0
  618. /package/docs/{zh/components/router-legacy-tip.mdx → en/components/upgrade-browserslist.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)