@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
@@ -1,25 +1,33 @@
1
1
  # Server-Side Rendering
2
2
 
3
- Server-Side Rendering (SSR) involves rendering the HTML content of a webpage server-side and then sending the fully-rendered page to the browser. The browser only needs to display the page without additional rendering.
3
+ Server-Side Rendering (SSR) generates complete HTML pages on the server and sends them to the browser for direct display, without requiring additional client-side rendering.
4
4
 
5
- The main advantages are:
5
+ ## Core Advantages
6
6
 
7
- - **Improved First-Page Load Speed**: SSR generates a complete webpage on the server-side. The browser only needs to download the page content, avoiding additional rendering, thus improving the first-page load speed.
8
- - **SEO-Friendly**: SSR can generate complete HTML content that search engines can directly index, thereby improving the website's ranking.
7
+ - **Faster First Screen**: Server-side pre-rendering allows the browser to display content directly without waiting for JavaScript execution
8
+ - **Better SEO**: Search engines can directly index complete HTML content
9
+ - **Out of the Box**: No need to write complex server-side logic or maintain separate services
9
10
 
10
- Developers might consider using SSR to render pages in the following scenarios:
11
+ :::info Default Rendering Mode
12
+ Modern.js SSR **uses streaming rendering (Streaming SSR) by default**, allowing pages to be returned progressively as they render, so users can see initial content faster.
11
13
 
12
- 1. Websites that require high first-page load speed, such as e-commerce and news websites.
13
- 2. Websites demanding high user experience, such as social networks and gaming websites.
14
- 3. Websites with high SEO requirements, such as company websites and blogs.
14
+ For detailed usage, refer to the [Streaming SSR](/guides/basic-features/render/streaming-ssr) documentation.
15
15
 
16
- In Modern.js, SSR is also available out of the box. Developers don't need to write complex server-side logic or worry about SSR maintenance or creating separate services.
16
+ To switch to traditional SSR mode (waiting for all data to load before returning at once), you can configure:
17
17
 
18
- Apart from the out-of-the-box SSR service, Modern.js also offers:
18
+ ```ts title="modern.config.ts"
19
+ import { defineConfig } from '@modern-js/app-tools';
20
+
21
+ export default defineConfig({
22
+ server: {
23
+ ssr: {
24
+ mode: 'string', // Traditional SSR mode
25
+ },
26
+ },
27
+ });
28
+ ```
19
29
 
20
- - Comprehensive SSR fallback strategies to ensure the page can run safely.
21
- - Automatic segmentation of sub-routes with on-demand loading, reducing first-page resource size.
22
- - Built-in caching system to address high server load issues.
30
+ :::
23
31
 
24
32
  ## Enabling SSR
25
33
 
@@ -30,20 +38,19 @@ import { defineConfig } from '@modern-js/app-tools';
30
38
 
31
39
  export default defineConfig({
32
40
  server: {
33
- ssr: true,
41
+ ssr: true, // Streaming rendering enabled by default
34
42
  },
35
43
  });
36
44
  ```
37
45
 
38
46
  ## Data Fetching
39
47
 
40
- :::tip Prerequisite
41
- If you're unfamiliar with how to use Data Loader or the concept of Client Loader, please read [Data Fetching](/guides/basic-features/data/data-fetch) first.
42
- :::
48
+ Modern.js provides Data Loader, enabling developers to fetch data isomorphically under both SSR and CSR. Each route module (such as `layout.tsx` and `page.tsx`) can define its own Data Loader:
43
49
 
44
- ### Basic Usage
50
+ :::tip Learn More
51
+ The following approach will not have streaming rendering effects. To achieve streaming rendering effects, refer to [Streaming SSR](/guides/basic-features/render/streaming-ssr).
45
52
 
46
- Modern.js provides Data Loader, enabling developers to fetch data isomorphically under both SSR and CSR. Each route module, such as `layout.tsx` and `page.tsx`, can define its own Data Loader:
53
+ :::
47
54
 
48
55
  ```ts title="src/routes/page.data.ts"
