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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/docs/en/{_meta.json → _nav.json} +5 -1
  2. package/docs/en/apis/app/commands.mdx +8 -33
  3. package/docs/en/apis/app/hooks/src/entry.mdx +1 -5
  4. package/docs/en/apis/app/hooks/src/entry.server.mdx +4 -5
  5. package/docs/en/apis/app/hooks/src/routes.mdx +2 -2
  6. package/docs/en/apis/app/runtime/_meta.json +0 -18
  7. package/docs/en/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  8. package/docs/en/apis/app/runtime/router/router.mdx +1 -1
  9. package/docs/en/apis/app/runtime/utility/css-in-js.mdx +3 -2
  10. package/docs/en/community/blog/v2-release-note.mdx +0 -2
  11. package/docs/en/community/contributing-guide.mdx +10 -12
  12. package/docs/en/components/bff-upload.mdx +19 -17
  13. package/docs/en/components/build-output.mdx +45 -0
  14. package/docs/en/components/bundler.mdx +1 -1
  15. package/docs/en/components/debug-app.mdx +1 -1
  16. package/docs/en/components/enable-bff-caution.mdx +2 -2
  17. package/docs/en/components/enable-bff.mdx +42 -8
  18. package/docs/en/components/enable-ssg.mdx +49 -0
  19. package/docs/en/components/entry-scan-logic.mdx +7 -0
  20. package/docs/en/components/esbuild.mdx +2 -2
  21. package/docs/en/components/extend-bff-function.mdx +2 -4
  22. package/docs/en/components/hono.mdx +119 -0
  23. package/docs/en/components/init-app.mdx +40 -17
  24. package/docs/en/components/international/custom-instance-code.mdx +16 -0
  25. package/docs/en/components/international/init-options-desc.mdx +1 -0
  26. package/docs/en/components/international/install-command.mdx +23 -0
  27. package/docs/en/components/international/instance-code.mdx +26 -0
  28. package/docs/en/components/international/introduce.mdx +2 -0
  29. package/docs/en/components/module-federation.mdx +4 -4
  30. package/docs/en/components/nodeVersion.mdx +2 -6
  31. package/docs/en/components/prerequisites.mdx +1 -1
  32. package/docs/en/components/ua-polyfill.mdx +16 -12
  33. package/docs/en/components/upgrade-config-deploy.mdx +0 -0
  34. package/docs/en/configure/_meta.json +7 -8
  35. package/docs/en/configure/app/bff/cross-project.mdx +24 -0
  36. package/docs/en/configure/app/builder-plugins.mdx +1 -2
  37. package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
  38. package/docs/en/configure/app/dev/server.mdx +211 -0
  39. package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
  40. package/docs/en/configure/app/experiments/source-build.mdx +0 -1
  41. package/docs/en/configure/app/html/app-icon.mdx +1 -23
  42. package/docs/en/configure/app/output/assets-retry.mdx +1 -1
  43. package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  44. package/docs/en/configure/app/output/filename.mdx +2 -4
  45. package/docs/en/configure/app/output/inline-scripts.mdx +1 -1
  46. package/docs/en/configure/app/output/override-browserslist.mdx +6 -4
  47. package/docs/en/configure/app/output/source-map.mdx +6 -3
  48. package/docs/en/configure/app/output/ssg.mdx +12 -43
  49. package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
  50. package/docs/en/configure/app/output/temp-dir.mdx +3 -3
  51. package/docs/en/configure/app/performance/build-cache.mdx +1 -5
  52. package/docs/en/configure/app/performance/profile.mdx +1 -1
  53. package/docs/en/configure/app/plugins.mdx +1 -3
  54. package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
  55. package/docs/en/configure/app/resolve/alias.mdx +13 -0
  56. package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
  57. package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
  58. package/docs/en/configure/app/resolve/extensions.mdx +18 -0
  59. package/docs/en/configure/app/runtime/0-intro.mdx +2 -51
  60. package/docs/en/configure/app/runtime/router.mdx +0 -4
  61. package/docs/en/configure/app/security/check-syntax.mdx +1 -1
  62. package/docs/en/configure/app/security/sri.mdx +0 -1
  63. package/docs/en/configure/app/server/port.mdx +1 -21
  64. package/docs/en/configure/app/server/rsc.mdx +30 -0
  65. package/docs/en/configure/app/server/ssr.mdx +20 -9
  66. package/docs/en/configure/app/source/alias.mdx +1 -1
  67. package/docs/en/configure/app/source/decorators.mdx +4 -2
  68. package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
  69. package/docs/en/configure/app/source/entries.mdx +0 -2
  70. package/docs/en/configure/app/source/include.mdx +2 -14
  71. package/docs/en/configure/app/source/main-entry-name.mdx +4 -4
  72. package/docs/en/configure/app/source/transform-import.mdx +1 -59
  73. package/docs/en/configure/app/tools/bundler-chain.mdx +5 -5
  74. package/docs/en/configure/app/tools/css-extract.mdx +1 -1
  75. package/docs/en/configure/app/tools/dev-server.mdx +22 -256
  76. package/docs/en/configure/app/tools/html-plugin.mdx +3 -3
  77. package/docs/en/configure/app/tools/lightningcss-loader.mdx +0 -1
  78. package/docs/en/configure/app/tools/swc.mdx +1 -43
  79. package/docs/en/configure/app/usage.mdx +5 -27
  80. package/docs/en/guides/_meta.json +5 -1
  81. package/docs/en/guides/advanced-features/_meta.json +6 -0
  82. package/docs/en/guides/advanced-features/bff/_meta.json +9 -1
  83. package/docs/en/guides/advanced-features/bff/cross-project.mdx +2 -8
  84. package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
  85. package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -15
  86. package/docs/en/guides/advanced-features/bff/function.mdx +6 -10
  87. package/docs/en/guides/advanced-features/bff/operators.mdx +628 -0
  88. package/docs/en/guides/advanced-features/bff/sdk.mdx +20 -12
  89. package/docs/en/guides/advanced-features/bff/upload.mdx +3 -1
  90. package/docs/en/guides/advanced-features/build-performance.mdx +23 -26
  91. package/docs/en/guides/advanced-features/compatibility.mdx +53 -9
  92. package/docs/en/guides/advanced-features/international/_meta.json +11 -0
  93. package/docs/en/guides/advanced-features/international/advanced.mdx +193 -0
  94. package/docs/en/guides/advanced-features/international/api.mdx +400 -0
  95. package/docs/en/guides/advanced-features/international/basic.mdx +417 -0
  96. package/docs/en/guides/advanced-features/international/best-practices.mdx +135 -0
  97. package/docs/en/guides/advanced-features/international/configuration.mdx +428 -0
  98. package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
  99. package/docs/en/guides/advanced-features/international/quick-start.mdx +126 -0
  100. package/docs/en/guides/advanced-features/international/resource-loading.mdx +417 -0
  101. package/docs/en/guides/advanced-features/international/routing.mdx +212 -0
  102. package/docs/en/guides/advanced-features/international.mdx +37 -0
  103. package/docs/en/guides/advanced-features/low-level.mdx +21 -16
  104. package/docs/en/guides/advanced-features/page-performance/code-split.mdx +4 -4
  105. package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  106. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +8 -22
  107. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +19 -12
  108. package/docs/en/guides/advanced-features/rspack-start.mdx +3 -23
  109. package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
  110. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +121 -36
  111. package/docs/en/guides/advanced-features/web-server.mdx +82 -299
  112. package/docs/en/guides/basic-features/_meta.json +6 -1
  113. package/docs/en/guides/basic-features/css/css-in-js.mdx +46 -11
  114. package/docs/en/guides/basic-features/css/css-modules.mdx +5 -17
  115. package/docs/en/guides/basic-features/css/css.mdx +3 -3
  116. package/docs/en/guides/basic-features/css/tailwindcss.mdx +5 -89
  117. package/docs/en/guides/basic-features/data/data-cache.mdx +65 -77
  118. package/docs/en/guides/basic-features/data/data-fetch.mdx +19 -18
  119. package/docs/en/guides/basic-features/data/data-write.mdx +2 -2
  120. package/docs/en/guides/basic-features/debug/mock.mdx +4 -1
  121. package/docs/en/guides/basic-features/debug/proxy.mdx +6 -17
  122. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +5 -5
  123. package/docs/en/guides/basic-features/deploy.mdx +25 -18
  124. package/docs/en/guides/basic-features/env-vars.mdx +1 -1
  125. package/docs/en/guides/basic-features/html.mdx +1 -1
  126. package/docs/en/guides/basic-features/output-files.mdx +3 -3
  127. package/docs/en/guides/basic-features/render/_meta.json +1 -1
  128. package/docs/en/guides/basic-features/render/before-render.mdx +16 -23
  129. package/docs/en/guides/basic-features/render/overview.mdx +51 -0
  130. package/docs/en/guides/basic-features/render/rsc.mdx +399 -0
  131. package/docs/en/guides/basic-features/render/ssg.mdx +26 -67
  132. package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -10
  133. package/docs/en/guides/basic-features/render/ssr.mdx +31 -31
  134. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +29 -9
  135. package/docs/en/guides/basic-features/routes/_meta.json +1 -0
  136. package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
  137. package/docs/en/guides/basic-features/{routes.mdx → routes/routes.mdx} +7 -110
  138. package/docs/en/guides/basic-features/static-assets/json-files.mdx +21 -3
  139. package/docs/en/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  140. package/docs/en/guides/basic-features/static-assets.mdx +2 -2
  141. package/docs/en/guides/concept/builder.mdx +27 -12
  142. package/docs/en/guides/concept/entries.mdx +139 -147
  143. package/docs/en/guides/get-started/glossary.mdx +0 -18
  144. package/docs/en/guides/get-started/introduction.mdx +1 -4
  145. package/docs/en/guides/get-started/quick-start.mdx +4 -71
  146. package/docs/en/guides/get-started/tech-stack.mdx +7 -27
  147. package/docs/en/guides/get-started/upgrade.mdx +30 -23
  148. package/docs/en/guides/topic-detail/_meta.json +0 -12
  149. package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -1
  150. package/docs/en/guides/topic-detail/module-federation/application.mdx +16 -15
  151. package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
  152. package/docs/en/guides/topic-detail/module-federation/introduce.mdx +5 -4
  153. package/docs/en/guides/topic-detail/module-federation/ssr.mdx +50 -2
  154. package/docs/en/guides/topic-detail/module-federation/usage.mdx +10 -30
  155. package/docs/en/guides/troubleshooting/builder.mdx +3 -82
  156. package/docs/en/guides/troubleshooting/cli.mdx +6 -30
  157. package/docs/en/guides/troubleshooting/dependencies.mdx +22 -22
  158. package/docs/en/guides/upgrade/_meta.json +1 -0
  159. package/docs/en/guides/upgrade/config.mdx +936 -0
  160. package/docs/en/guides/upgrade/entry.mdx +463 -0
  161. package/docs/en/guides/upgrade/other.mdx +83 -0
  162. package/docs/en/guides/upgrade/overview.mdx +33 -0
  163. package/docs/en/guides/upgrade/tailwindcss.mdx +130 -0
  164. package/docs/en/guides/upgrade/web-server.mdx +91 -0
  165. package/docs/en/plugin/_meta.json +5 -0
  166. package/docs/en/plugin/cli-plugins/_meta.json +1 -1
  167. package/docs/en/plugin/cli-plugins/api.mdx +17 -68
  168. package/docs/en/plugin/cli-plugins/life-cycle.mdx +0 -4
  169. package/docs/en/plugin/introduction.mdx +44 -44
  170. package/docs/en/plugin/official/_meta.json +0 -5
  171. package/docs/en/plugin/official/cli-plugins/_meta.json +1 -1
  172. package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  173. package/docs/en/plugin/official/cli-plugins.mdx +0 -2
  174. package/docs/en/plugin/plugin-system.mdx +69 -62
  175. package/docs/en/plugin/runtime-plugins/_meta.json +1 -1
  176. package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
  177. package/docs/en/plugin/server-plugins/_meta.json +1 -0
  178. package/docs/en/plugin/server-plugins/api.mdx +210 -1
  179. package/docs/en/plugin/server-plugins/life-cycle.mdx +41 -1
  180. package/docs/en/tutorials/_meta.json +0 -10
  181. package/docs/en/tutorials/examples/csr-auth.mdx +1 -1
  182. package/docs/en/tutorials/foundations/introduction.mdx +9 -25
  183. package/docs/zh/{_meta.json → _nav.json} +10 -6
  184. package/docs/zh/apis/app/commands.mdx +8 -33
  185. package/docs/zh/apis/app/hooks/src/entry.mdx +1 -5
  186. package/docs/zh/apis/app/hooks/src/entry.server.mdx +4 -5
  187. package/docs/zh/apis/app/hooks/src/routes.mdx +2 -2
  188. package/docs/zh/apis/app/runtime/_meta.json +0 -18
  189. package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  190. package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +3 -2
  191. package/docs/zh/community/blog/v2-release-note.mdx +0 -2
  192. package/docs/zh/community/contributing-guide.mdx +10 -12
  193. package/docs/zh/components/auto-upgrade.mdx +0 -0
  194. package/docs/zh/components/bff-operator-code.mdx +5 -0
  195. package/docs/zh/components/bff-upload.mdx +8 -7
  196. package/docs/zh/components/build-output.mdx +45 -0
  197. package/docs/zh/components/bundler.mdx +1 -1
  198. package/docs/zh/components/debug-app.mdx +1 -1
  199. package/docs/zh/components/enable-bff-caution.mdx +1 -1
  200. package/docs/zh/components/enable-bff.mdx +41 -8
  201. package/docs/zh/components/enable-ssg.mdx +49 -0
  202. package/docs/zh/components/entry-scan-logic.mdx +7 -0
  203. package/docs/zh/components/esbuild.mdx +2 -2
  204. package/docs/zh/components/extend-bff-function.mdx +2 -4
  205. package/docs/zh/components/hono.mdx +119 -0
  206. package/docs/zh/components/init-app.mdx +40 -18
  207. package/docs/zh/components/international/custom-instance-code.mdx +16 -0
  208. package/docs/zh/components/international/init-options-desc.mdx +1 -0
  209. package/docs/zh/components/international/install-command.mdx +23 -0
  210. package/docs/zh/components/international/instance-code.mdx +26 -0
  211. package/docs/zh/components/international/introduce.mdx +2 -0
  212. package/docs/zh/components/international/platform-support.mdx +0 -0
  213. package/docs/zh/components/module-federation.mdx +4 -4
  214. package/docs/zh/components/new-entry-tooltip.mdx +0 -0
  215. package/docs/zh/components/nodeVersion.mdx +3 -7
  216. package/docs/zh/components/prerequisites.mdx +1 -1
  217. package/docs/zh/components/self-route-example.mdx +3 -3
  218. package/docs/zh/components/ua-polyfill.mdx +11 -6
  219. package/docs/zh/components/upgrade-browserslist.mdx +0 -0
  220. package/docs/zh/components/upgrade-config-deploy.mdx +0 -0
  221. package/docs/zh/configure/_meta.json +7 -8
  222. package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
  223. package/docs/zh/configure/app/builder-plugins.mdx +1 -2
  224. package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
  225. package/docs/zh/configure/app/dev/server.mdx +211 -0
  226. package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
  227. package/docs/zh/configure/app/experiments/source-build.mdx +0 -1
  228. package/docs/zh/configure/app/html/app-icon.mdx +1 -23
  229. package/docs/zh/configure/app/output/assets-retry.mdx +1 -1
  230. package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  231. package/docs/zh/configure/app/output/filename.mdx +2 -4
  232. package/docs/zh/configure/app/output/inline-scripts.mdx +1 -1
  233. package/docs/zh/configure/app/output/override-browserslist.mdx +3 -3
  234. package/docs/zh/configure/app/output/source-map.mdx +10 -3
  235. package/docs/zh/configure/app/output/ssg.mdx +13 -45
  236. package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
  237. package/docs/zh/configure/app/output/temp-dir.mdx +3 -3
  238. package/docs/zh/configure/app/performance/build-cache.mdx +1 -5
  239. package/docs/zh/configure/app/performance/profile.mdx +1 -1
  240. package/docs/zh/configure/app/plugins.mdx +1 -2
  241. package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
  242. package/docs/zh/configure/app/resolve/alias.mdx +13 -0
  243. package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
  244. package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
  245. package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
  246. package/docs/zh/configure/app/runtime/0-intro.mdx +2 -53
  247. package/docs/zh/configure/app/runtime/router.mdx +0 -4
  248. package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
  249. package/docs/zh/configure/app/security/sri.mdx +0 -1
  250. package/docs/zh/configure/app/server/port.mdx +2 -21
  251. package/docs/zh/configure/app/server/rsc.mdx +30 -0
  252. package/docs/zh/configure/app/server/ssr.mdx +21 -11
  253. package/docs/zh/configure/app/source/alias.mdx +1 -1
  254. package/docs/zh/configure/app/source/decorators.mdx +4 -4
  255. package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
  256. package/docs/zh/configure/app/source/entries.mdx +0 -2
  257. package/docs/zh/configure/app/source/include.mdx +2 -16
  258. package/docs/zh/configure/app/source/main-entry-name.mdx +4 -4
  259. package/docs/zh/configure/app/source/transform-import.mdx +1 -59
  260. package/docs/zh/configure/app/tools/bundler-chain.mdx +6 -6
  261. package/docs/zh/configure/app/tools/css-extract.mdx +1 -1
  262. package/docs/zh/configure/app/tools/dev-server.mdx +14 -248
  263. package/docs/zh/configure/app/tools/html-plugin.mdx +3 -2
  264. package/docs/zh/configure/app/tools/lightningcss-loader.mdx +0 -1
  265. package/docs/zh/configure/app/tools/swc.mdx +1 -43
  266. package/docs/zh/configure/app/usage.mdx +6 -28
  267. package/docs/zh/guides/_meta.json +5 -1
  268. package/docs/zh/guides/advanced-features/_meta.json +6 -1
  269. package/docs/zh/guides/advanced-features/bff/_meta.json +9 -1
  270. package/docs/zh/guides/advanced-features/bff/cross-project.mdx +8 -16
  271. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +25 -8
  272. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +2 -16
  273. package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
  274. package/docs/zh/guides/advanced-features/bff/operators.mdx +628 -0
  275. package/docs/zh/guides/advanced-features/bff/sdk.mdx +23 -16
  276. package/docs/zh/guides/advanced-features/bff/upload.mdx +3 -1
  277. package/docs/zh/guides/advanced-features/build-performance.mdx +23 -30
  278. package/docs/zh/guides/advanced-features/compatibility.mdx +44 -0
  279. package/docs/zh/guides/advanced-features/international/_meta.json +11 -0
  280. package/docs/zh/guides/advanced-features/international/advanced.mdx +193 -0
  281. package/docs/zh/guides/advanced-features/international/api.mdx +400 -0
  282. package/docs/zh/guides/advanced-features/international/basic.mdx +416 -0
  283. package/docs/zh/guides/advanced-features/international/best-practices.mdx +135 -0
  284. package/docs/zh/guides/advanced-features/international/configuration.mdx +432 -0
  285. package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
  286. package/docs/zh/guides/advanced-features/international/quick-start.mdx +126 -0
  287. package/docs/zh/guides/advanced-features/international/resource-loading.mdx +417 -0
  288. package/docs/zh/guides/advanced-features/international/routing.mdx +212 -0
  289. package/docs/zh/guides/advanced-features/international.mdx +36 -0
  290. package/docs/zh/guides/advanced-features/low-level.mdx +21 -16
  291. package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +3 -3
  292. package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  293. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +8 -22
  294. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +19 -12
  295. package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
  296. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +120 -37
  297. package/docs/zh/guides/advanced-features/web-server.mdx +79 -300
  298. package/docs/zh/guides/basic-features/_meta.json +6 -1
  299. package/docs/zh/guides/basic-features/css/css-in-js.mdx +40 -5
  300. package/docs/zh/guides/basic-features/css/css-modules.mdx +6 -17
  301. package/docs/zh/guides/basic-features/css/css.mdx +2 -2
  302. package/docs/zh/guides/basic-features/css/tailwindcss.mdx +6 -90
  303. package/docs/zh/guides/basic-features/data/data-cache.mdx +55 -59
  304. package/docs/zh/guides/basic-features/data/data-fetch.mdx +14 -16
  305. package/docs/zh/guides/basic-features/data/data-write.mdx +4 -4
  306. package/docs/zh/guides/basic-features/debug/mock.mdx +4 -1
  307. package/docs/zh/guides/basic-features/debug/proxy.mdx +4 -15
  308. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +6 -6
  309. package/docs/zh/guides/basic-features/deploy.mdx +24 -20
  310. package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
  311. package/docs/zh/guides/basic-features/html.mdx +2 -2
  312. package/docs/zh/guides/basic-features/output-files.mdx +3 -3
  313. package/docs/zh/guides/basic-features/render/_meta.json +1 -1
  314. package/docs/zh/guides/basic-features/render/before-render.mdx +17 -24
  315. package/docs/zh/guides/basic-features/render/overview.mdx +52 -0
  316. package/docs/zh/guides/basic-features/render/rsc.mdx +399 -0
  317. package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
  318. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -9
  319. package/docs/zh/guides/basic-features/render/ssr.mdx +34 -31
  320. package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +34 -14
  321. package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
  322. package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
  323. package/docs/zh/guides/basic-features/{routes.mdx → routes/routes.mdx} +8 -114
  324. package/docs/zh/guides/basic-features/static-assets/json-files.mdx +21 -3
  325. package/docs/zh/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  326. package/docs/zh/guides/basic-features/static-assets.mdx +2 -2
  327. package/docs/zh/guides/basic-features/testing/cypress.mdx +5 -5
  328. package/docs/zh/guides/basic-features/testing/jest.mdx +12 -12
  329. package/docs/zh/guides/concept/builder.mdx +26 -11
  330. package/docs/zh/guides/concept/entries.mdx +95 -92
  331. package/docs/zh/guides/get-started/glossary.mdx +0 -18
  332. package/docs/zh/guides/get-started/introduction.mdx +1 -5
  333. package/docs/zh/guides/get-started/quick-start.mdx +5 -72
  334. package/docs/zh/guides/get-started/tech-stack.mdx +8 -28
  335. package/docs/zh/guides/get-started/upgrade.mdx +30 -23
  336. package/docs/zh/guides/topic-detail/_meta.json +0 -12
  337. package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -1
  338. package/docs/zh/guides/topic-detail/module-federation/application.mdx +18 -16
  339. package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
  340. package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +4 -4
  341. package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +51 -5
  342. package/docs/zh/guides/topic-detail/module-federation/usage.mdx +11 -31
  343. package/docs/zh/guides/troubleshooting/builder.mdx +4 -85
  344. package/docs/zh/guides/troubleshooting/cli.mdx +6 -30
  345. package/docs/zh/guides/troubleshooting/dependencies.mdx +23 -23
  346. package/docs/zh/guides/upgrade/_meta.json +1 -0
  347. package/docs/zh/guides/upgrade/config.mdx +940 -0
  348. package/docs/zh/guides/upgrade/entry.mdx +463 -0
  349. package/docs/zh/guides/upgrade/other.md +90 -0
  350. package/docs/zh/guides/upgrade/overview.mdx +36 -0
  351. package/docs/zh/guides/upgrade/tailwindcss.mdx +130 -0
  352. package/docs/zh/guides/upgrade/web-server.md +93 -0
  353. package/docs/zh/plugin/_meta.json +5 -0
  354. package/docs/zh/plugin/cli-plugins/_meta.json +1 -1
  355. package/docs/zh/plugin/cli-plugins/api.mdx +19 -70
  356. package/docs/zh/plugin/cli-plugins/life-cycle.mdx +0 -4
  357. package/docs/zh/plugin/introduction.mdx +40 -40
  358. package/docs/zh/plugin/official/_meta.json +0 -5
  359. package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -1
  360. package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  361. package/docs/zh/plugin/official/cli-plugins.mdx +0 -2
  362. package/docs/zh/plugin/plugin-system.mdx +43 -51
  363. package/docs/zh/plugin/runtime-plugins/_meta.json +1 -1
  364. package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
  365. package/docs/zh/plugin/server-plugins/_meta.json +1 -0
  366. package/docs/zh/plugin/server-plugins/api.mdx +210 -1
  367. package/docs/zh/plugin/server-plugins/life-cycle.mdx +41 -1
  368. package/docs/zh/tutorials/_meta.json +0 -10
  369. package/docs/zh/tutorials/examples/csr-auth.mdx +1 -1
  370. package/docs/zh/tutorials/foundations/introduction.mdx +8 -25
  371. package/i18n.json +0 -16
  372. package/package.json +12 -12
  373. package/rspress.config.ts +5 -8
  374. package/src/components/ContentCard/index.module.scss +11 -7
  375. package/src/components/ContentCard/index.tsx +1 -1
  376. package/src/components/FeatureLayout/index.module.css +1 -1
  377. package/src/components/Footer/index.tsx +2 -14
  378. package/src/components/Footer/styles.module.scss +5 -5
  379. package/src/components/FrameworkCode/index.tsx +605 -0
  380. package/src/components/ListCard/index.tsx +1 -1
  381. package/src/components/RandomMemberList/index.tsx +1 -1
  382. package/src/components/RsbuildLink/index.tsx +1 -1
  383. package/src/components/Sandpack/index.tsx +1 -1
  384. package/src/custom.scss +15 -0
  385. package/src/i18n/enUS.ts +2 -4
  386. package/src/i18n/index.ts +1 -1
  387. package/src/i18n/zhCN.ts +2 -4
  388. package/src/index.ts +2 -1
  389. package/src/pages/index.module.scss +59 -41
  390. package/src/pages/index.tsx +9 -24
  391. package/docs/en/apis/app/hooks/server/index_.mdx +0 -10
  392. package/docs/en/apis/app/hooks/src/index_.mdx +0 -38
  393. package/docs/en/apis/app/hooks/src/stories.mdx +0 -16
  394. package/docs/en/apis/app/runtime/app/define-config.mdx +0 -67
  395. package/docs/en/apis/app/runtime/core/bootstrap.mdx +0 -74
  396. package/docs/en/apis/app/runtime/core/create-app.mdx +0 -49
  397. package/docs/en/apis/app/runtime/core/use-loader.mdx +0 -89
  398. package/docs/en/apis/app/runtime/core/use-module-apps.mdx +0 -140
  399. package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  400. package/docs/en/apis/app/runtime/model/Provider.mdx +0 -36
  401. package/docs/en/apis/app/runtime/model/auto-actions.mdx +0 -122
  402. package/docs/en/apis/app/runtime/model/connect.mdx +0 -146
  403. package/docs/en/apis/app/runtime/model/create-app.mdx +0 -75
  404. package/docs/en/apis/app/runtime/model/create-store.mdx +0 -61
  405. package/docs/en/apis/app/runtime/model/handle-effect.mdx +0 -107
  406. package/docs/en/apis/app/runtime/model/model_.mdx +0 -198
  407. package/docs/en/apis/app/runtime/model/use-local-model.mdx +0 -29
  408. package/docs/en/apis/app/runtime/model/use-model.mdx +0 -89
  409. package/docs/en/apis/app/runtime/model/use-static-model.mdx +0 -51
  410. package/docs/en/apis/app/runtime/model/use-store.mdx +0 -26
  411. package/docs/en/apis/app/runtime/ssr/pre-render.mdx +0 -96
  412. package/docs/en/apis/app/runtime/web-server/hook.mdx +0 -134
  413. package/docs/en/apis/app/runtime/web-server/middleware.mdx +0 -113
  414. package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +0 -167
  415. package/docs/en/components/bff-proxy-path-rewrite.mdx +0 -16
  416. package/docs/en/components/bff-proxy-principle.mdx +0 -1
  417. package/docs/en/components/builder.mdx +0 -3
  418. package/docs/en/components/create-bff-api-app.mdx +0 -25
  419. package/docs/en/components/custom-router-micro-frontend.mdx +0 -40
  420. package/docs/en/components/enable-micro-frontend.mdx +0 -30
  421. package/docs/en/components/enableSwc.mdx +0 -17
  422. package/docs/en/components/global-proxy-config.mdx +0 -85
  423. package/docs/en/components/global-proxy.mdx +0 -29
  424. package/docs/en/components/package-manager.mdx +0 -11
  425. package/docs/en/components/reduck-notify.mdx +0 -27
  426. package/docs/en/components/reduck-tip.mdx +0 -8
  427. package/docs/en/configure/app/auto-load-plugin.mdx +0 -66
  428. package/docs/en/configure/app/deploy/microFrontend.mdx +0 -53
  429. package/docs/en/configure/app/dev/port.mdx +0 -25
  430. package/docs/en/configure/app/dev/proxy.mdx +0 -9
  431. package/docs/en/configure/app/experiments/lazy-compilation.mdx +0 -106
  432. package/docs/en/configure/app/html/disable-html-folder.mdx +0 -46
  433. package/docs/en/configure/app/html/favicon-by-entries.mdx +0 -36
  434. package/docs/en/configure/app/html/inject-by-entries.mdx +0 -36
  435. package/docs/en/configure/app/html/meta-by-entries.mdx +0 -48
  436. package/docs/en/configure/app/html/tags-by-entries.mdx +0 -44
  437. package/docs/en/configure/app/html/template-by-entries.mdx +0 -33
  438. package/docs/en/configure/app/html/template-parameters-by-entries.mdx +0 -35
  439. package/docs/en/configure/app/html/title-by-entries.mdx +0 -37
  440. package/docs/en/configure/app/output/css-module-local-ident-name.mdx +0 -21
  441. package/docs/en/configure/app/output/disable-css-extract.mdx +0 -16
  442. package/docs/en/configure/app/output/disable-filename-hash.mdx +0 -16
  443. package/docs/en/configure/app/output/disable-minimize.mdx +0 -14
  444. package/docs/en/configure/app/output/disable-node-polyfill.mdx +0 -22
  445. package/docs/en/configure/app/output/disable-source-map.mdx +0 -31
  446. package/docs/en/configure/app/output/enable-asset-fallback.mdx +0 -36
  447. package/docs/en/configure/app/output/enable-inline-scripts.mdx +0 -22
  448. package/docs/en/configure/app/output/enable-inline-styles.mdx +0 -22
  449. package/docs/en/configure/app/output/enable-latest-decorators.mdx +0 -14
  450. package/docs/en/configure/app/performance/bundle-analyze.mdx +0 -24
  451. package/docs/en/configure/app/performance/transform-lodash.mdx +0 -52
  452. package/docs/en/configure/app/runtime/master-app.mdx +0 -36
  453. package/docs/en/configure/app/runtime/state.mdx +0 -52
  454. package/docs/en/configure/app/source/disable-entry-dirs.mdx +0 -38
  455. package/docs/en/configure/app/source/enable-custom-entry.mdx +0 -68
  456. package/docs/en/configure/app/source/module-scopes.mdx +0 -72
  457. package/docs/en/configure/app/source/resolve-extension-prefix.mdx +0 -55
  458. package/docs/en/configure/app/source/resolve-main-fields.mdx +0 -46
  459. package/docs/en/configure/app/tools/babel.mdx +0 -225
  460. package/docs/en/configure/app/tools/esbuild.mdx +0 -44
  461. package/docs/en/configure/app/tools/pug.mdx +0 -54
  462. package/docs/en/configure/app/tools/styled-components.mdx +0 -55
  463. package/docs/en/configure/app/tools/tailwindcss.mdx +0 -98
  464. package/docs/en/configure/app/tools/terser.mdx +0 -58
  465. package/docs/en/configure/app/tools/ts-loader.mdx +0 -76
  466. package/docs/en/configure/app/tools/webpack-chain.mdx +0 -253
  467. package/docs/en/configure/app/tools/webpack.mdx +0 -309
  468. package/docs/en/guides/deprecated.md +0 -17
  469. package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -27
  470. package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +0 -290
  471. package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -298
  472. package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  473. package/docs/en/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -26
  474. package/docs/en/guides/topic-detail/model/_meta.json +0 -14
  475. package/docs/en/guides/topic-detail/model/auto-actions.mdx +0 -85
  476. package/docs/en/guides/topic-detail/model/computed-state.mdx +0 -148
  477. package/docs/en/guides/topic-detail/model/define-model.mdx +0 -62
  478. package/docs/en/guides/topic-detail/model/faq.mdx +0 -35
  479. package/docs/en/guides/topic-detail/model/manage-effects.mdx +0 -247
  480. package/docs/en/guides/topic-detail/model/model-communicate.mdx +0 -217
  481. package/docs/en/guides/topic-detail/model/performance.mdx +0 -167
  482. package/docs/en/guides/topic-detail/model/quick-start.mdx +0 -117
  483. package/docs/en/guides/topic-detail/model/redux-integration.mdx +0 -20
  484. package/docs/en/guides/topic-detail/model/typescript-best-practice.mdx +0 -68
  485. package/docs/en/guides/topic-detail/model/use-model.mdx +0 -243
  486. package/docs/en/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  487. package/docs/en/plugin/cli-plugins/migration.mdx +0 -98
  488. package/docs/en/plugin/official/cli-plugins/plugin-swc.mdx +0 -363
  489. package/docs/en/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  490. package/docs/en/plugin/official/rsbuild-plugins/_meta.json +0 -1
  491. package/docs/en/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -205
  492. package/docs/en/plugin/official/rsbuild-plugins.mdx +0 -3
  493. package/docs/en/plugin/runtime-plugins/migration.mdx +0 -101
  494. package/docs/en/tutorials/first-app/c01-start.mdx +0 -99
  495. package/docs/en/tutorials/first-app/c02-component.mdx +0 -60
  496. package/docs/en/tutorials/first-app/c03-css.mdx +0 -324
  497. package/docs/en/tutorials/first-app/c04-routes.mdx +0 -172
  498. package/docs/en/tutorials/first-app/c05-loader.mdx +0 -87
  499. package/docs/en/tutorials/first-app/c06-model.mdx +0 -278
  500. package/docs/en/tutorials/first-app/c07-container.mdx +0 -281
  501. package/docs/en/tutorials/first-app/c08-entries.mdx +0 -135
  502. package/docs/zh/apis/app/hooks/server/index_.mdx +0 -10
  503. package/docs/zh/apis/app/hooks/src/index_.mdx +0 -39
  504. package/docs/zh/apis/app/hooks/src/stories.mdx +0 -16
  505. package/docs/zh/apis/app/runtime/app/define-config.mdx +0 -67
  506. package/docs/zh/apis/app/runtime/core/bootstrap.mdx +0 -74
  507. package/docs/zh/apis/app/runtime/core/create-app.mdx +0 -35
  508. package/docs/zh/apis/app/runtime/core/use-loader.mdx +0 -89
  509. package/docs/zh/apis/app/runtime/core/use-module-apps.mdx +0 -179
  510. package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  511. package/docs/zh/apis/app/runtime/model/Provider.mdx +0 -36
  512. package/docs/zh/apis/app/runtime/model/auto-actions.mdx +0 -122
  513. package/docs/zh/apis/app/runtime/model/connect.mdx +0 -143
  514. package/docs/zh/apis/app/runtime/model/create-app.mdx +0 -75
  515. package/docs/zh/apis/app/runtime/model/create-store.mdx +0 -61
  516. package/docs/zh/apis/app/runtime/model/handle-effect.mdx +0 -108
  517. package/docs/zh/apis/app/runtime/model/model_.mdx +0 -201
  518. package/docs/zh/apis/app/runtime/model/use-local-model.mdx +0 -29
  519. package/docs/zh/apis/app/runtime/model/use-model.mdx +0 -89
  520. package/docs/zh/apis/app/runtime/model/use-static-model.mdx +0 -49
  521. package/docs/zh/apis/app/runtime/model/use-store.mdx +0 -26
  522. package/docs/zh/apis/app/runtime/ssr/pre-render.mdx +0 -96
  523. package/docs/zh/apis/app/runtime/web-server/hook.mdx +0 -136
  524. package/docs/zh/apis/app/runtime/web-server/middleware.mdx +0 -114
  525. package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +0 -165
  526. package/docs/zh/components/bff-proxy-path-rewrite.mdx +0 -16
  527. package/docs/zh/components/bff-proxy-principle.mdx +0 -1
  528. package/docs/zh/components/builder.mdx +0 -3
  529. package/docs/zh/components/create-bff-api-app.mdx +0 -25
  530. package/docs/zh/components/custom-router-micro-frontend.mdx +0 -40
  531. package/docs/zh/components/default-mwa-generate.mdx +0 -4
  532. package/docs/zh/components/enable-micro-frontend.mdx +0 -30
  533. package/docs/zh/components/enableSwc.mdx +0 -17
  534. package/docs/zh/components/global-proxy-config.mdx +0 -85
  535. package/docs/zh/components/global-proxy.mdx +0 -29
  536. package/docs/zh/components/package-manager.mdx +0 -11
  537. package/docs/zh/components/reduck-notify.mdx +0 -27
  538. package/docs/zh/components/reduck-tip.mdx +0 -8
  539. package/docs/zh/configure/app/auto-load-plugin.mdx +0 -66
  540. package/docs/zh/configure/app/deploy/microFrontend.mdx +0 -55
  541. package/docs/zh/configure/app/dev/port.mdx +0 -25
  542. package/docs/zh/configure/app/dev/proxy.mdx +0 -9
  543. package/docs/zh/configure/app/experiments/lazy-compilation.mdx +0 -105
  544. package/docs/zh/configure/app/html/disable-html-folder.mdx +0 -45
  545. package/docs/zh/configure/app/html/favicon-by-entries.mdx +0 -37
  546. package/docs/zh/configure/app/html/inject-by-entries.mdx +0 -37
  547. package/docs/zh/configure/app/html/meta-by-entries.mdx +0 -48
  548. package/docs/zh/configure/app/html/tags-by-entries.mdx +0 -44
  549. package/docs/zh/configure/app/html/template-by-entries.mdx +0 -33
  550. package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +0 -36
  551. package/docs/zh/configure/app/html/title-by-entries.mdx +0 -37
  552. package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +0 -21
  553. package/docs/zh/configure/app/output/disable-css-extract.mdx +0 -16
  554. package/docs/zh/configure/app/output/disable-filename-hash.mdx +0 -16
  555. package/docs/zh/configure/app/output/disable-minimize.mdx +0 -14
  556. package/docs/zh/configure/app/output/disable-node-polyfill.mdx +0 -22
  557. package/docs/zh/configure/app/output/disable-source-map.mdx +0 -31
  558. package/docs/zh/configure/app/output/enable-asset-fallback.mdx +0 -36
  559. package/docs/zh/configure/app/output/enable-inline-scripts.mdx +0 -22
  560. package/docs/zh/configure/app/output/enable-inline-styles.mdx +0 -22
  561. package/docs/zh/configure/app/output/enable-latest-decorators.mdx +0 -14
  562. package/docs/zh/configure/app/performance/bundle-analyze.mdx +0 -24
  563. package/docs/zh/configure/app/performance/transform-lodash.mdx +0 -52
  564. package/docs/zh/configure/app/runtime/master-app.mdx +0 -38
  565. package/docs/zh/configure/app/runtime/state.mdx +0 -52
  566. package/docs/zh/configure/app/source/disable-entry-dirs.mdx +0 -38
  567. package/docs/zh/configure/app/source/enable-custom-entry.mdx +0 -67
  568. package/docs/zh/configure/app/source/module-scopes.mdx +0 -72
  569. package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +0 -57
  570. package/docs/zh/configure/app/source/resolve-main-fields.mdx +0 -46
  571. package/docs/zh/configure/app/tools/babel.mdx +0 -224
  572. package/docs/zh/configure/app/tools/esbuild.mdx +0 -44
  573. package/docs/zh/configure/app/tools/pug.mdx +0 -54
  574. package/docs/zh/configure/app/tools/styled-components.mdx +0 -54
  575. package/docs/zh/configure/app/tools/tailwindcss.mdx +0 -98
  576. package/docs/zh/configure/app/tools/terser.mdx +0 -58
  577. package/docs/zh/configure/app/tools/ts-loader.mdx +0 -76
  578. package/docs/zh/configure/app/tools/webpack-chain.mdx +0 -257
  579. package/docs/zh/configure/app/tools/webpack.mdx +0 -309
  580. package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -154
  581. package/docs/zh/guides/deprecated.md +0 -19
  582. package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -26
  583. package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +0 -332
  584. package/docs/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -296
  585. package/docs/zh/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  586. package/docs/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -27
  587. package/docs/zh/guides/topic-detail/model/_meta.json +0 -14
  588. package/docs/zh/guides/topic-detail/model/auto-actions.mdx +0 -88
  589. package/docs/zh/guides/topic-detail/model/computed-state.mdx +0 -147
  590. package/docs/zh/guides/topic-detail/model/define-model.mdx +0 -63
  591. package/docs/zh/guides/topic-detail/model/faq.mdx +0 -36
  592. package/docs/zh/guides/topic-detail/model/manage-effects.mdx +0 -256
  593. package/docs/zh/guides/topic-detail/model/model-communicate.mdx +0 -217
  594. package/docs/zh/guides/topic-detail/model/performance.mdx +0 -167
  595. package/docs/zh/guides/topic-detail/model/quick-start.mdx +0 -117
  596. package/docs/zh/guides/topic-detail/model/redux-integration.mdx +0 -20
  597. package/docs/zh/guides/topic-detail/model/typescript-best-practice.mdx +0 -67
  598. package/docs/zh/guides/topic-detail/model/use-model.mdx +0 -248
  599. package/docs/zh/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  600. package/docs/zh/plugin/cli-plugins/migration.mdx +0 -98
  601. package/docs/zh/plugin/official/cli-plugins/plugin-swc.mdx +0 -351
  602. package/docs/zh/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  603. package/docs/zh/plugin/official/rsbuild-plugins/_meta.json +0 -1
  604. package/docs/zh/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -201
  605. package/docs/zh/plugin/official/rsbuild-plugins.mdx +0 -3
  606. package/docs/zh/plugin/runtime-plugins/migration.mdx +0 -101
  607. package/docs/zh/tutorials/first-app/c01-start.mdx +0 -99
  608. package/docs/zh/tutorials/first-app/c02-component.mdx +0 -60
  609. package/docs/zh/tutorials/first-app/c03-css.mdx +0 -323
  610. package/docs/zh/tutorials/first-app/c04-routes.mdx +0 -172
  611. package/docs/zh/tutorials/first-app/c05-loader.mdx +0 -89
  612. package/docs/zh/tutorials/first-app/c06-model.mdx +0 -274
  613. package/docs/zh/tutorials/first-app/c07-container.mdx +0 -281
  614. package/docs/zh/tutorials/first-app/c08-entries.mdx +0 -135
  615. /package/docs/en/components/{reduck-migration.mdx → auto-upgrade.mdx} +0 -0
  616. /package/docs/en/components/{router-legacy-tip.mdx → international/platform-support.mdx} +0 -0
  617. /package/docs/{zh/components/reduck-migration.mdx → en/components/new-entry-tooltip.mdx} +0 -0
  618. /package/docs/{zh/components/router-legacy-tip.mdx → en/components/upgrade-browserslist.mdx} +0 -0
