@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
@@ -0,0 +1,212 @@
1
+ ---
2
+ title: Routing Integration
3
+ ---
4
+
5
+ # Routing Integration
6
+
7
+ The plugin is deeply integrated with Modern.js routing system, supporting language path prefixes and automatic path redirection.
8
+
9
+ ## Enable Path Redirection
10
+
11
+ When `localePathRedirect` is set to `true`, the plugin will automatically add language prefixes to URLs and handle path redirection when switching languages.
12
+
13
+ **Configuration**:
14
+
15
+ ```ts
16
+ i18nPlugin({
17
+ localeDetection: {
18
+ localePathRedirect: true,
19
+ languages: ['zh', 'en'],
20
+ fallbackLanguage: 'en',
21
+ // Optional: ignore automatic redirection for certain routes
22
+ ignoreRedirectRoutes: ['/api', '/admin'],
23
+ },
24
+ });
25
+ ```
26
+
27
+ ### Ignore Redirection Routes
28
+
29
+ Some routes (such as API routes, static resources, etc.) don't need language prefixes. You can use the `ignoreRedirectRoutes` configuration to ignore automatic redirection for these routes:
30
+
31
+ ```ts
32
+ i18nPlugin({
33
+ localeDetection: {
34
+ localePathRedirect: true,
35
+ languages: ['zh', 'en'],
36
+ fallbackLanguage: 'en',
37
+ // String array: supports exact match and prefix match
38
+ ignoreRedirectRoutes: ['/api', '/admin', '/static'],
39
+ // Or use function for more flexible judgment
40
+ ignoreRedirectRoutes: pathname => {
41
+ return pathname.startsWith('/api') || pathname.startsWith('/admin');
42
+ },
43
+ },
44
+ });
45
+ ```
46
+
47
+ For more details, please refer to the `ignoreRedirectRoutes` configuration in the [Locale Detection documentation](./locale-detection#ignoreredirectroutes).
48
+
49
+ ## Route Configuration
50
+
51
+ After enabling path redirection, you need to add `:lang` dynamic parameter to the route configuration.
52
+
53
+ ### Convention-based Routing
54
+
55
+ When using convention-based routing, you need to create a `[lang]` directory under the `routes/` directory to represent the language parameter:
56
+
57
+ ```bash
58
+ routes/
59
+ ├── [lang]/
60
+ │ ├── layout.tsx # Layout component
61
+ │ ├── page.tsx # Home page
62
+ │ ├── about/
63
+ │ │ └── page.tsx # About page
64
+ │ └── contact/
65
+ │ └── page.tsx # Contact page
66
+ ```
67
+
68
+ **routes/[lang]/layout.tsx**:
69
+
70
+ ```tsx
71
+ import { Outlet } from '@modern-js/runtime/router';
72
+
73
+ export default function Layout() {
74
+ return <Outlet />;
75
+ }
76
+ ```
77
+
78
+ **routes/[lang]/page.tsx**:
79
+
80
+ ```tsx
81
+ export default function Home() {
82
+ return <div>Home</div>;
83
+ }
84
+ ```
85
+
86
+ **routes/[lang]/about/page.tsx**:
87
+
88
+ ```tsx
89
+ export default function About() {
90
+ return <div>About</div>;
91
+ }
92
+ ```
93
+
94
+ **routes/[lang]/contact/page.tsx**:
95
+
96
+ ```tsx
97
+ export default function Contact() {
98
+ return <div>Contact</div>;
99
+ }
100
+ ```
101
+
102
+ **Generated Route Structure**:
103
+
104
+ ```
105
+ /:lang → Home page
106
+ /:lang/about → About page
107
+ /:lang/contact → Contact page
108
+ ```
109
+
110
+ When accessing `/` or `/about`, it will automatically redirect to `/en` or `/en/about` (using the default language).
111
+
112
+ ### Custom Routing
113
+
114
+ If using custom routing (`modern.routes.ts`), you need to add `:lang` dynamic parameter in the route configuration:
115
+
116
+ ```tsx
117
+ import {
118
+ BrowserRouter,
119
+ Route,
120
+ Routes,
121
+ Outlet,
122
+ } from '@modern-js/runtime/router';
123
+
124
+ function App() {
125
+ return (
126
+ <BrowserRouter>
127
+ <Routes>
128
+ {/* Add :lang parameter */}
129
+ <Route path=":lang" element={<Outlet />}>
130
+ <Route index element={<Home />} />
131
+ <Route path="about" element={<About />} />
132
+ <Route path="contact" element={<Contact />} />
133
+ </Route>
134
+ </Routes>
135
+ </BrowserRouter>
136
+ );
137
+ }
138
+ ```
139
+
140
+ :::info
141
+ Convention-based routing will automatically generate corresponding routes based on the file structure. It's recommended to use convention-based routing. Only use custom routing when special route control is needed.
142
+
143
+ :::
144
+
145
+ ## I18nLink Component
146
+
147
+ The `I18nLink` component is provided by `@modern-js/plugin-i18n` and automatically adds the current language prefix to paths.
148
+
149
+ ### Basic Usage
150
+
151
+ ```tsx
152
+ import { I18nLink } from '@modern-js/plugin-i18n/runtime';
153
+
154
+ function Navigation() {
155
+ return (
156
+ <nav>
157
+ <I18nLink to="/">Home</I18nLink>
158
+ <I18nLink to="/about">About</I18nLink>
159
+ <I18nLink to="/contact">Contact</I18nLink>
160
+ </nav>
161
+ );
162
+ }
163
+ ```
164
+
165
+ **When current language is `en`**:
166
+
167
+ - `<I18nLink to="/">` → Actual link: `/en`
168
+ - `<I18nLink to="/about">` → Actual link: `/en/about`
169
+
170
+ **When current language is `zh`**:
171
+
172
+ - `<I18nLink to="/">` → Actual link: `/zh`
173
+ - `<I18nLink to="/about">` → Actual link: `/zh/about`
174
+
175
+ ### Automatic Language Prefix
176
+
177
+ `I18nLink` automatically handles language prefixes, no need to add them manually:
178
+
179
+ ```tsx
180
+ // ✅ Correct: No need to manually add language prefix
181
+ <I18nLink to="/about">About</I18nLink>
182
+
183
+ // ❌ Wrong: Don't manually add language prefix
184
+ <I18nLink to="/en/about">About</I18nLink>
185
+ ```
186
+
187
+ ### Props
188
+
189
+ `I18nLink` accepts all `Link` component props and additionally supports:
190
+
191
+ ```tsx
192
+ interface I18nLinkProps {
193
+ /** Target path (no need to include language prefix) */
194
+ to: string;
195
+ /** Child elements */
196
+ children: React.ReactNode;
197
+ /** Other Link component props */
198
+ [key: string]: any;
199
+ }
200
+ ```
201
+
202
+ **Example**:
203
+
204
+ ```tsx
205
+ <I18nLink to="/about" replace>
206
+ About
207
+ </I18nLink>
208
+
209
+ <I18nLink to="/contact" state={{ from: 'home' }}>
210
+ Contact
211
+ </I18nLink>
212
+ ```
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: Internationalization
3
+ ---
4
+
5
+ # Internationalization
6
+
7
+ import I18nPluginIntroduce from '@site-docs/components/international/introduce';
8
+
9
+ <I18nPluginIntroduce />
10
+
11
+ ## Core Features
12
+
13
+ - 🌍 **Multi-language Support**: Easily manage translation resources for multiple languages
14
+ - 🔍 **Smart Language Detection**: Supports automatic language detection from URL paths, cookies, request headers, and more
15
+ - 📦 **Flexible Resource Loading**: Supports three resource loading methods: HTTP, file system, and custom SDK
16
+ - 🛣️ **Route Integration**: Deeply integrated with Modern.js routing system, supports language path prefixes
17
+ - ⚡ **SSR Support**: Full support for server-side rendering (SSR) scenarios
18
+ - 🎯 **TypeScript Support**: Complete TypeScript type definitions
19
+
20
+ ## Use Cases
21
+
22
+ - Web applications that need to support multiple languages
23
+ - Multi-language routing that is SEO-friendly
24
+ - Multi-language applications that require server-side rendering
25
+ - Applications that need to dynamically load translation resources from external services
26
+
27
+ ## Documentation Navigation
28
+
29
+ - [Basic Concepts](./international/basic) - Core concepts and terminology
30
+ - [Quick Start](./international/quick-start) - Detailed installation and configuration guide
31
+ - [Configuration](./international/configuration) - CLI and runtime configuration details
32
+ - [Locale Detection](./international/locale-detection) - Multiple language detection methods and priorities
33
+ - [Resource Loading](./international/resource-loading) - HTTP, FS, and SDK backend usage
34
+ - [Routing Integration](./international/routing) - Path redirection and I18nLink component
35
+ - [API Reference](./international/api) - Complete API documentation and type definitions
36
+ - [Advanced Usage](./international/advanced) - SSR, multi-entry, custom instances, and more
37
+ - [Best Practices](./international/best-practices) - Resource organization, error handling, type safety
@@ -6,16 +6,18 @@ sidebar_position: 10
6
6
 
7
7
  ## Usage
8
8
 
9
- Modern.js internally integrates tools such as [Babel](https://babeljs.io/), [TypeScript](https://www.typescriptlang.org/), [Webpack](https://webpack.js.org/), [PostCSS](https://postcss.org/), [Tailwind CSS](https://tailwindcss.com/) by default.
9
+ Modern.js internally integrates tools such as [TypeScript](https://www.typescriptlang.org/), [Rspack](https://rspack.rs/), [PostCSS](https://postcss.org/), [SWC](https://swc.rs/) by default.
10
10
 
11
11
  Usually, the default configuration can meet most development needs. When there are special needs, it can be achieved through the underlying configuration.
12
12
 
13
- Take configuring Webpack as an example, just add [tools.webpack](/configure/app/tools/webpack) to the modern.config.ts:
13
+ Take configuring Rspack as an example, just add [tools.rspack](/configure/app/tools/rspack) to the modern.config.ts:
14
14
 
15
15
  ```ts title="modern.config.ts"
16
16
  export default defineConfig({
17
17
  tools: {
18
- webpack: config => {},
18
+ rspack: config => {
19
+ // Modify Rspack configuration
20
+ },
19
21
  },
20
22
  });
21
23
  ```
@@ -30,16 +32,19 @@ When the value is `Function`, the first parameter is the default configuration v
30
32
 
31
33
  Currently provided is as follows:
32
34
 
33
- | Tools | Config |
34
- | ----------------- | --------------------------------------------------------------------- |
35
- | DevServer | [tools.devServer](/configure/app/tools/dev-server) |
36
- | Babel | [tools.babel](/configure/app/tools/babel) |
37
- | styled-components | [tools.styledComponents](/configure/app/tools/styled-components) |
38
- | PostCSS | [tools.postcss](/configure/app/tools/postcss) |
39
- | Less | [tools.less](/configure/app/tools/less) |
40
- | Sass | [tools.sass](/configure/app/tools/sass) |
41
- | webpack | [tools.webpack](/configure/app/tools/webpack) |
42
- | Minify CSS | [tools.minifyCss](/configure/app/tools/minify-css) |
43
- | terser | [tools.terser](/configure/app/tools/terser) |
44
- | Tailwind CSS | [tools.tailwind](/configure/app/tools/tailwindcss) |
45
- | Autoprefixer | [tools.autoprefixer](/configure/app/tools/autoprefixer) |
35
+ | Tools | Config |
36
+ | ------------------ | -------------------------------------------------------------------- |
37
+ | Rspack | [tools.rspack](/configure/app/tools/rspack) |
38
+ | Bundler Chain | [tools.bundlerChain](/configure/app/tools/bundler-chain) |
39
+ | SWC | [tools.swc](/configure/app/tools/swc) |
40
+ | TypeScript Checker | [tools.tsChecker](/configure/app/tools/ts-checker) |
41
+ | PostCSS | [tools.postcss](/configure/app/tools/postcss) |
42
+ | Less | [tools.less](/configure/app/tools/less) |
43
+ | Sass | [tools.sass](/configure/app/tools/sass) |
44
+ | CSS Extract | [tools.cssExtract](/configure/app/tools/css-extract) |
45
+ | CSS Loader | [tools.cssLoader](/configure/app/tools/css-loader) |
46
+ | Style Loader | [tools.styleLoader](/configure/app/tools/style-loader) |
47
+ | Lightning CSS | [tools.lightningcssLoader](/configure/app/tools/lightningcss-loader) |
48
+ | Minify CSS | [tools.minifyCss](/configure/app/tools/minify-css) |
49
+ | Autoprefixer | [tools.autoprefixer](/configure/app/tools/autoprefixer) |
50
+ | HTML Plugin | [tools.htmlPlugin](/configure/app/tools/html-plugin) |
@@ -7,7 +7,7 @@ sidebar_position: 3
7
7
  Code splitting is a common way to optimize frontend resource loading. This article will introduce the three types of code splitting supported by Modern.js:
8
8
 
9
9
  :::info
10
- When using Modern.js [Conventional routing](/guides/basic-features/routes#conventional-routing). By default, code splitting is done according to the routing component, so you don't need to do it yourself.
10
+ When using Modern.js [Conventional routing](/guides/basic-features/routes/routes#conventional-routing). By default, code splitting is done according to the routing component, so you don't need to do it yourself.
11
11
  :::
12
12
 
13
13
  - dynamic `import`
@@ -16,7 +16,7 @@ When using Modern.js [Conventional routing](/guides/basic-features/routes#conven
16
16
 
17
17
  ## Dynamic import
18
18
 
19
- use dynamic `import()`, the JS modules pass to this API will be bundled as a separate JS file, for example:
19
+ When using dynamic `import()`, the JS modules passed to this API will be bundled as a separate JS file. For example:
20
20
 
21
21
  ```ts
22
22
  import('./math').then(math => {
@@ -26,10 +26,10 @@ import('./math').then(math => {
26
26
 
27
27
  ## React.lazy
28
28
 
29
- The officially way provides by React to split component code.
29
+ The official way provided by React to split component code.
30
30
 
31
31
  :::caution
32
- `React.lazy` is typically used in together with `<Suspense>`, hence it is only available in CSR or React 18 Streaming SSR.
32
+ `React.lazy` is typically used together with `<Suspense>`, hence it is only available in CSR or React 18+ Streaming SSR.
33
33
 
34
34
  For projects that use Traditional SSR(renderToString), `React.lazy` is not supported. Please use the Loadable API instead.
35
35
  :::
@@ -102,12 +102,12 @@ Excluding assets from inlining will increase the number of assets that the Web A
102
102
 
103
103
  In addition to inlining static assets into JS files, Modern.js also supports inlining JS files into HTML files.
104
104
 
105
- Just enable the [output.enableInlineScripts](/configure/app/output/enable-inline-scripts) config, and the generated JS files will not be written into the output directory, but will be directly inlined to the corresponding in the HTML file.
105
+ Just enable the [output.inlineScripts](/configure/app/output/inline-scripts) config, and the generated JS files will not be written into the output directory, but will be directly inlined to the corresponding in the HTML file.
106
106
 
107
107
  ```ts
108
108
  export default {
109
109
  output: {
110
- enableInlineScripts: true,
110
+ inlineScripts: true,
111
111
  },
112
112
  };
113
113
  ```
@@ -120,12 +120,12 @@ Inline JS files may cause the single HTML file to be too large, and it will brea
120
120
 
121
121
  You can also inline CSS files into HTML files.
122
122
 
123
- Just enable the [output.enableInlineStyles](/configure/app/output/enable-inline-styles) config, the generated CSS file will not be written into the output directory, but will be directly inlined to the corresponding in the HTML file.
123
+ Just enable the [output.inlineStyles](/configure/app/output/inline-styles) config, the generated CSS file will not be written into the output directory, but will be directly inlined to the corresponding in the HTML file.
124
124
 
125
125
  ```ts
126
126
  export default {
127
127
  output: {
128
- enableInlineStyles: true,
128
+ inlineStyles: true,
129
129
  },
130
130
  };
131
131
  ```
@@ -46,20 +46,20 @@ See the [performance.bundleAnalyze](/configure/app/performance/bundle-analyze.ht
46
46
 
47
47
  Modern.js will compile the code according to the project's Browserslist config, and inject some Polyfills. If the project does not need to be compatible with legacy browsers, you can adjust the Browserslist and drop some legacy browsers, thereby reducing the compilation overhead on syntax and polyfill.
48
48
 
49
- Modern.js's default Browserslist config is:
49
+ Modern.js's default [`output.overrideBrowserslist`](/configure/app/output/override-browserslist.html) config is:
50
50
 
51
51
  ```js
52
- ['> 0.01%', 'not dead', 'not op_mini all'];
52
+ ['chrome >= 87', 'edge >= 88', 'firefox >= 78', 'safari >= 14'];
53
53
  ```
54
54
 
55
- For example, if you only need to be compatible with browsers above Chrome 61, you can change it to:
55
+ For example, if you only need to be compatible with browsers above Chrome 100, you can change it to:
56
56
 
57
57
  ```js
58
- ['Chrome >= 61'];
58
+ ['Chrome >= 100'];
59
59
  ```
60
60
 
61
61
  :::tip
62
- Please read the [Browserslist](https://rsbuild.rs/guide/advanced/browserslist) chapter to know more about the usage of Browserslist.
62
+ Please read the [Browserslist configuration](/guides/advanced-features/compatibility.html) chapter to know more about the usage of Browserslist.
63
63
  :::
64
64
 
65
65
  ## Usage polyfill
@@ -96,23 +96,9 @@ See details in [plugin-image-compress](https://github.com/rspack-contrib/rsbuild
96
96
 
97
97
  ## Split Chunk
98
98
 
99
- A great code splitting strategy is very important to improve the loading performance of the application. It can make full use of the browser's caching mechanism to reduce the number of requests and improve the loading speed of the application.
99
+ A great chunk splitting strategy is very important to improve the loading performance of the application. It can make full use of the browser's caching mechanism to reduce the number of requests and improve the loading speed of the application.
100
100
 
101
- Modern.js provides the same [Code Splitting](https://rsbuild.rs/zh/guide/optimization/code-splitting) as Rsbuild. But there are some differences in the default strategy `split-by-experience`.
102
-
103
- When the project installs `antd`, `@arco-design/web-react`, or `@douyinfe/semi-ui` packages, it will automatically add the corresponding group. The implementation reference is as follows:
104
-
105
- ```ts
106
- if (isPackageInstalled('antd', rootPath)) {
107
- groups.antd = ['antd'];
108
- }
109
- if (isPackageInstalled('@arco-design/web-react', rootPath)) {
110
- groups.arco = [/@?arco-design/];
111
- }
112
- if (isPackageInstalled('@douyinfe/semi-ui', rootPath)) {
113
- groups.semi = [/@(ies|douyinfe)[\\/]semi-.*/];
114
- }
115
- ```
101
+ A variety of [chunk splitting strategies](https://rsbuild.rs/guide/optimization/split-chunk) are built into Modern.js, which can meet the needs of most applications. You can also customize the chunk splitting config according to your own business scenarios.
116
102
 
117
103
  For example, split the `axios` library under node_modules into `axios.js`:
118
104
 
@@ -18,9 +18,6 @@ The steps to use the React Compiler in Modern.js are as follows:
18
18
  import { appTools, defineConfig } from '@modern-js/app-tools';
19
19
 
20
20
  export default defineConfig({
21
- runtime: {
22
- router: true,
23
- },
24
21
  tools: {
25
22
  babel(_, { addPlugins }) {
26
23
  addPlugins([
@@ -33,11 +30,7 @@ export default defineConfig({
33
30
  ]);
34
31
  },
35
32
  },
36
- plugins: [
37
- appTools({
38
- bundler: 'rspack',
39
- }),
40
- ],
33
+ plugins: [appTools()],
41
34
  });
42
35
  ```
43
36
 
@@ -22,33 +22,13 @@ import InitRspackApp from '@site-docs-en/components/init-rspack-app';
22
22
 
23
23
  After the project is created, you can experience the project by running `pnpm run dev`. For more project information, please refer to [Quick Start](/guides/get-started/quick-start.html).
24
24
 
25
- ## Enable Rspack build
26
-
27
- Since Modern.js MAJOR_VERSION.59.0, you can enable Rspack build by add the following configuration in `modern.config.ts`:
28
-
29
- ```diff title=modern.config.ts
30
- import { appTools, defineConfig } from '@modern-js/app-tools';
31
-
32
- export default defineConfig({
33
- plugins: [
34
- appTools({
35
- + bundler: 'rspack',
36
- }),
37
- ],
38
- });
39
- ```
40
-
41
- :::tip
42
- If your current version is lower than MAJOR_VERSION.59.0, you can upgrade by executing `npx modern upgrade`.
43
- :::
44
-
45
25
  import RspackPrecautions from '@site-docs-en/components/rspackPrecautions.mdx';
46
26
 
47
27
  <RspackPrecautions />
48
28
 
49
29
  ## Migrating configuration
50
30
 
51
- In Modern.js, the [tools.webpack](/configure/app/tools/webpack) and [tools.webpackChain](/configure/app/tools/webpack-chain) configurations only take effect in webpack mode, after turning on the Rspack build, you can modify it to [tools.rspack](/configure/app/tools/rspack) and [tools.bundlerChain](/configure/app/tools/bundler-chain).
31
+ In Modern.js, the [tools.rspack](/configure/app/tools/rspack) and [tools.bundlerChain](/configure/app/tools/bundler-chain) configurations take effect in Rspack mode. If you were previously using webpack mode, after turning on the Rspack build, you can modify it to [tools.rspack](/configure/app/tools/rspack) and [tools.bundlerChain](/configure/app/tools/bundler-chain).
52
32
 
53
33
  ```diff
54
34
  export default {
@@ -81,7 +61,7 @@ If you have custom configuration requirements for `builtin:swc-loader`, you can
81
61
  ```ts
82
62
  import { defineConfig } from '@modern-js/app-tools';
83
63
 
84
- export default defineConfig<'rspack'>({
64
+ export default defineConfig({
85
65
  tools: {
86
66
  swc: {
87
67
  jsc: {
@@ -17,11 +17,7 @@ Modern.js also retains SSR logs from legacy versions using `useLoader`:
17
17
  | Stage | Message | Level |
18
18
  | ------------- | ------------------------------- | ----- |
19
19
  | PRERENDER | App Prerender | error |
20
- | USE_LOADER | App run useLoader | error |
21
20
 
22
- :::tip
23
- The `useLoader` API is now deprecated. We recommend migrating to convention-based routing and using Data Loaders for data fetching. Applications already using Data Loaders can enable [`ssr.disablePrerender`](/configure/app/server/ssr.html#object-type) to disable prerendering and improve SSR performance.
24
- :::
25
21
 
26
22
  ## Built-in Monitor
27
23
 
@@ -56,11 +56,11 @@ export interface Monitors {
56
56
  warn(message: string, ...args: any[]): void;
57
57
  debug(message: string, ...args: any[]): void;
58
58
  info(message: string, ...args: any[]): void;
59
- trace(message: string,...args: any[]): void;
59
+ trace(message: string, ...args: any[]): void;
60
60
 
61
61
  // Metrics Event
62
62
  timing(name: string, dur: number, ...args: any[]): void;
63
- counter(name: string, ...args: any[]): void
63
+ counter(name: string, ...args: any[]): void;
64
64
  }
65
65
  ```
66
66
 
@@ -71,31 +71,47 @@ Modern.js comes with a built-in default Monitor, where different events trigger
71
71
  - [Log Event](/guides/advanced-features/server-monitor/logger)
72
72
  - [Metrics Event](/guides/advanced-features/server-monitor/metrics)
73
73
 
74
-
75
74
  ## Register Monitors
76
75
 
77
- Developers can register their own Monitors using the `push` API, but this can only be done in [server middleware](/apis/app/runtime/web-server/unstable_middleware) or server plugins. Registration is not available in Data Loaders, components, or init functions.
76
+ Developers can register their own Monitors using the `push` API, but this can only be done in [server middleware](/guides/advanced-features/web-server#unstable-middleware) or server plugins. Registration is not available in Data Loaders, components, or init functions.
78
77
 
79
78
  :::note
80
79
  Server plugins are currently not available, and documentation will be added in the future.
81
80
  :::
82
81
 
83
- ```ts title="server/index.ts"
84
- import type { CoreMonitors } from '@modern-js/types';
85
- const injectMonitorMiddleware = (c) => {
86
- const monitors = c.get('monitors');
87
- const myMonitor = (event: MonitorEvent) => {
88
- if (event.type === 'log') {
89
- // some code
90
- } else {
91
- // some other code
92
- }
82
+ ```ts title="server/modern.server.ts"
83
+ import {
84
+ defineServerConfig,
85
+ type MiddlewareHandler,
86
+ } from '@modern-js/server-runtime';
87
+ import type { MonitorEvent } from '@modern-js/types';
88
+
89
+ const injectMonitorMiddleware: MiddlewareHandler = async (c, next) => {
90
+ const monitors = c.get('monitors');
91
+ const myMonitor = (event: MonitorEvent) => {
92
+ if (event.type === 'log') {
93
+ // Handle log events
94
+ console.log(`[${event.payload.level}] ${event.payload.message}`);
95
+ } else if (event.type === 'timing') {
96
+ // Handle timing events
97
+ console.log(`Timing: ${event.payload.name} = ${event.payload.dur}ms`);
98
+ } else if (event.type === 'counter') {
99
+ // Handle counter events
100
+ console.log(`Counter: ${event.payload.name}`);
93
101
  }
94
- monitors.push(myMonitor);
95
- return next();
96
- }
102
+ };
103
+ monitors.push(myMonitor);
104
+ await next();
105
+ };
97
106
 
98
- export const middlewares = [injectMonitorMiddleware]
107
+ export default defineServerConfig({
108
+ middlewares: [
109
+ {
110
+ name: 'inject-monitor',
111
+ handler: injectMonitorMiddleware,
112
+ },
113
+ ],
114
+ });
99
115
  ```
100
116
 
101
117
  ## Use Monitors
@@ -126,32 +142,44 @@ const loader = async ({ context }: LoaderFunctionArgs) => {
126
142
  When invoking Monitors in components, you need to determine whether the current runtime environment is Node.js:
127
143
 
128
144
  ```tsx title="routes/page.tsx"
129
- import { getMonitors } from '@modern-js/runtime';
145
+ import { use } from 'react';
146
+ import { RuntimeContext, getMonitors } from '@modern-js/runtime';
130
147
  const Page = () => {
131
- const { context } = useRuntimeContext();
132
- if (process.env.MODERN_TARGET === 'node') {
133
- const monitors = getMonitors();
134
- monitors.info();
135
- }
136
- return <div>Hello World</div>
137
- }
148
+ const context = use(RuntimeContext);
149
+ if (process.env.MODERN_TARGET === 'node') {
150
+ const monitors = getMonitors();
151
+ monitors.info('Page rendered');
152
+ }
153
+ return <div>Hello World</div>;
154
+ };
138
155
  export default Page;
139
156
  ```
140
157
 
141
158
  In middleware, we can also invoke Monitors, but the approach differs from runtime code as it requires accessing them through `context`:
142
159
 
143
- ```ts title="server/index.ts"
144
- import { UnstableMiddleware } from '@modern-js/runtime/server';
160
+ ```ts title="server/modern.server.ts"
161
+ import {
162
+ defineServerConfig,
163
+ type MiddlewareHandler,
164
+ } from '@modern-js/server-runtime';
145
165
 
146
- const time: UnstableMiddleware = async (c, next) => {
166
+ export const handler: MiddlewareHandler = async (c, next) => {
167
+ const monitors = c.get('monitors');
147
168
  const start = Date.now();
169
+
148
170
  await next();
171
+
149
172
  const end = Date.now();
150
- const monitors = c.get('monitors');
151
- monitors.info(`${end - start}`);
173
+ // Report timing
174
+ monitors.timing('request_timing', end - start);
152
175
  };
153
176
 
154
- export const unstableMiddleware: UnstableMiddleware[] = [time];
177
+ export default defineServerConfig({
178
+ middlewares: [
179
+ {
180
+ name: 'request-timing',
181
+ handler,
182
+ },
183
+ ],
184
+ });
155
185
  ```
156
-
157
-