@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.
- package/docs/en/{_meta.json → _nav.json} +5 -1
- package/docs/en/apis/app/commands.mdx +2 -3
- package/docs/en/apis/app/hooks/src/entry.mdx +1 -5
- package/docs/en/apis/app/hooks/src/entry.server.mdx +4 -5
- package/docs/en/apis/app/hooks/src/routes.mdx +2 -2
- package/docs/en/apis/app/runtime/_meta.json +0 -18
- package/docs/en/apis/app/runtime/bff/use-hono-context.mdx +2 -2
- package/docs/en/apis/app/runtime/router/router.mdx +1 -1
- package/docs/en/apis/app/runtime/utility/css-in-js.mdx +3 -2
- package/docs/en/community/blog/v2-release-note.mdx +0 -2
- package/docs/en/community/contributing-guide.mdx +10 -12
- package/docs/en/components/bff-upload.mdx +16 -12
- package/docs/en/components/build-output.mdx +45 -0
- package/docs/en/components/debug-app.mdx +1 -1
- package/docs/en/components/enable-bff-caution.mdx +2 -2
- package/docs/en/components/enable-bff.mdx +38 -8
- package/docs/en/components/enable-ssg.mdx +48 -0
- package/docs/en/components/entry-scan-logic.mdx +7 -0
- package/docs/en/components/init-app.mdx +40 -17
- package/docs/en/components/international/install-command.mdx +9 -0
- package/docs/en/components/international/introduce.mdx +2 -0
- package/docs/en/components/module-federation.mdx +4 -4
- package/docs/en/components/new-entry-tooltip.mdx +0 -0
- package/docs/en/components/nodeVersion.mdx +2 -6
- package/docs/en/components/prerequisites.mdx +1 -1
- package/docs/en/components/ua-polyfill.mdx +16 -12
- package/docs/en/components/upgrade-browserslist.mdx +0 -0
- package/docs/en/configure/_meta.json +7 -8
- package/docs/en/configure/app/bff/cross-project.mdx +24 -0
- package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
- package/docs/en/configure/app/dev/server.mdx +103 -0
- package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
- package/docs/en/configure/app/html/app-icon.mdx +1 -23
- package/docs/en/configure/app/output/inline-scripts.mdx +1 -1
- package/docs/en/configure/app/output/override-browserslist.mdx +6 -4
- package/docs/en/configure/app/output/source-map.mdx +6 -3
- package/docs/en/configure/app/output/ssg.mdx +12 -43
- package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
- package/docs/en/configure/app/performance/build-cache.mdx +0 -4
- package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
- package/docs/en/configure/app/resolve/alias.mdx +13 -0
- package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
- package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
- package/docs/en/configure/app/resolve/extensions.mdx +18 -0
- package/docs/en/configure/app/runtime/0-intro.mdx +2 -51
- package/docs/en/configure/app/security/check-syntax.mdx +1 -1
- package/docs/en/configure/app/server/port.mdx +1 -21
- package/docs/en/configure/app/server/rsc.mdx +30 -0
- package/docs/en/configure/app/server/ssr.mdx +20 -9
- package/docs/en/configure/app/source/decorators.mdx +4 -2
- package/docs/en/configure/app/source/entries.mdx +0 -2
- package/docs/en/configure/app/source/main-entry-name.mdx +4 -4
- package/docs/en/configure/app/source/transform-import.mdx +1 -59
- package/docs/en/configure/app/tools/bundler-chain.mdx +5 -5
- package/docs/en/configure/app/tools/css-extract.mdx +1 -1
- package/docs/en/configure/app/tools/dev-server.mdx +14 -248
- package/docs/en/configure/app/tools/html-plugin.mdx +3 -3
- package/docs/en/configure/app/tools/lightningcss-loader.mdx +0 -1
- package/docs/en/configure/app/tools/swc.mdx +1 -43
- package/docs/en/configure/app/usage.mdx +7 -17
- package/docs/en/guides/_meta.json +1 -2
- package/docs/en/guides/advanced-features/_meta.json +6 -0
- package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -7
- package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
- package/docs/en/guides/advanced-features/bff/frameworks.mdx +1 -1
- package/docs/en/guides/advanced-features/bff/function.mdx +2 -6
- package/docs/en/guides/advanced-features/bff/sdk.mdx +3 -3
- package/docs/en/guides/advanced-features/build-performance.mdx +23 -26
- package/docs/en/guides/advanced-features/compatibility.mdx +53 -9
- package/docs/en/guides/advanced-features/international/_meta.json +11 -0
- package/docs/en/guides/advanced-features/international/advanced.mdx +193 -0
- package/docs/en/guides/advanced-features/international/api.mdx +400 -0
- package/docs/en/guides/advanced-features/international/basic.mdx +417 -0
- package/docs/en/guides/advanced-features/international/best-practices.mdx +135 -0
- package/docs/en/guides/advanced-features/international/configuration.mdx +437 -0
- package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
- package/docs/en/guides/advanced-features/international/quick-start.mdx +154 -0
- package/docs/en/guides/advanced-features/international/resource-loading.mdx +417 -0
- package/docs/en/guides/advanced-features/international/routing.mdx +212 -0
- package/docs/en/guides/advanced-features/international.mdx +37 -0
- package/docs/en/guides/advanced-features/low-level.mdx +21 -16
- package/docs/en/guides/advanced-features/page-performance/code-split.mdx +4 -4
- package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
- package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
- package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
- package/docs/en/guides/advanced-features/rspack-start.mdx +2 -22
- package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
- package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -34
- package/docs/en/guides/advanced-features/web-server.mdx +82 -299
- package/docs/en/guides/basic-features/_meta.json +6 -1
- package/docs/en/guides/basic-features/css/css-in-js.mdx +46 -11
- package/docs/en/guides/basic-features/css/css-modules.mdx +5 -17
- package/docs/en/guides/basic-features/css/css.mdx +3 -3
- package/docs/en/guides/basic-features/css/tailwindcss.mdx +5 -89
- package/docs/en/guides/basic-features/data/data-cache.mdx +5 -1
- package/docs/en/guides/basic-features/data/data-fetch.mdx +4 -4
- package/docs/en/guides/basic-features/data/data-write.mdx +2 -2
- package/docs/en/guides/basic-features/debug/mock.mdx +4 -1
- package/docs/en/guides/basic-features/debug/proxy.mdx +0 -8
- package/docs/en/guides/basic-features/debug/rsdoctor.mdx +5 -5
- package/docs/en/guides/basic-features/deploy.mdx +25 -18
- package/docs/en/guides/basic-features/env-vars.mdx +1 -1
- package/docs/en/guides/basic-features/html.mdx +1 -1
- package/docs/en/guides/basic-features/output-files.mdx +3 -3
- package/docs/en/guides/basic-features/render/_meta.json +1 -1
- package/docs/en/guides/basic-features/render/before-render.mdx +16 -23
- package/docs/en/guides/basic-features/render/overview.mdx +51 -0
- package/docs/en/guides/basic-features/render/rsc.mdx +394 -0
- package/docs/en/guides/basic-features/render/ssg.mdx +26 -62
- package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -6
- package/docs/en/guides/basic-features/render/ssr.mdx +31 -31
- package/docs/en/guides/basic-features/render/streaming-ssr.mdx +29 -9
- package/docs/en/guides/basic-features/routes/_meta.json +1 -0
- package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
- package/docs/en/guides/basic-features/{routes.mdx → routes/routes.mdx} +7 -110
- package/docs/en/guides/basic-features/static-assets/json-files.mdx +21 -3
- package/docs/en/guides/basic-features/static-assets.mdx +2 -2
- package/docs/en/guides/concept/builder.mdx +24 -9
- package/docs/en/guides/concept/entries.mdx +139 -147
- package/docs/en/guides/get-started/glossary.mdx +0 -18
- package/docs/en/guides/get-started/introduction.mdx +1 -4
- package/docs/en/guides/get-started/quick-start.mdx +8 -73
- package/docs/en/guides/get-started/tech-stack.mdx +7 -25
- package/docs/en/guides/get-started/upgrade.mdx +30 -23
- package/docs/en/guides/topic-detail/_meta.json +0 -12
- package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -1
- package/docs/en/guides/topic-detail/module-federation/application.mdx +16 -15
- package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
- package/docs/en/guides/topic-detail/module-federation/introduce.mdx +5 -4
- package/docs/en/guides/topic-detail/module-federation/ssr.mdx +50 -2
- package/docs/en/guides/topic-detail/module-federation/usage.mdx +10 -30
- package/docs/en/guides/troubleshooting/builder.mdx +3 -82
- package/docs/en/guides/troubleshooting/cli.mdx +6 -30
- package/docs/en/guides/troubleshooting/dependencies.mdx +22 -22
- package/docs/en/plugin/cli-plugins/api.mdx +4 -5
- package/docs/en/plugin/cli-plugins/migration.mdx +33 -48
- package/docs/en/plugin/introduction.mdx +39 -27
- package/docs/en/plugin/official/_meta.json +0 -5
- package/docs/en/plugin/official/cli-plugins/_meta.json +1 -1
- package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
- package/docs/en/plugin/official/cli-plugins.mdx +0 -2
- package/docs/en/plugin/plugin-system.mdx +68 -61
- package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
- package/docs/en/plugin/runtime-plugins/migration.mdx +29 -20
- package/docs/en/tutorials/_meta.json +0 -10
- package/docs/en/tutorials/examples/csr-auth.mdx +1 -1
- package/docs/en/tutorials/foundations/introduction.mdx +9 -25
- package/docs/zh/{_meta.json → _nav.json} +10 -6
- package/docs/zh/apis/app/commands.mdx +2 -3
- package/docs/zh/apis/app/hooks/src/entry.mdx +1 -5
- package/docs/zh/apis/app/hooks/src/entry.server.mdx +4 -5
- package/docs/zh/apis/app/hooks/src/routes.mdx +2 -2
- package/docs/zh/apis/app/runtime/_meta.json +0 -18
- package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +2 -2
- package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +3 -2
- package/docs/zh/community/blog/v2-release-note.mdx +0 -2
- package/docs/zh/community/contributing-guide.mdx +10 -12
- package/docs/zh/components/auto-upgrade.mdx +0 -0
- package/docs/zh/components/bff-upload.mdx +8 -5
- package/docs/zh/components/build-output.mdx +45 -0
- package/docs/zh/components/debug-app.mdx +1 -1
- package/docs/zh/components/enable-bff-caution.mdx +1 -1
- package/docs/zh/components/enable-bff.mdx +37 -8
- package/docs/zh/components/enable-ssg.mdx +47 -0
- package/docs/zh/components/entry-scan-logic.mdx +7 -0
- package/docs/zh/components/init-app.mdx +40 -18
- package/docs/zh/components/international/install-command.mdx +8 -0
- package/docs/zh/components/international/introduce.mdx +2 -0
- package/docs/zh/components/international/platform-support.mdx +0 -0
- package/docs/zh/components/module-federation.mdx +4 -4
- package/docs/zh/components/new-entry-tooltip.mdx +0 -0
- package/docs/zh/components/nodeVersion.mdx +3 -7
- package/docs/zh/components/prerequisites.mdx +1 -1
- package/docs/zh/components/self-route-example.mdx +3 -3
- package/docs/zh/components/ua-polyfill.mdx +11 -6
- package/docs/zh/components/upgrade-browserslist.mdx +0 -0
- package/docs/zh/configure/_meta.json +7 -8
- package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
- package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
- package/docs/zh/configure/app/dev/server.mdx +104 -0
- package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
- package/docs/zh/configure/app/html/app-icon.mdx +1 -23
- package/docs/zh/configure/app/output/inline-scripts.mdx +1 -1
- package/docs/zh/configure/app/output/override-browserslist.mdx +3 -3
- package/docs/zh/configure/app/output/source-map.mdx +10 -3
- package/docs/zh/configure/app/output/ssg.mdx +13 -45
- package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
- package/docs/zh/configure/app/performance/build-cache.mdx +0 -4
- package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
- package/docs/zh/configure/app/resolve/alias.mdx +13 -0
- package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
- package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
- package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
- package/docs/zh/configure/app/runtime/0-intro.mdx +2 -53
- package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
- package/docs/zh/configure/app/server/port.mdx +2 -21
- package/docs/zh/configure/app/server/rsc.mdx +30 -0
- package/docs/zh/configure/app/server/ssr.mdx +21 -11
- package/docs/zh/configure/app/source/decorators.mdx +4 -4
- package/docs/zh/configure/app/source/entries.mdx +0 -2
- package/docs/zh/configure/app/source/main-entry-name.mdx +4 -4
- package/docs/zh/configure/app/source/transform-import.mdx +1 -59
- package/docs/zh/configure/app/tools/bundler-chain.mdx +6 -6
- package/docs/zh/configure/app/tools/css-extract.mdx +1 -1
- package/docs/zh/configure/app/tools/dev-server.mdx +14 -248
- package/docs/zh/configure/app/tools/html-plugin.mdx +3 -2
- package/docs/zh/configure/app/tools/lightningcss-loader.mdx +0 -1
- package/docs/zh/configure/app/tools/swc.mdx +1 -43
- package/docs/zh/configure/app/usage.mdx +8 -18
- package/docs/zh/guides/_meta.json +5 -1
- package/docs/zh/guides/advanced-features/_meta.json +6 -1
- package/docs/zh/guides/advanced-features/bff/cross-project.mdx +8 -16
- package/docs/zh/guides/advanced-features/bff/extend-server.mdx +25 -8
- package/docs/zh/guides/advanced-features/bff/frameworks.mdx +1 -1
- package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
- package/docs/zh/guides/advanced-features/bff/sdk.mdx +4 -4
- package/docs/zh/guides/advanced-features/build-performance.mdx +23 -30
- package/docs/zh/guides/advanced-features/compatibility.mdx +44 -0
- package/docs/zh/guides/advanced-features/international/_meta.json +11 -0
- package/docs/zh/guides/advanced-features/international/advanced.mdx +193 -0
- package/docs/zh/guides/advanced-features/international/api.mdx +400 -0
- package/docs/zh/guides/advanced-features/international/basic.mdx +416 -0
- package/docs/zh/guides/advanced-features/international/best-practices.mdx +135 -0
- package/docs/zh/guides/advanced-features/international/configuration.mdx +441 -0
- package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
- package/docs/zh/guides/advanced-features/international/quick-start.mdx +149 -0
- package/docs/zh/guides/advanced-features/international/resource-loading.mdx +417 -0
- package/docs/zh/guides/advanced-features/international/routing.mdx +212 -0
- package/docs/zh/guides/advanced-features/international.mdx +36 -0
- package/docs/zh/guides/advanced-features/low-level.mdx +21 -16
- package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +3 -3
- package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
- package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
- package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
- package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
- package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +63 -35
- package/docs/zh/guides/advanced-features/web-server.mdx +79 -300
- package/docs/zh/guides/basic-features/_meta.json +6 -1
- package/docs/zh/guides/basic-features/css/css-in-js.mdx +40 -5
- package/docs/zh/guides/basic-features/css/css-modules.mdx +6 -17
- package/docs/zh/guides/basic-features/css/css.mdx +2 -2
- package/docs/zh/guides/basic-features/css/tailwindcss.mdx +6 -90
- package/docs/zh/guides/basic-features/data/data-cache.mdx +8 -5
- package/docs/zh/guides/basic-features/data/data-fetch.mdx +6 -5
- package/docs/zh/guides/basic-features/data/data-write.mdx +4 -4
- package/docs/zh/guides/basic-features/debug/mock.mdx +4 -1
- package/docs/zh/guides/basic-features/debug/proxy.mdx +0 -8
- package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +6 -6
- package/docs/zh/guides/basic-features/deploy.mdx +24 -20
- package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
- package/docs/zh/guides/basic-features/html.mdx +2 -2
- package/docs/zh/guides/basic-features/output-files.mdx +3 -3
- package/docs/zh/guides/basic-features/render/_meta.json +1 -1
- package/docs/zh/guides/basic-features/render/before-render.mdx +17 -24
- package/docs/zh/guides/basic-features/render/overview.mdx +52 -0
- package/docs/zh/guides/basic-features/render/rsc.mdx +413 -0
- package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
- package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -5
- package/docs/zh/guides/basic-features/render/ssr.mdx +34 -31
- package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +34 -14
- package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
- package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
- package/docs/zh/guides/basic-features/{routes.mdx → routes/routes.mdx} +8 -114
- package/docs/zh/guides/basic-features/static-assets/json-files.mdx +21 -3
- package/docs/zh/guides/basic-features/static-assets.mdx +2 -2
- package/docs/zh/guides/basic-features/testing/cypress.mdx +5 -5
- package/docs/zh/guides/basic-features/testing/jest.mdx +12 -12
- package/docs/zh/guides/concept/builder.mdx +24 -9
- package/docs/zh/guides/concept/entries.mdx +95 -92
- package/docs/zh/guides/get-started/glossary.mdx +0 -18
- package/docs/zh/guides/get-started/introduction.mdx +1 -5
- package/docs/zh/guides/get-started/quick-start.mdx +5 -72
- package/docs/zh/guides/get-started/tech-stack.mdx +8 -26
- package/docs/zh/guides/get-started/upgrade.mdx +30 -23
- package/docs/zh/guides/topic-detail/_meta.json +0 -12
- package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -1
- package/docs/zh/guides/topic-detail/module-federation/application.mdx +18 -16
- package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
- package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +4 -4
- package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +51 -5
- package/docs/zh/guides/topic-detail/module-federation/usage.mdx +11 -32
- package/docs/zh/guides/troubleshooting/builder.mdx +3 -84
- package/docs/zh/guides/troubleshooting/cli.mdx +6 -30
- package/docs/zh/guides/troubleshooting/dependencies.mdx +23 -23
- package/docs/zh/guides/upgrade/_meta.json +1 -0
- package/docs/zh/guides/upgrade/config.mdx +809 -0
- package/docs/zh/guides/upgrade/entry.mdx +463 -0
- package/docs/zh/guides/upgrade/other.md +90 -0
- package/docs/zh/guides/upgrade/overview.mdx +36 -0
- package/docs/zh/guides/upgrade/tailwindcss.mdx +130 -0
- package/docs/zh/guides/upgrade/web-server.md +93 -0
- package/docs/zh/plugin/cli-plugins/api.mdx +4 -5
- package/docs/zh/plugin/cli-plugins/migration.mdx +30 -45
- package/docs/zh/plugin/introduction.mdx +36 -24
- package/docs/zh/plugin/official/_meta.json +0 -5
- package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -1
- package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
- package/docs/zh/plugin/official/cli-plugins.mdx +0 -2
- package/docs/zh/plugin/plugin-system.mdx +45 -42
- package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
- package/docs/zh/plugin/runtime-plugins/migration.mdx +26 -17
- package/docs/zh/tutorials/_meta.json +0 -10
- package/docs/zh/tutorials/examples/csr-auth.mdx +1 -1
- package/docs/zh/tutorials/foundations/introduction.mdx +8 -25
- package/i18n.json +0 -16
- package/package.json +12 -12
- package/rspress.config.ts +5 -8
- package/src/components/ContentCard/index.module.scss +11 -7
- package/src/components/ContentCard/index.tsx +1 -1
- package/src/components/FeatureLayout/index.module.css +1 -1
- package/src/components/Footer/index.tsx +2 -14
- package/src/components/Footer/styles.module.scss +5 -5
- package/src/components/ListCard/index.tsx +1 -1
- package/src/components/RandomMemberList/index.tsx +1 -1
- package/src/components/RsbuildLink/index.tsx +1 -1
- package/src/components/Sandpack/index.tsx +1 -1
- package/src/custom.scss +15 -0
- package/src/i18n/enUS.ts +2 -4
- package/src/i18n/index.ts +1 -1
- package/src/i18n/zhCN.ts +2 -4
- package/src/index.ts +2 -1
- package/src/pages/index.module.scss +59 -41
- package/src/pages/index.tsx +9 -24
- package/docs/en/apis/app/hooks/server/index_.mdx +0 -10
- package/docs/en/apis/app/hooks/src/index_.mdx +0 -38
- package/docs/en/apis/app/hooks/src/stories.mdx +0 -16
- package/docs/en/apis/app/runtime/app/define-config.mdx +0 -67
- package/docs/en/apis/app/runtime/core/bootstrap.mdx +0 -74
- package/docs/en/apis/app/runtime/core/create-app.mdx +0 -49
- package/docs/en/apis/app/runtime/core/use-loader.mdx +0 -89
- package/docs/en/apis/app/runtime/core/use-module-apps.mdx +0 -140
- package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +0 -116
- package/docs/en/apis/app/runtime/model/Provider.mdx +0 -36
- package/docs/en/apis/app/runtime/model/auto-actions.mdx +0 -122
- package/docs/en/apis/app/runtime/model/connect.mdx +0 -146
- package/docs/en/apis/app/runtime/model/create-app.mdx +0 -75
- package/docs/en/apis/app/runtime/model/create-store.mdx +0 -61
- package/docs/en/apis/app/runtime/model/handle-effect.mdx +0 -107
- package/docs/en/apis/app/runtime/model/model_.mdx +0 -198
- package/docs/en/apis/app/runtime/model/use-local-model.mdx +0 -29
- package/docs/en/apis/app/runtime/model/use-model.mdx +0 -89
- package/docs/en/apis/app/runtime/model/use-static-model.mdx +0 -51
- package/docs/en/apis/app/runtime/model/use-store.mdx +0 -26
- package/docs/en/apis/app/runtime/ssr/pre-render.mdx +0 -96
- package/docs/en/apis/app/runtime/web-server/hook.mdx +0 -134
- package/docs/en/apis/app/runtime/web-server/middleware.mdx +0 -113
- package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +0 -167
- package/docs/en/components/bff-proxy-path-rewrite.mdx +0 -16
- package/docs/en/components/bff-proxy-principle.mdx +0 -1
- package/docs/en/components/builder.mdx +0 -3
- package/docs/en/components/create-bff-api-app.mdx +0 -25
- package/docs/en/components/custom-router-micro-frontend.mdx +0 -40
- package/docs/en/components/enable-micro-frontend.mdx +0 -30
- package/docs/en/components/enableSwc.mdx +0 -17
- package/docs/en/components/global-proxy-config.mdx +0 -85
- package/docs/en/components/global-proxy.mdx +0 -29
- package/docs/en/components/package-manager.mdx +0 -11
- package/docs/en/components/reduck-notify.mdx +0 -27
- package/docs/en/components/reduck-tip.mdx +0 -8
- package/docs/en/configure/app/auto-load-plugin.mdx +0 -66
- package/docs/en/configure/app/deploy/microFrontend.mdx +0 -53
- package/docs/en/configure/app/dev/port.mdx +0 -25
- package/docs/en/configure/app/dev/proxy.mdx +0 -9
- package/docs/en/configure/app/experiments/lazy-compilation.mdx +0 -106
- package/docs/en/configure/app/html/disable-html-folder.mdx +0 -46
- package/docs/en/configure/app/html/favicon-by-entries.mdx +0 -36
- package/docs/en/configure/app/html/inject-by-entries.mdx +0 -36
- package/docs/en/configure/app/html/meta-by-entries.mdx +0 -48
- package/docs/en/configure/app/html/tags-by-entries.mdx +0 -44
- package/docs/en/configure/app/html/template-by-entries.mdx +0 -33
- package/docs/en/configure/app/html/template-parameters-by-entries.mdx +0 -35
- package/docs/en/configure/app/html/title-by-entries.mdx +0 -37
- package/docs/en/configure/app/output/css-module-local-ident-name.mdx +0 -21
- package/docs/en/configure/app/output/disable-css-extract.mdx +0 -16
- package/docs/en/configure/app/output/disable-filename-hash.mdx +0 -16
- package/docs/en/configure/app/output/disable-minimize.mdx +0 -14
- package/docs/en/configure/app/output/disable-node-polyfill.mdx +0 -22
- package/docs/en/configure/app/output/disable-source-map.mdx +0 -31
- package/docs/en/configure/app/output/enable-asset-fallback.mdx +0 -36
- package/docs/en/configure/app/output/enable-inline-scripts.mdx +0 -22
- package/docs/en/configure/app/output/enable-inline-styles.mdx +0 -22
- package/docs/en/configure/app/output/enable-latest-decorators.mdx +0 -14
- package/docs/en/configure/app/performance/transform-lodash.mdx +0 -52
- package/docs/en/configure/app/runtime/master-app.mdx +0 -36
- package/docs/en/configure/app/runtime/state.mdx +0 -52
- package/docs/en/configure/app/source/disable-entry-dirs.mdx +0 -38
- package/docs/en/configure/app/source/enable-custom-entry.mdx +0 -68
- package/docs/en/configure/app/source/module-scopes.mdx +0 -72
- package/docs/en/configure/app/source/resolve-extension-prefix.mdx +0 -55
- package/docs/en/configure/app/source/resolve-main-fields.mdx +0 -46
- package/docs/en/configure/app/tools/esbuild.mdx +0 -44
- package/docs/en/configure/app/tools/pug.mdx +0 -54
- package/docs/en/configure/app/tools/styled-components.mdx +0 -55
- package/docs/en/configure/app/tools/tailwindcss.mdx +0 -98
- package/docs/en/configure/app/tools/terser.mdx +0 -58
- package/docs/en/configure/app/tools/ts-loader.mdx +0 -76
- package/docs/en/configure/app/tools/webpack-chain.mdx +0 -249
- package/docs/en/configure/app/tools/webpack.mdx +0 -305
- package/docs/en/guides/deprecated.md +0 -17
- package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -27
- package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +0 -290
- package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -298
- package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
- package/docs/en/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -26
- package/docs/en/guides/topic-detail/model/_meta.json +0 -14
- package/docs/en/guides/topic-detail/model/auto-actions.mdx +0 -85
- package/docs/en/guides/topic-detail/model/computed-state.mdx +0 -148
- package/docs/en/guides/topic-detail/model/define-model.mdx +0 -62
- package/docs/en/guides/topic-detail/model/faq.mdx +0 -35
- package/docs/en/guides/topic-detail/model/manage-effects.mdx +0 -247
- package/docs/en/guides/topic-detail/model/model-communicate.mdx +0 -217
- package/docs/en/guides/topic-detail/model/performance.mdx +0 -167
- package/docs/en/guides/topic-detail/model/quick-start.mdx +0 -117
- package/docs/en/guides/topic-detail/model/redux-integration.mdx +0 -20
- package/docs/en/guides/topic-detail/model/typescript-best-practice.mdx +0 -68
- package/docs/en/guides/topic-detail/model/use-model.mdx +0 -243
- package/docs/en/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
- package/docs/en/plugin/official/cli-plugins/plugin-swc.mdx +0 -363
- package/docs/en/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
- package/docs/en/plugin/official/rsbuild-plugins/_meta.json +0 -1
- package/docs/en/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -205
- package/docs/en/plugin/official/rsbuild-plugins.mdx +0 -3
- package/docs/en/tutorials/first-app/c01-start.mdx +0 -99
- package/docs/en/tutorials/first-app/c02-component.mdx +0 -60
- package/docs/en/tutorials/first-app/c03-css.mdx +0 -324
- package/docs/en/tutorials/first-app/c04-routes.mdx +0 -172
- package/docs/en/tutorials/first-app/c05-loader.mdx +0 -87
- package/docs/en/tutorials/first-app/c06-model.mdx +0 -278
- package/docs/en/tutorials/first-app/c07-container.mdx +0 -281
- package/docs/en/tutorials/first-app/c08-entries.mdx +0 -135
- package/docs/zh/apis/app/hooks/server/index_.mdx +0 -10
- package/docs/zh/apis/app/hooks/src/index_.mdx +0 -39
- package/docs/zh/apis/app/hooks/src/stories.mdx +0 -16
- package/docs/zh/apis/app/runtime/app/define-config.mdx +0 -67
- package/docs/zh/apis/app/runtime/core/bootstrap.mdx +0 -74
- package/docs/zh/apis/app/runtime/core/create-app.mdx +0 -35
- package/docs/zh/apis/app/runtime/core/use-loader.mdx +0 -89
- package/docs/zh/apis/app/runtime/core/use-module-apps.mdx +0 -179
- package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +0 -116
- package/docs/zh/apis/app/runtime/model/Provider.mdx +0 -36
- package/docs/zh/apis/app/runtime/model/auto-actions.mdx +0 -122
- package/docs/zh/apis/app/runtime/model/connect.mdx +0 -143
- package/docs/zh/apis/app/runtime/model/create-app.mdx +0 -75
- package/docs/zh/apis/app/runtime/model/create-store.mdx +0 -61
- package/docs/zh/apis/app/runtime/model/handle-effect.mdx +0 -108
- package/docs/zh/apis/app/runtime/model/model_.mdx +0 -201
- package/docs/zh/apis/app/runtime/model/use-local-model.mdx +0 -29
- package/docs/zh/apis/app/runtime/model/use-model.mdx +0 -89
- package/docs/zh/apis/app/runtime/model/use-static-model.mdx +0 -49
- package/docs/zh/apis/app/runtime/model/use-store.mdx +0 -26
- package/docs/zh/apis/app/runtime/ssr/pre-render.mdx +0 -96
- package/docs/zh/apis/app/runtime/web-server/hook.mdx +0 -136
- package/docs/zh/apis/app/runtime/web-server/middleware.mdx +0 -114
- package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +0 -165
- package/docs/zh/components/bff-proxy-path-rewrite.mdx +0 -16
- package/docs/zh/components/bff-proxy-principle.mdx +0 -1
- package/docs/zh/components/builder.mdx +0 -3
- package/docs/zh/components/create-bff-api-app.mdx +0 -25
- package/docs/zh/components/custom-router-micro-frontend.mdx +0 -40
- package/docs/zh/components/enable-micro-frontend.mdx +0 -30
- package/docs/zh/components/enableSwc.mdx +0 -17
- package/docs/zh/components/global-proxy-config.mdx +0 -85
- package/docs/zh/components/global-proxy.mdx +0 -29
- package/docs/zh/components/package-manager.mdx +0 -11
- package/docs/zh/components/reduck-notify.mdx +0 -27
- package/docs/zh/components/reduck-tip.mdx +0 -8
- package/docs/zh/configure/app/auto-load-plugin.mdx +0 -66
- package/docs/zh/configure/app/deploy/microFrontend.mdx +0 -55
- package/docs/zh/configure/app/dev/port.mdx +0 -25
- package/docs/zh/configure/app/dev/proxy.mdx +0 -9
- package/docs/zh/configure/app/experiments/lazy-compilation.mdx +0 -105
- package/docs/zh/configure/app/html/disable-html-folder.mdx +0 -45
- package/docs/zh/configure/app/html/favicon-by-entries.mdx +0 -37
- package/docs/zh/configure/app/html/inject-by-entries.mdx +0 -37
- package/docs/zh/configure/app/html/meta-by-entries.mdx +0 -48
- package/docs/zh/configure/app/html/tags-by-entries.mdx +0 -44
- package/docs/zh/configure/app/html/template-by-entries.mdx +0 -33
- package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +0 -36
- package/docs/zh/configure/app/html/title-by-entries.mdx +0 -37
- package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +0 -21
- package/docs/zh/configure/app/output/disable-css-extract.mdx +0 -16
- package/docs/zh/configure/app/output/disable-filename-hash.mdx +0 -16
- package/docs/zh/configure/app/output/disable-minimize.mdx +0 -14
- package/docs/zh/configure/app/output/disable-node-polyfill.mdx +0 -22
- package/docs/zh/configure/app/output/disable-source-map.mdx +0 -31
- package/docs/zh/configure/app/output/enable-asset-fallback.mdx +0 -36
- package/docs/zh/configure/app/output/enable-inline-scripts.mdx +0 -22
- package/docs/zh/configure/app/output/enable-inline-styles.mdx +0 -22
- package/docs/zh/configure/app/output/enable-latest-decorators.mdx +0 -14
- package/docs/zh/configure/app/performance/transform-lodash.mdx +0 -52
- package/docs/zh/configure/app/runtime/master-app.mdx +0 -38
- package/docs/zh/configure/app/runtime/state.mdx +0 -52
- package/docs/zh/configure/app/source/disable-entry-dirs.mdx +0 -38
- package/docs/zh/configure/app/source/enable-custom-entry.mdx +0 -67
- package/docs/zh/configure/app/source/module-scopes.mdx +0 -72
- package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +0 -57
- package/docs/zh/configure/app/source/resolve-main-fields.mdx +0 -46
- package/docs/zh/configure/app/tools/esbuild.mdx +0 -44
- package/docs/zh/configure/app/tools/pug.mdx +0 -54
- package/docs/zh/configure/app/tools/styled-components.mdx +0 -54
- package/docs/zh/configure/app/tools/tailwindcss.mdx +0 -98
- package/docs/zh/configure/app/tools/terser.mdx +0 -58
- package/docs/zh/configure/app/tools/ts-loader.mdx +0 -76
- package/docs/zh/configure/app/tools/webpack-chain.mdx +0 -253
- package/docs/zh/configure/app/tools/webpack.mdx +0 -305
- package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -154
- package/docs/zh/guides/deprecated.md +0 -19
- package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -26
- package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +0 -332
- package/docs/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -296
- package/docs/zh/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
- package/docs/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -27
- package/docs/zh/guides/topic-detail/model/_meta.json +0 -14
- package/docs/zh/guides/topic-detail/model/auto-actions.mdx +0 -88
- package/docs/zh/guides/topic-detail/model/computed-state.mdx +0 -147
- package/docs/zh/guides/topic-detail/model/define-model.mdx +0 -63
- package/docs/zh/guides/topic-detail/model/faq.mdx +0 -36
- package/docs/zh/guides/topic-detail/model/manage-effects.mdx +0 -256
- package/docs/zh/guides/topic-detail/model/model-communicate.mdx +0 -217
- package/docs/zh/guides/topic-detail/model/performance.mdx +0 -167
- package/docs/zh/guides/topic-detail/model/quick-start.mdx +0 -117
- package/docs/zh/guides/topic-detail/model/redux-integration.mdx +0 -20
- package/docs/zh/guides/topic-detail/model/typescript-best-practice.mdx +0 -67
- package/docs/zh/guides/topic-detail/model/use-model.mdx +0 -248
- package/docs/zh/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
- package/docs/zh/plugin/official/cli-plugins/plugin-swc.mdx +0 -351
- package/docs/zh/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
- package/docs/zh/plugin/official/rsbuild-plugins/_meta.json +0 -1
- package/docs/zh/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -201
- package/docs/zh/plugin/official/rsbuild-plugins.mdx +0 -3
- package/docs/zh/tutorials/first-app/c01-start.mdx +0 -99
- package/docs/zh/tutorials/first-app/c02-component.mdx +0 -60
- package/docs/zh/tutorials/first-app/c03-css.mdx +0 -323
- package/docs/zh/tutorials/first-app/c04-routes.mdx +0 -172
- package/docs/zh/tutorials/first-app/c05-loader.mdx +0 -89
- package/docs/zh/tutorials/first-app/c06-model.mdx +0 -274
- package/docs/zh/tutorials/first-app/c07-container.mdx +0 -281
- package/docs/zh/tutorials/first-app/c08-entries.mdx +0 -135
- /package/docs/en/components/{reduck-migration.mdx → auto-upgrade.mdx} +0 -0
- /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)
|
|
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
|
-
|
|
5
|
+
## Core Advantages
|
|
6
6
|
|
|
7
|
-
- **
|
|
8
|
-
- **SEO
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
16
|
+
To switch to traditional SSR mode (waiting for all data to load before returning at once), you can configure:
|
|
17
17
|
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
89
|
+
const res = await fetch(`URL_ADDRESS?id=${params.id}`);
|
|
90
|
+
const data = await res.json();
|
|
87
91
|
return {
|
|
88
|
-
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
|
|
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
|
|
1
|
+
# Streaming Server-Side Rendering
|
|
2
2
|
|
|
3
|
-
Streaming
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
230
|
-
|
|
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.
|