@@ -1,87 +0,0 @@
1
- ---
2
- title: Add Loader
3
- ---
4
- # Add Loader
5
-
6
- In the previous chapter, we learned how to add client route.
7
-
8
- In this chapter, we will learn how to add **Loader** to the routing component.
9
-
10
- So far, we have provided data to components through hardcoding. If you want to get data from the remote, you usually use `useEffect` to do it. But when SSR is enabled, `useEffect` will not be executed at the server level, so this SSR can only render a very limited UI.
11
-
12
- Modern.js provides the ability of Data Loader to support homogeneous data acquisition in components to maximize the value of SSR.
13
-
14
- Below we demonstrate how to add Data Loader to the routing component and simulate remote data acquisition. We use faker to mock the required data, first install dependency:
15
-
16
- ```bash
17
- pnpm add faker@5
18
- pnpm add @types/faker@5 -D
19
- ```
20
-
21
- Create `src/routes/page.data.ts`:
22
-
23
- ```tsx
24
- import { name, internet } from 'faker';
25
-
26
- export type LoaderData = {
27
- code: number;
28
- data: {
29
- name: string;
30
- avatar: string;
31
- email: string;
32
- }[];
33
- };
34
-
35
- export const loader = async (): Promise<LoaderData> => {
36
- const data = new Array(20).fill(0).map(() => {
37
- const firstName = name.firstName();
38
- return {
39
- name: firstName,
40
- avatar: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${firstName}`,
41
- email: internet.email(),
42
- };
43
- });
44
-
45
- return {
46
- code: 200,
47
- data,
48
- };
49
- };
50
- ```
51
-
52
- :::note
53
- Data Loader doesn't just work for SSR. In CSR projects, Data Loader can also avoid data acquisition dependency UI rendering, which solves the problem of requesting dynamic grid layout. In the future, Modern.js will also add more capabilities to this feature, such as pre-fetching, data caching, etc.
54
-
55
- :::
56
-
57
- Modern.js also provides a hooks API called `useLoaderData`, we modify the exported component of `src/routes/page.tsx`:
58
-
59
- ```tsx
60
- // [!code highlight:2]
61
- import { useLoaderData } from '@modern-js/runtime/router';
62
- import type { LoaderData } from './page.data';
63
-
64
- function Index() {
65
- // [!code highlight:1]
66
- const { data } = useLoaderData() as LoaderData;
67
-
68
- return (
69
- <div className="container lg mx-auto">
70
- <Helmet>
71
- <title>All</title>
72
- </Helmet>
73
- // [!code highlight:1]
74
- <List
75
- dataSource={data}
76
- renderItem={info => <Item key={info.name} info={info} />}
77
- />
78
- </div>
79
- );
80
- }
81
-
82
- export default Index;
83
- ```
84
-
85
- Re-execute `pnpm run dev`, view `view-source: http://localhost:8080/`, or view the "Preview" of the HTML request in the Network panel of devtools, you can see that the HTML rendered by SSR already contains the complete UI:
86
-
87
- ![display6](https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/docs/11/display6.png)
@@ -1,278 +0,0 @@
1
- ---
2
- title: Add Model
3
- ---
4
-
5
- # Add Model
6
-
7
- In the previous chapter, we changed the hardcoding `mockData` to load from Data Loader.
8
-
9
- In this chapter, we will further implement the functions of the project, such as the implementation of the function of the **Archive** button to put the point of contact archive.
10
-
11
- Therefore, we will start to write some business logic that has nothing to do with the UI at all. If we continue to write in the component code, more and more noodle code will be generated. To this end, we introduced a code module called **Model** to decoupling these business logic and UI.
12
-
13
- :::info note
14
- To use the Model API, you need to opt in [runtime.state](/configure/app/runtime/state):
15
-
16
- ```ts title="modern.config.ts"
17
- import { defineConfig } from '@modern-js/app-tools';
18
-
19
- export default defineConfig({
20
- runtime: {
21
- state: true,
22
- },
23
- });
24
- ```
25
-
26
- :::
27
-
28
- ## Model implementation
29
-
30
- To create a complete Model, you first need to define **state**, including the name and initial value of data in the state.
31
-
32
- We use Model to manage the data of the point of contact list, so define the following data state:
33
-
34
- ```js
35
- const state = {
36
- items: [],
37
- };
38
- ```
39
-
40
- Using TS syntax, you can define more complete type information, such as items in each object should have a `name`, `email` field. In order to implement archive function, also need to create the `archived` field to hold the point of contact has been archived state.
41
-
42
- We also need a field to access all archived points of contact. We can define a field of type **computed** to convert the existing data:
43
-
44
- ```js
45
- const computed = {
46
- archived: ({ items }) => {
47
- return items.filter(item => item.archived);
48
- },
49
- };
50
- ```
51
-
52
- Fields of type `computed` are defined as function, but can be accessed through state just like normal fields.
53
-
54
- :::info
55
- Modern.js integrates [Immer](https://immerjs.github.io/immer/) and can write such state transfer logic just like normal mutable data in JS.
56
-
57
- :::
58
-
59
- When implementing the Archive button, we need an `archive` function, which is responsible for modifying the `archived` field of the specified contact. We call this function **action**:
60
-
61
- ```js
62
- const actions = {
63
- archive(draft, payload) {
64
- const target = draft.items.find(item => item.email === payload);
65
- if (target) {
66
- target.archived = true;
67
- }
68
- },
69
- };
70
- ```
71
-
72
- An action function is a pure function, where a defined input gets a defined output (a shifted state) and should not have any side effects.
73
-
74
- The first parameter of the function is the Draft State provided by Immer, and the second parameter is the parameter passed in when the action is called (more on how to call it later).
75
-
76
- We try to implement them completely:
77
-
78
- ```js
79
- const state = {
80
- items: [],
81
- pending: false,
82
- error: null,
83
- };
84
-
85
- const computed = {
86
- archived: ({ items }) => {
87
- return items.filter(item => item.archived);
88
- },
89
- };
90
-
91
- const actions = {
92
- archive(draft, payload) {
93
- const target = draft.items.find(item => item.email === payload);
94
- if (target) {
95
- target.archived = true;
96
- }
97
- },
98
- };
99
- ```
100
-
101
- Next we connect the above code and put it in the same Model file. First execute the following command to create a new file directory:
102
-
103
- ```bash
104
- mkdir -p src/models/
105
- touch src/models/contacts.ts
106
- ```
107
-
108
- Add `src/models/contacts.ts`:
109
-
110
- ```tsx
111
- import { model } from '@modern-js/runtime/model';
112
-
113
- type State = {
114
- items: {
115
- avatar: string;
116
- name: string;
117
- email: string;
118
- archived?: boolean;
119
- }[];
120
- pending: boolean;
121
- error: null | Error;
122
- };
123
-
124
- export default model<State>('contacts').define({
125
- state: {
126
- items: [],
127
- pending: false,
128
- error: null,
129
- },
130
- computed: {
131
- archived: ({ items }: State) => items.filter(item => item.archived),
132
- },
133
- actions: {
134
- archive(draft, payload) {
135
- const target = draft.items.find(item => item.email === payload)!;
136
- if (target) {
137
- target.archived = true;
138
- }
139
- },
140
- },
141
- });
142
- ```
143
-
144
- We call a plain object containing elements such as state, action, etc. as **Model Spec**, Modern.js provides [Model API](/apis/app/runtime/model/model_), which can generate **Model** from Model Spec.
145
-
146
- ## Use Model
147
-
148
- Now let's use this Model directly to complement the logic of the project.
149
-
150
- First modify `src/components/Item/index.tsx` and add the UI and interaction of the **Archive button**, the content is as follows:
151
-
152
- ```tsx
153
- import Avatar from '../Avatar';
154
-
155
- type InfoProps = {
156
- avatar: string;
157
- name: string;
158
- email: string;
159
- archived?: boolean;
160
- };
161
-
162
- const Item = ({
163
- info,
164
- onArchive,
165
- }: {
166
- info: InfoProps;
167
- onArchive?: () => void;
168
- }) => {
169
- const { avatar, name, email, archived } = info;
170
- return (
171
- <div className="flex p-4 items-center border-gray-200 border-b">
172
- <Avatar src={avatar} />
173
- <div className="ml-4 custom-text-gray flex-1 flex justify-between">
174
- <div className="flex-1">
175
- <p>{name}</p>
176
- <p>{email}</p>
177
- </div>
178
- <button
179
- type="button"
180
- disabled={archived}
181
- onClick={onArchive}
182
- className={`text-white font-bold py-2 px-4 rounded-full ${
183
- archived
184
- ? 'bg-gray-400 cursor-default'
185
- : 'bg-blue-500 hover:bg-blue-700'
186
- }`}
187
- >
188
- {archived ? 'Archived' : 'Archive'}
189
- </button>
190
- </div>
191
- </div>
192
- );
193
- };
194
-
195
- export default Item;
196
- ```
197
-
198
- Next, we add `src/routes.page.data` and modify `src/routes/page.tsx` to pass more parameters to the `<Item>` component:
199
-
200
- ```tsx title="src/routes/page.data.ts"
201
- export type LoaderData = {
202
- code: number;
203
- data: {
204
- name: string;
205
- avatar: string;
206
- email: string;
207
- }[];
208
- };
209
-
210
- export const loader = async (): Promise<LoaderData> => {
211
- const data = new Array(20).fill(0).map(() => {
212
- const firstName = name.firstName();
213
- return {
214
- name: firstName,
215
- avatar: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${firstName}`,
216
- email: internet.email(),
217
- archived: false,
218
- };
219
- });
220
-
221
- return {
222
- code: 200,
223
- data,
224
- };
225
- };
226
- ```
227
-
228
- ```tsx title="src/routes/page.tsx"
229
- import { Helmet } from '@modern-js/runtime/head';
230
- import { useModel } from '@modern-js/runtime/model';
231
- import { useLoaderData } from '@modern-js/runtime/router';
232
- import { List } from 'antd';
233
- import { name, internet } from 'faker';
234
- import Item from '../components/Item';
235
- import contacts from '../models/contacts';
236
- import type { LoaderData } from './page.data';
237
-
238
- function Index() {
239
- const { data } = useLoaderData() as LoaderData;
240
- const [{ items }, { archive, setItems }] = useModel(contacts);
241
- if (items.length === 0) {
242
- setItems(data);
243
- }
244
-
245
- return (
246
- <div className="container lg mx-auto">
247
- <Helmet>
248
- <title>All</title>
249
- </Helmet>
250
- <List
251
- dataSource={items}
252
- renderItem={info => (
253
- <Item
254
- key={info.name}
255
- info={info}
256
- onArchive={() => {
257
- archive(info.email);
258
- }}
259
- />
260
- )}
261
- />
262
- </div>
263
- );
264
- }
265
-
266
- export default Index;
267
- ```
268
-
269
- `useModel` is the hooks API provided by the Modern.js. You can provide the state defined in the Model in the component, or call the side effects and actions defined in the Model through actions to change the state of the Model.
270
-
271
- Model is business logic, a computational process that does not create or hold state itself. Only after being used by the component with the hooks API, the state is created in the specified place.
272
-
273
- Execute `pnpm run dev` and click the **Archive button** to see that the page UI has changed.
274
-
275
- :::note
276
- In the above example, `useLoaderData` is actually executed every time the route is switched. Because we used fake data in the Data Loader, the data returned each time is different. But we use the data in the Model first, so the data does not change when switching routes.
277
-
278
- :::
@@ -1,281 +0,0 @@
1
- ---
2
- title: Add Container
3
- ---
4
- # Add Container
5
-
6
- import { Tabs, Tab as TabItem } from "@theme";
7
-
8
- In the previous chapter, we initially introduced the **model** to split this part of the logic from the UI component. The `page.tsx` no longer contains UI-independent business logic implementation details, and only needs to use the Model to implement the same function.
9
-
10
- In this chapter, we will further use the business logic of implementation in Model to let `page.tsx` and `archived/page.tsx` get the same data. And implementation Archive button, click the button to display the point of contact archive only in the Archives list, not in the All list.
11
-
12
- ## Use the full Model
13
-
14
- Because the two pages need to share the same set of state (point of contact tabular data, point of contact is archived or not), both need to contain the logic to load the initial data, so we need to complete the data acquisition at a higher level.
15
-
16
- Modern.js support obtaining data through Data Loader in `layout.tsx`, we first move the data acquisition part of the code to `src/routes/layout.tsx`:
17
-
18
- ```ts title="src/routes/layout.data.ts"
19
- export type LoaderData = {
20
- code: number;
21
- data: {
22
- name: string;
23
- avatar: string;
24
- email: string;
25
- }[];
26
- };
27
-
28
- export const loader = async (): Promise<LoaderData> => {
29
- const data = new Array(20).fill(0).map(() => {
30
- const firstName = name.firstName();
31
- return {
32
- name: firstName,
33
- avatar: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${firstName}`,
34
- email: internet.email(),
35
- };
36
- });
37
-
38
- return {
39
- code: 200,
40
- data,
41
- };
42
- };
43
- ```
44
-
45
- ```tsx title="src/routes/layout.tsx"
46
- import { name, internet } from 'faker';
47
- import {
48
- Outlet,
49
- useLoaderData,
50
- useLocation,
51
- useNavigate,
52
- } from '@modern-js/runtime/router';
53
- import { useState } from 'react';
54
- import { Radio, RadioChangeEvent } from 'antd';
55
- import { useModel } from '@modern-js/runtime/model';
56
- import contacts from '../models/contacts';
57
- import 'tailwindcss/base.css';
58
- import 'tailwindcss/components.css';
59
- import 'tailwindcss/utilities.css';
60
- import '../styles/utils.css';
61
- import type { LoaderData } from './layout.data';
62
-
63
- export default function Layout() {
64
- const { data } = useLoaderData() as LoaderData;
65
- const [{ items }, { setItems }] = useModel(contacts);
66
- if (items.length === 0) {
67
- setItems(data);
68
- }
69
-
70
- const navigate = useNavigate();
71
- ...
72
- }
73
- ```
74
-
75
- In `src/routes/page.tsx`, use Model directly to get data:
76
-
77
- ```tsx
78
- import { Helmet } from '@modern-js/runtime/head';
79
- import { useModel } from '@modern-js/runtime/model';
80
- import { List } from 'antd';
81
- import Item from '../components/Item';
82
- import contacts from '../models/contacts';
83
-
84
- function Index() {
85
- const [{ items }, { archive }] = useModel(contacts);
86
-
87
- return (
88
- <div className="container lg mx-auto">
89
- <Helmet>
90
- <title>All</title>
91
- </Helmet>
92
- <List
93
- dataSource={items}
94
- renderItem={info => (
95
- <Item
96
- key={info.name}
97
- info={info}
98
- onArchive={() => {
99
- archive(info.email);
100
- }}
101
- />
102
- )}
103
- />
104
- </div>
105
- );
106
- }
107
-
108
- export default Index;
109
- ```
110
-
111
- Also in `archived/page.tsx`, delete the original `mockData` logic and use the `archived` value computed in Model as the data source:
112
-
113
- ```tsx
114
- import { Helmet } from '@modern-js/runtime/head';
115
- import { useModel } from '@modern-js/runtime/model';
116
- import { List } from 'antd';
117
- import Item from '../../components/Item';
118
- import contacts from '../../models/contacts';
119
-
120
- function Index() {
121
- const [{ archived }, { archive }] = useModel(contacts);
122
-
123
- return (
124
- <div className="container lg mx-auto">
125
- <Helmet>
126
- <title>Archives</title>
127
- </Helmet>
128
- <List
129
- dataSource={archived}
130
- renderItem={info => (
131
- <Item
132
- key={info.name}
133
- info={info}
134
- onArchive={() => {
135
- archive(info.email);
136
- }}
137
- />
138
- )}
139
- />
140
- </div>
141
- );
142
- }
143
-
144
- export default Index;
145
- ```
146
-
147
- Execute `pnpm run dev`, visit `http://localhost:8080/`, click the Archive button, you can see the button grey out:
148
-
149
- ![display](https://lf3-static.bytednsdoc.com/obj/eden-cn/nuvjhpqnuvr/modern-website/tutorials/c07-contacts-all.png)
150
-
151
- Next, click the top navigation and switch to the Archives list. You can find that the point of contact of **Archive** just now has appeared in the list:
152
-
153
- ![display](https://lf3-static.bytednsdoc.com/obj/eden-cn/nuvjhpqnuvr/modern-website/tutorials/c07-contacts-archives.png)
154
-
155
- ## Withdraw container components
156
-
157
- In the previous chapters, we split the business logic in the project into two layers, one is the **view component**, and the other is the **module**. The former is responsible for UI display, interaction, etc., and the latter is responsible for the implementation of UI-independent business logic, which specializes in managing state.
158
-
159
- Like `src/routes/page.tsx` and `src/routes/archives/page.tsx` use the component of the `useModel` API, which is responsible for linking the two layers of View and Model, similar to the role of the Controller in the traditional MVC architecture. In the Modern.js, we follow the habit and call them **Container**.
160
-
161
- The container component is recommended to be placed in a special `containers/` directory. We execute the following command to create a new file:
162
-
163
- <Tabs>
164
- <TabItem value="macOS" label="macOS" default>
165
-
166
- ```bash
167
- mkdir -p src/containers
168
- touch src/containers/Contacts.tsx
169
- ```
170
-
171
- </TabItem>
172
- <TabItem value="Windows" label="Windows">
173
-
174
- ```powershell
175
- mkdir -p src/containers
176
- ni src/containers/Contacts.tsx
177
- ```
178
-
179
- </TabItem>
180
- </Tabs>
181
-
182
- We extracted the common part of the original two `page.tsx`, and the code of `src/containers/Contacts.tsx` is as follows:
183
-
184
- ```tsx
185
- import { Helmet } from '@modern-js/runtime/head';
186
- import { useModel } from '@modern-js/runtime/model';
187
- import { List } from 'antd';
188
- import Item from '../components/Item';
189
- import contacts from '../models/contacts';
190
-
191
- function Contacts({
192
- title,
193
- source,
194
- }: {
195
- title: string;
196
- source: 'items' | 'archived';
197
- }) {
198
- const [state, { archive }] = useModel(contacts);
199
-
200
- return (
201
- <div className="container lg mx-auto">
202
- <Helmet>
203
- <title>{title}</title>
204
- </Helmet>
205
- <List
206
- dataSource={state[source]}
207
- renderItem={info => (
208
- <Item
209
- key={info.name}
210
- info={info}
211
- onArchive={() => {
212
- archive(info.email);
213
- }}
214
- />
215
- )}
216
- />
217
- </div>
218
- );
219
- }
220
-
221
- export default Contacts;
222
- ```
223
-
224
- Modify the code for `src/routes/page.tsx` and `src/routes/archives/page.tsx`:
225
-
226
- ```tsx title="src/routes/page.tsx"
227
- import Contacts from '../containers/Contacts';
228
-
229
- function Index() {
230
- return <Contacts title="All" source="items" />;
231
- }
232
-
233
- export default Index;
234
- ```
235
-
236
- ```tsx title="src/routes/archives/page.tsx"
237
- import Contacts from '../../containers/Contacts';
238
-
239
- function Index() {
240
- return <Contacts title="Archives" source="archived" />;
241
- }
242
-
243
- export default Index;
244
- ```
245
-
246
- The refactoring is complete, and the current project structure is:
247
-
248
- ```bash
249
- .
250
- ├── README.md
251
- ├── dist
252
- ├── modern.config.ts
253
- ├── node_modules
254
- ├── package.json
255
- ├── pnpm-lock.yaml
256
- ├── src
257
- │ ├── components
258
- │ │ ├── Avatar
259
- │ │ │ └── index.tsx
260
- │ │ └── Item
261
- │ │ └── index.tsx
262
- │ ├── containers
263
- │ │ └── Contacts.tsx
264
- │ ├── models
265
- │ │ └── contacts.ts
266
- │ ├── modern-app-env.d.ts
267
- │ ├── routes
268
- │ │ ├── archives
269
- │ │ │ └── page.tsx
270
- │ │ ├── layout.tsx
271
- │ │ └── page.tsx
272
- │ └── styles
273
- │ └── utils.css
274
- └── tsconfig.json
275
- ```
276
-
277
- The **view components** in `components/` dir are in the form of directories, such as `Avatar/index.tsx`. And the **container components** in `containers/` dir are in the form of single files, such as `contacts.tsx`. **This is a best practice we recommend**.
278
-
279
- As mentioned in the chapter [Add UI component](./c02-component.mdx), the view component is in the form of a directory, because the view component is responsible for the implementation of UI display and interaction details, and can evolve in complexity. In the form of a directory, it is convenient to add sub-files, including dedicated resources (pictures, etc.), dedicated sub-components, CSS files, etc. You can reconstruct at will within this directory, considering only the smallest parts.
280
-
281
- The container component is only responsible for linkage and is a glue layer. The sophisticated business logic and implementation details are handed over to the View layer and the Model layer for implementation. The container component itself should be kept simple and clear, and should not contain complex implementation details, so there should be no internal structure. The single-file form is not only more concise, but also acts as a constraint, reminding developers not to write complicated container components.