49
56
  export const loader = () => {
@@ -53,7 +60,7 @@ export const loader = () => {
53
60
  };
54
61
  ```
55
62
 
56
- In components, you can use hook APIs to access the data returned by the `loader` function:
63
+ Access data in components through Hooks API:
57
64
 
58
65
  ```tsx
59
66
  import { useLoaderData } from '@modern-js/runtime/router';
@@ -65,10 +72,6 @@ export default () => {
65
72
 
66
73
  ### Using Client Loader
67
74
 
68
- :::info
69
- This feature requires version x.36.0 or above. We recommend using the latest version of the framework.
70
- :::
71
-
72
75
  By default, in SSR applications, the `loader` function only executes on the server. However, in some scenarios, developers might want requests made on the client-side to bypass the SSR service and directly fetch data from the source. For example:
73
76
 
74
77
  1. Reducing network consumption on the client-side by directly fetching from the data source.
@@ -83,17 +86,14 @@ export async function loader({ params }) {
83
86
  if (cache.has(params.id)) {
84
87
  return cache.get(params.id);
85
88
  }
86
- const res = await fetch('URL_ADDRESS?id={params.id}');
89
+ const res = await fetch(`URL_ADDRESS?id=${params.id}`);
90
+ const data = await res.json();
87
91
  return {
88
- message: res.message,
92
+ message: data.message,
89
93
  }
90
94
  }
91
95
  ```
92
96
 
93
- :::warning
94
- To use Client Loader, there must be a corresponding Server Loader, and the Server Loader must be in a `.data` file, not a `.loader` file.
95
- :::
96
-
97
97
  ## SSR Fallback
98
98
 
99
99
  In Modern.js, if an application encounters an error during SSR, it automatically falls back to CSR mode and re-fetches data, ensuring the page can display correctly. SSR fallback can occur for two main reasons:
@@ -291,7 +291,7 @@ Wrap elements that should not be server-side rendered with the `NoSSR` component
291
291
 
292
292
  After modifying the code, refresh the page and notice that the previous warning has disappeared. Open the browser's developer tools and check the Network tab. The returned HTML document will not contain the content wrapped by the `NoSSR` component.
293
293
 
294
- In practical scenarios, some UI displays might be affected by the user's device, such as [UA](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) information. Modern.js also provides APIs like [`useRuntimeContext`](/apis/app/runtime/core/use-runtime-context), allowing components to access complete request information and maintaining SSR and CSR rendering consistency.
294
+ In practical scenarios, some UI displays might be affected by the user's device, such as [UA](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) information. Modern.js also provides APIs like `use(RuntimeContext)`, allowing components to access complete request information and maintaining SSR and CSR rendering consistency. For detailed usage, please refer to [Runtime Context](/guides/basic-features/render/before-render#runtime-context).
295
295
 
296
296
  ### Attention to Memory Leaks
297
297
 
@@ -1,10 +1,16 @@
1
- # Streaming SSR
1
+ # Streaming Server-Side Rendering
2
2
 
3
- Streaming SSR is a new rendering method that updates the page content in real-time as users interact with it, enhancing user experience.
3
+ Streaming rendering is an advanced rendering method that progressively returns content during the page rendering process, significantly improving user experience.
4
4
 
5
- In conventional rendering, the page is rendered all at once. In streaming rendering, the page is rendered progressively, loading data step-by-step as users interact with the page instead of loading all data at once.
5
+ In traditional SSR rendering, the page is rendered all at once, requiring all data to be loaded before returning the complete HTML. In streaming rendering, the page is rendered progressively, allowing content to be returned as it renders, so users can see initial content faster.
6
6
 
7
- Compared to traditional rendering:
7
+ :::info Default Mode
8
+ **Streaming SSR is the default rendering mode for Modern.js SSR**. When you enable SSR, streaming rendering is available without additional configuration.
9
+
10
+ If you need to switch to traditional SSR mode (waiting for all data to load before returning at once), you can configure `server.ssr.mode` to `'string'`. For detailed information, refer to the [Server-Side Rendering (SSR)](/guides/basic-features/render/ssr) documentation.
11
+ :::
12
+
13
+ Compared to traditional SSR rendering:
8
14
 
9
15
  - **Faster Perceived Speed**: Streaming rendering can progressively display content, quickly rendering the home page.
10
16
  - **Enhanced User Experience**: Users can see page content faster and interact without waiting for the entire page to render.
@@ -13,7 +19,19 @@ Compared to traditional rendering:
13
19
 
14
20
  ## Enabling Streaming Rendering
15
21
 
16
- Modern.js supports React 18's streaming rendering, which can be enabled as follows:
22
+ Modern.js supports React 18+ streaming rendering. When you enable SSR, streaming rendering is enabled by default:
23
+
24
+ ```ts title="modern.config.ts"
25
+ import { defineConfig } from '@modern-js/app-tools';
26
+
27
+ export default defineConfig({
28
+ server: {
29
+ ssr: true, // Streaming rendering enabled by default
30
+ },
31
+ });
32
+ ```
33
+
34
+ If you need to explicitly specify streaming rendering mode, you can configure:
17
35
 
18
36
  ```ts title="modern.config.ts"
19
37
  import { defineConfig } from '@modern-js/app-tools';
@@ -21,7 +39,7 @@ import { defineConfig } from '@modern-js/app-tools';
21
39
  export default defineConfig({
22
40
  server: {
23
41
  ssr: {
24
- mode: 'stream',
42
+ mode: 'stream', // Explicitly specify streaming rendering mode
25
43
  },
26
44
  },
27
45
  });
@@ -29,7 +47,6 @@ export default defineConfig({
29
47
 
30
48
  Modern.js streaming rendering is based on React Router and involves several key APIs:
31
49
 
32
- - [`defer`](https://reactrouter.com/en/main/utils/defer): Used in Data Loader to support asynchronous data fetching.
33
50
  - [`Await`](https://reactrouter.com/en/main/components/await): Used to render the asynchronous data returned by the Data Loader.
34
51
  - [`useAsyncValue`](https://reactrouter.com/en/main/hooks/use-async-value): Used to fetch data from the nearest parent `Await` component.
35
52
 
@@ -226,5 +243,8 @@ import StreamSSRPerformance from '@site-docs-en/components/stream-ssr-performanc
226
243
 
227
244
  ## Related Documentation
228
245
 
229
- 1. [Deferred Data](https://reactrouter.com/en/main/guides/deferred)
230
- 2. [New Suspense SSR Architecture in React 18](https://github.com/reactwg/react-18/discussions/37)
246
+ - [Rendering Mode Overview](/guides/basic-features/render/overview)
247
+ - [Server-Side Rendering (SSR)](/guides/basic-features/render/ssr)
248
+ - [Rendering Cache](/guides/basic-features/render/ssr-cache)
249
+ - [React Server Components (RSC)](/guides/basic-features/render/rsc) - Use with Streaming SSR
250
+ - [New Suspense SSR Architecture in React 18](https://github.com/reactwg/react-18/discussions/37) - React 18 Architecture Overview
@@ -0,0 +1 @@
1
+ ["routes", "config-routes"]
@@ -0,0 +1,427 @@
1
+ ---
2
+ sidebar_position: 3
3
+ ---
4
+
5
+ # Config Routes
6
+
7
+ By default, Modern.js recommends using [Convention Routes](./routes.mdx) as the way to define routes. At the same time, Modern.js also provides a config-based routing capability that can be used together with convention routes or used separately.
8
+
9
+
10
+ ## When to Use Config Routes
11
+
12
+ Config routes are particularly useful in the following scenarios:
13
+
14
+ - **Need flexible route control**: When the file structure cannot directly map to the desired URL structure
15
+ - **Multiple routes pointing to the same component**: Need to point different URL paths to the same page component
16
+ - **Conditional routes**: Dynamically configure routes based on different conditions
17
+ - **Legacy project migration**: Maintain the original routing structure when migrating from other routing systems
18
+ - **Complex route naming**: Need to customize route paths without being limited by file directory structure
19
+
20
+ ## Basic Usage
21
+
22
+ In the `src` directory or each entry directory, you can define a `modern.routes.[tj]s` file to configure routes:
23
+
24
+ ```ts
25
+ import { defineRoutes } from '@modern-js/runtime/config-routes'
26
+
27
+ export default defineRoutes(({ route, layout, page, $ }, fileRoutes) => {
28
+ return [
29
+ route("home.tsx", "/"),
30
+ ]
31
+ })
32
+ ```
33
+
34
+ ### Function Signature Description
35
+
36
+ `defineRoutes` accepts a callback function with two parameters:
37
+ 1. `routeFunctions`: An object containing `route`, `layout`, `page`, `$` functions
38
+ 2. `fileRoutes`: An array of route configurations generated by convention routes
39
+
40
+ Basic signature of route functions:
41
+ - First parameter: File path relative to `modern.routes.[tj]s`
42
+ - Second parameter: Route path (optional, must be a string)
43
+ - Third parameter: Array of child routes (optional)
44
+
45
+
46
+ ## Route Functions
47
+
48
+ Modern.js provides four main route configuration functions:
49
+
50
+ :::tip Path Description
51
+
52
+ The first parameter (path) of all route functions is a **relative path**, which will be concatenated with the parent path to generate the final route path:
53
+ - **Root path**: `"/"` or `""` represents the root path of the current level
54
+ - **Relative path**: Child route paths will be concatenated relative to the parent path
55
+ - **Dynamic path**: Use `:param` syntax to represent dynamic parameters
56
+ - **Wildcard path**: Use `"*"` syntax to match all paths
57
+
58
+ :::
59
+
60
+ :::info
61
+
62
+ - The first parameter (component file path) of functions like `route`, `layout`, `page`, `$` must point to real files in the current project. Files from `node_modules` and other repositories in Monorepo are not currently supported.
63
+ - Path aliases are not supported (such as `@/pages/...`, `~/pages/...`, etc.); please use relative paths relative to `modern.routes.[tj]s`.
64
+
65
+ :::
66
+
67
+ ### `route` Function
68
+
69
+ The `route` function is a general-purpose route configuration function that automatically determines whether to generate a page route or layout route based on whether there are child routes. It can replace `layout`, `page`, `$` and other functions.
70
+
71
+ ```ts
72
+ export default defineRoutes(({ route }, fileRoutes) => {
73
+ return [
74
+ // When no child routes, automatically generates page route
75
+ route("home.tsx", "/"),
76
+ route("about.tsx", "about"),
77
+
78
+ // When has child routes, automatically generates layout route
79
+ // dashboard/layout.tsx needs to contain <Outlet> to render child routes
80
+ route("dashboard/layout.tsx", "dashboard", [
81
+ route("dashboard/overview.tsx", "overview"), // Generated path: /dashboard/overview
82
+ route("dashboard/settings.tsx", "settings"), // Generated path: /dashboard/settings
83
+ ]),
84
+
85
+ // Dynamic routes
86
+ route("products/detail.tsx", "products/:id"),
87
+
88
+ // Multiple paths pointing to the same component
89
+ route("user/profile.tsx", "user"),
90
+ route("user/profile.tsx", "profile"),
91
+ ]
92
+ })
93
+ ```
94
+
95
+ **Use cases**:
96
+ - Quick route configuration without explicitly specifying page or layout
97
+ - Simplify the complexity of route configuration
98
+
99
+ ### `layout` Function
100
+
101
+ The `layout` function is specifically used to configure layout routes, always generates layout components, and must contain child routes:
102
+
103
+ ```ts
104
+ export default defineRoutes(({ layout, page }, fileRoutes) => {
105
+ return [
106
+ // Generate layout route with path "/auth", must contain child routes
107
+ layout("auth/layout.tsx", "auth", [
108
+ page("auth/login/page.tsx", "login"), // Generated path: /auth/login
109
+ page("auth/register/page.tsx", "register"), // Generated path: /auth/register
110
+ ]),
111
+ ]
112
+ })
113
+ ```
114
+
115
+ **Use cases**:
116
+ - Need to explicitly specify a component as a layout component
117
+ - Provide common layout structure for multiple pages
118
+ - Need to share navigation, sidebar and other UI components across multiple routes
119
+
120
+ ### `page` Function
121
+
122
+ The `page` function is specifically used to configure page routes, always generates page components:
123
+
124
+ ```ts
125
+ export default defineRoutes(({ layout, page }, fileRoutes) => {
126
+ return [
127
+ layout("dashboard/layout.tsx", "dashboard", [
128
+ page("dashboard/overview.tsx", "overview"), // Generated path: /dashboard/overview
129
+ page("dashboard/settings.tsx", "settings"), // Generated path: /dashboard/settings
130
+ ]),
131
+ ]
132
+ })
133
+ ```
134
+
135
+ **Use cases**:
136
+ - Need to explicitly specify a component as a page component
137
+ - Ensure the component does not contain `<Outlet>` child component rendering
138
+ - Provide clearer semantic expression
139
+
140
+ ### `$` Function
141
+
142
+ The `$` function is specifically used to configure wildcard routes for handling unmatched routes:
143
+
144
+ ```ts
145
+ export default defineRoutes(({ layout, page, $ }, fileRoutes) => {
146
+ return [
147
+ layout("blog/layout.tsx", "blog", [
148
+ page("blog/page.tsx", ""), // Generated path: /blog
149
+ page("blog/[id]/page.tsx", ":id"), // Generated path: /blog/:id
150
+ $("blog/$.tsx", "*"), // Wildcard route, matches all unmatched paths under /blog
151
+ ]),
152
+ ]
153
+ })
154
+ ```
155
+
156
+ **Use cases**:
157
+ - Custom 404 pages
158
+ - Handle all unmatched requests under specific paths
159
+
160
+ :::tip
161
+ The `$` function has the same functionality as the `$.tsx` file in convention routes, used to catch unmatched route requests.
162
+ :::
163
+
164
+
165
+ ## Configuring Routes
166
+
167
+ ### Basic Example
168
+
169
+ ```ts
170
+ export default defineRoutes(({ page }, fileRoutes) => {
171
+ return [
172
+ // Use page function to explicitly specify page route
173
+ page("home.tsx", "/"),
174
+ page("about.tsx", "about"),
175
+ page("contact.tsx", "contact"),
176
+ ]
177
+ })
178
+ ```
179
+
180
+ ### Routes Without Path
181
+
182
+ When no path is specified, routes inherit the parent path:
183
+
184
+ ```ts
185
+ export default defineRoutes(({ layout, page }, fileRoutes) => {
186
+ return [
187
+ // Use layout function to explicitly specify layout route
188
+ // auth/layout.tsx needs to contain <Outlet> to render child routes
189
+ layout("auth/layout.tsx", [
190
+ page("login/page.tsx", "login"),
191
+ page("register/page.tsx", "register"),
192
+ ]),
193
+ ]
194
+ })
195
+ ```
196
+
197
+ The above configuration will generate:
198
+ - `/login` → `auth/layout.tsx` + `login/page.tsx`
199
+ - `/register` → `auth/layout.tsx` + `register/page.tsx`
200
+
201
+ ### Multiple Paths Pointing to the Same Component
202
+
203
+ ```ts
204
+ export default defineRoutes(({ page }, fileRoutes) => {
205
+ return [
206
+ page("user.tsx", "user"),
207
+ page("user.tsx", "profile"),
208
+ page("user.tsx", "account"),
209
+ ]
210
+ })
211
+ ```
212
+
213
+
214
+ ### Dynamic Routes
215
+
216
+ Config routes support dynamic route parameters:
217
+
218
+ ```ts
219
+ export default defineRoutes(({ page }, fileRoutes) => {
220
+ return [
221
+ // Required parameter
222
+ page("blog/detail.tsx", "blog/:id"),
223
+
224
+ // Optional parameter
225
+ page("blog/index.tsx", "blog/:slug?"),
226
+ ]
227
+ })
228
+ ```
229
+
230
+
231
+ ## Automatic Route-Related File Discovery
232
+
233
+ Config routes automatically discover component-related files without manual configuration. For any component file specified in `modern.routes.[tj]s`, Modern.js will automatically find the following related files:
234
+
235
+ ```ts
236
+ // modern.routes.[tj]s
237
+ export default defineRoutes(({ route }, fileRoutes) => {
238
+ return [
239
+ route("pages/profile.tsx", "profile"),
240
+ route("pages/user/detail.tsx", "user/:id"),
241
+ ]
242
+ })
243
+ ```
244
+
245
+ Modern.js will automatically find and load:
246
+
247
+ - `pages/profile.data.ts` → Data loader
248
+ - `pages/profile.config.ts` → Route configuration
249
+ - `pages/profile.error.tsx` → Error boundary
250
+ - `pages/profile.loading.tsx` → Loading component
251
+
252
+ ### Discovery Rules
253
+
254
+ - **File location**: Related files must be in the same directory as the component file
255
+ - **File naming**: Related file names are the same as the component file name (excluding extension)
256
+ - **Auto-discovery**: Modern.js automatically discovers and loads these files
257
+
258
+ :::tip
259
+
260
+ For more detailed information about data fetching, please refer to the [Data Fetching](../data/data-fetch.mdx) documentation. For Loading component usage, please refer to [Convention Routes - Loading](./routes.mdx#loading-experimental).
261
+
262
+ :::
263
+
264
+ ## Route Merging
265
+
266
+ Config routes can be used together with convention routes. You can merge routes by modifying the `fileRoutes` parameter:
267
+
268
+ 1. **Override routes**: You can actively remove convention routes and replace them with config routes
269
+ 2. **Supplement routes**: You can add new config routes based on convention routes
270
+ 3. **Mixed usage**: You can add config child routes under convention layout routes
271
+
272
+ :::info
273
+
274
+ Current route structure can be viewed through the [`modern routes`](#debugging-routes) command
275
+
276
+ :::
277
+
278
+ ### Merging Examples
279
+
280
+ The following examples demonstrate how to merge config routes with convention routes:
281
+
282
+ ```ts
283
+ // modern.routes.ts
284
+ import { defineRoutes } from '@modern-js/runtime/config-routes';
285
+
286
+ export default defineRoutes(({ page }, fileRoutes) => {
287
+ // Scenario 1: Override convention routes
288
+ // Remove the original shop route and replace with custom component
289
+ const shopPageIndex = fileRoutes[0].children?.findIndex(
290
+ route => route.id === 'three_shop/page',
291
+ );
292
+ fileRoutes[0].children?.splice(shopPageIndex!, 1);
293
+ fileRoutes[0].children?.push(page('routes/CustomShop.tsx', 'shop'));
294
+
295
+ // Scenario 2: Supplement convention routes
296
+ // Add config routes without corresponding convention routes
297
+ fileRoutes[0].children?.push(page('routes/Settings.tsx', 'settings'));
298
+
299
+ // Scenario 3: Mixed nested routes
300
+ // Add config child routes under convention layout routes
301
+ const userRoute = fileRoutes[0].children?.find(
302
+ (route: any) => route.path === 'user',
303
+ );
304
+ if (userRoute?.children) {
305
+ userRoute.children.push(page('routes/user/CustomTab.tsx', 'custom-tab'));
306
+ }
307
+
308
+ // Scenario 4: Automatic discovery of related files
309
+ // Product.tsx will automatically discover Product.data.ts and Product.error.tsx
310
+ fileRoutes[0].children?.push(page('routes/Product.tsx', 'product/:id'));
311
+
312
+ return fileRoutes;
313
+ });
314
+ ```
315
+
316
+ ## Debugging Routes
317
+
318
+ Since the final structure after route merging may not be intuitive, Modern.js provides debugging commands to help you view complete route information:
319
+
320
+ ```bash
321
+ # Generate route structure analysis report
322
+ npx modern routes
323
+ ```
324
+
325
+ This command will generate the final route structure in the `dist/routes-inspect.json` file, helping you understand the complete route information after merging.
326
+
327
+ ### Report File Examples
328
+
329
+ #### Single Entry Scenario
330
+
331
+ ```json title="dist/routes-inspect.json"
332
+ {
333
+ "routes": [
334
+ {
335
+ "path": "/",
336
+ "component": "@_modern_js_src/routes/page",
337
+ "data": "@_modern_js_src/routes/page.data",
338
+ "clientData": "@_modern_js_src/routes/page.data.client",
339
+ "error": "@_modern_js_src/routes/page.error",
340
+ "loading": "@_modern_js_src/routes/page.loading"
341
+ },
342
+ {
343
+ "path": "/dashboard",
344
+ "component": "pages/admin",
345
+ "config": "pages/admin.config",
346
+ "error": "pages/admin.error"
347
+ },
348
+ {
349
+ "path": "/user",
350
+ "component": "layouts/user",
351
+ "children": [
352
+ {
353
+ "path": "/user/profile",
354
+ "component": "@_modern_js_src/routes/user/profile",
355
+ "data": "@_modern_js_src/routes/user/profile.data"
356
+ }
357
+ ]
358
+ },
359
+ {
360
+ "path": "@_modern_js_src/routes/blog/:id",
361
+ "component": "blog/detail",
362
+ "params": ["id"],
363
+ "data": "blog/detail.data",
364
+ "loading": "blog/detail.loading"
365
+ },
366
+ {
367
+ "path": "/files/*",
368
+ "component": "@_modern_js_src/routes/files/list"
369
+ }
370
+ ]
371
+ }
372
+ ```
373
+
374
+ #### Multi-entry Scenario
375
+
376
+ In multi-entry projects, the report file will be grouped by entry name, where the key is entryName:
377
+
378
+ ```json title="dist/routes-inspect.json"
379
+ {
380
+ "main": {
381
+ "routes": [
382
+ {
383
+ "path": "/",
384
+ "component": "@_modern_js_src/routes/page",
385
+ "data": "@_modern_js_src/routes/page.data",
386
+ "error": "@_modern_js_src/routes/page.error",
387
+ "loading": "@_modern_js_src/routes/page.loading"
388
+ },
389
+ {
390
+ "path": "/dashboard",
391
+ "component": "@_modern_js_src/routes/dashboard",
392
+ "config": "@_modern_js_src/routes/dashboard.config"
393
+ }
394
+ ]
395
+ },
396
+ "admin": {
397
+ "routes": [
398
+ {
399
+ "path": "/",
400
+ "component": "@_modern_js_src/routes/dashboard",
401
+ "data": "@_modern_js_src/routes/dashboard.data",
402
+ "clientData": "@_modern_js_src/routes/dashboard.data.client",
403
+ "config": "@_modern_js_src/routes/dashboard.config"
404
+ },
405
+ {
406
+ "path": "/users",
407
+ "component": "@_modern_js_src/routes/users",
408
+ "data": "@_modern_js_src/routes/users.data",
409
+ "error": "@_modern_js_src/routes/users.error",
410
+ "loading": "@_modern_js_src/routes/users.loading"
411
+ }
412
+ ]
413
+ }
414
+ }
415
+ ```
416
+
417
+ #### Route-Related File Field Descriptions
418
+
419
+ In addition to basic route information, the report also displays related files found for each route:
420
+
421
+ - **`data`**: Server-side data loading file (`.data.ts`), used to fetch data on the server
422
+ - **`clientData`**: Client-side data loading file (`.data.client.ts`), used to refetch data on the client
423
+ - **`error`**: Error boundary file (`.error.tsx`), used to handle route rendering errors
424
+ - **`loading`**: Loading state component file (`.loading.tsx`), used to display data loading state
425
+ - **`config`**: Route configuration file (`.config.ts`), used to configure route metadata
426
+
427
+ These fields are optional and will only be displayed in the report when corresponding files are found. By viewing these fields, you can quickly understand the complete file structure for each route.