@modern-js/main-doc 2.69.5 → 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
|
@@ -2,88 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
[Tailwind CSS](https://tailwindcss.com/) 是一个以 Utility Class 为基础的 CSS 框架和设计系统,可以快速地为组件添加常用样式,同时支持主题样式的灵活扩展。
|
|
4
4
|
|
|
5
|
-
在 Modern.js 中使用
|
|
5
|
+
## 在 Modern.js 中使用 Tailwind CSS
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
在 Modern.js 中使用 [Tailwind CSS](https://tailwindcss.com/),你只需要按照 Rsbuild 操作步骤进行配置,Rsbuild 支持 Tailwind CSS v3 和 v4 版本:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
? 请选择功能名称 启用 「Tailwind CSS」 支持
|
|
12
|
-
```
|
|
9
|
+
- [Tailwind CSS v3](https://rsbuild.rs/zh/guide/styling/tailwindcss-v3#tailwind-css-v3)
|
|
10
|
+
- [Tailwind CSS v4](https://rsbuild.rs/zh/guide/styling/tailwindcss)
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
2. 在 `modern.config.ts` 中注册 Tailwind 插件:
|
|
17
|
-
|
|
18
|
-
```ts title="modern.config.ts"
|
|
19
|
-
import { tailwindcssPlugin } from '@modern-js/plugin-tailwindcss';
|
|
20
|
-
|
|
21
|
-
export default defineConfig({
|
|
22
|
-
plugins: [..., tailwindcssPlugin()],
|
|
23
|
-
});
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
3. 创建 `index.css` 文件,添加以下代码:
|
|
27
|
-
|
|
28
|
-
```css title="index.css"
|
|
29
|
-
@tailwind base;
|
|
30
|
-
@tailwind components;
|
|
31
|
-
@tailwind utilities;
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
:::info
|
|
35
|
-
根据需求不同,你可以选择性地导入 Tailwind CSS 提供的 CSS 样式。请参考 [`@tailwind` 文档](https://tailwindcss.com/docs/functions-and-directives#tailwind) 来了解 `@tailwind` 指令的详细用法。
|
|
36
|
-
:::
|
|
37
|
-
|
|
38
|
-
4. 引用 `index.css` 文件,比如在入口的根组件 `src/App.jsx` 添加如下代码:
|
|
39
|
-
|
|
40
|
-
```js
|
|
41
|
-
import './index.css';
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
5. 然后即可在各个组件中使用 Tailwind CSS 提供的 Utility Class 了:
|
|
45
|
-
|
|
46
|
-
```tsx
|
|
47
|
-
const Hello = () => (
|
|
48
|
-
<div className="h-12 w-48">
|
|
49
|
-
<p className="text-xl font-medium text-black">hello world</p>
|
|
50
|
-
</div>
|
|
51
|
-
);
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 配置 Tailwind CSS
|
|
55
|
-
|
|
56
|
-
在 Modern.js 中,你有两种方式来配置 Tailwind CSS:
|
|
57
|
-
|
|
58
|
-
1. 使用 `tailwind.config.{ts,js}` 文件,该用法与 Tailwind CSS 的官方用法一致,请参考 ["Tailwind CSS - Configuration"](https://tailwindcss.com/docs/configuration) 来了解更多用法。
|
|
59
|
-
|
|
60
|
-
```ts title="tailwind.config.ts"
|
|
61
|
-
import type { Config } from 'tailwindcss';
|
|
62
|
-
|
|
63
|
-
export default {
|
|
64
|
-
content: ['./src/**/*.{js,jsx,ts,tsx}'],
|
|
65
|
-
} as Config;
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
:::tip
|
|
69
|
-
请升级 Modern.js 到 >= MAJOR_VERSION.33.0 版本,以支持自动读取 `tailwind.config.{ts,js}` 文件。
|
|
70
|
-
:::
|
|
71
|
-
|
|
72
|
-
2. 使用 [tools.tailwindcss](/configure/app/tools/tailwindcss.html) 配置项,这是旧版本的用法,我们更推荐使用 `tailwind.config.{ts,js}` 文件进行配置。
|
|
73
|
-
|
|
74
|
-
```ts title="modern.config.ts"
|
|
75
|
-
export default {
|
|
76
|
-
tools: {
|
|
77
|
-
tailwindcss: {
|
|
78
|
-
content: ['./src/**/*.{js,jsx,ts,tsx}'],
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
如果你同时使用了 `tailwind.config.{ts,js}` 文件和 `tools.tailwindcss` 选项,那么 `tools.tailwindcss` 定义的配置会优先生效,并覆盖 `tailwind.config.{ts,js}` 中定义的内容。
|
|
85
|
-
|
|
86
|
-
### Tailwind CSS 自动补全
|
|
12
|
+
## Tailwind CSS 自动补全
|
|
87
13
|
|
|
88
14
|
Tailwind CSS 官方提供了 [Tailwind CSS IntelliSense](https://github.com/tailwindlabs/tailwindcss-intellisense) 插件,用于在 VS Code 中自动补全 Tailwind CSS 的 class names、CSS functions 和 directives。
|
|
89
15
|
|
|
@@ -92,20 +18,10 @@ Tailwind CSS 官方提供了 [Tailwind CSS IntelliSense](https://github.com/tail
|
|
|
92
18
|
1. 在 VS Code 中安装 [Tailwind CSS IntelliSense](https://github.com/tailwindlabs/tailwindcss-intellisense) 插件。
|
|
93
19
|
2. 如果项目的根目录没有 `tailwind.config.{ts,js}` 文件,那么你需要创建该文件,并写入当前项目的 Tailwind CSS 配置,否则 IDE 插件将无法正确生效。
|
|
94
20
|
|
|
95
|
-
## Tailwind CSS 版本
|
|
96
|
-
|
|
97
|
-
Modern.js 同时支持 Tailwind CSS v2 和 v3 版本,框架会识别项目 `package.json` 中的 `tailwindcss` 依赖版本,并启用相应的配置。默认情况下,我们会为你安装 Tailwind CSS v3 版本。
|
|
98
|
-
|
|
99
|
-
如果你的项目仍在使用 Tailwind CSS v2,我们推荐你升级到 v3 以支持 JIT 等能力。关于 Tailwind CSS v2 与 v3 版本之间的差异,请参考以下文章:
|
|
100
|
-
|
|
101
|
-
- [Tailwind CSS v3.0](https://tailwindcss.com/blog/tailwindcss-v3)
|
|
102
|
-
- [Upgrade Guide](https://tailwindcss.com/docs/upgrade-guide)
|
|
103
|
-
|
|
104
21
|
## 浏览器兼容性
|
|
105
22
|
|
|
106
|
-
Tailwind CSS
|
|
23
|
+
Tailwind CSS v3 不支持 IE 11 浏览器,相关背景请参考:
|
|
107
24
|
|
|
108
25
|
- [Tailwind CSS v3 - Browser Support](https://tailwindcss.com/docs/browser-support)。
|
|
109
|
-
- [Tailwind CSS v2 - Browser Support](https://v2.tailwindcss.com/docs/browser-support)
|
|
110
26
|
|
|
111
27
|
如果你在 IE 11 浏览器上使用 Tailwind CSS,可能会出现部分样式不可用的现象,请谨慎使用。
|
|
@@ -27,7 +27,7 @@ import { fetchUserData } from './api';
|
|
|
27
27
|
const getUser = cache(fetchUserData);
|
|
28
28
|
|
|
29
29
|
const loader = async () => {
|
|
30
|
-
const user = await getUser(
|
|
30
|
+
const user = await getUser('123'); // 函数入参发生变化时,函数会重新执行
|
|
31
31
|
return {
|
|
32
32
|
user,
|
|
33
33
|
};
|
|
@@ -67,7 +67,7 @@ interface CacheOptions {
|
|
|
67
67
|
## 使用范围
|
|
68
68
|
|
|
69
69
|
与 react 的 [cache](https://react.dev/reference/react/cache) 函数只能在 server component 组件中使用不同,
|
|
70
|
-
|
|
70
|
+
Modern.js 提供的 `cache` 函数可以在任意的前端或服务端的代码中使用。
|
|
71
71
|
|
|
72
72
|
## 详细用法
|
|
73
73
|
|
|
@@ -117,8 +117,11 @@ const getDashboardStats = cache(
|
|
|
117
117
|
|
|
118
118
|
`revalidate` 参数用于设置缓存过期后,重新验证缓存的时间窗口,可以和 `maxAge` 参数一起使用,类似与 HTTP Cache-Control 的 stale-while-revalidate 模式。
|
|
119
119
|
|
|
120
|
+
如以下示例,缓存的行为会根据时间分为三个阶段:
|
|
120
121
|
|
|
121
|
-
|
|
122
|
+
1. **0 到 2 分钟(`maxAge` 内)**:缓存新鲜,直接返回缓存数据,不会重新请求
|
|
123
|
+
2. **2 到 3 分钟(`maxAge` 到 `maxAge + revalidate` 之间)**:缓存过期但在重新验证窗口内,会立即返回旧数据,同时在后台重新请求数据并更新缓存
|
|
124
|
+
3. **超过 3 分钟(超过 `maxAge + revalidate`)**:缓存完全过期,会重新执行函数获取新数据
|
|
122
125
|
|
|
123
126
|
```ts
|
|
124
127
|
import { cache, CacheTime } from '@modern-js/runtime/cache';
|
|
@@ -159,7 +162,7 @@ const getComplexStatistics = cache(
|
|
|
159
162
|
}
|
|
160
163
|
);
|
|
161
164
|
|
|
162
|
-
await revalidateTag('dashboard
|
|
165
|
+
await revalidateTag('dashboard'); // 会使 getDashboardStats 函数和 getComplexStatistics 函数的缓存都失效
|
|
163
166
|
```
|
|
164
167
|
|
|
165
168
|
#### `getKey` 参数
|
|
@@ -451,7 +454,7 @@ class RedisContainer implements Container {
|
|
|
451
454
|
}
|
|
452
455
|
|
|
453
456
|
async get(key: string): Promise<string | null> {
|
|
454
|
-
const value = await this.
|
|
457
|
+
const value = await this.client.get(key);
|
|
455
458
|
return value ? JSON.parse(value) : null;
|
|
456
459
|
}
|
|
457
460
|
|
|
@@ -13,7 +13,7 @@ Modern.js 中提供了开箱即用的数据获取能力,开发者可以通过
|
|
|
13
13
|
Modern.js v1 项目通过 `useLoader` 获取数据,这已经不是我们推荐的用法,建议迁移到 Data Loader。
|
|
14
14
|
:::
|
|
15
15
|
|
|
16
|
-
Modern.js 推荐使用[约定式路由](/guides/basic-features/routes)做路由的管理,每个路由组件(`layout.ts`,`page.ts` 或 `$.tsx`)都可以有一个同名的 `.data` 文件。这些文件可以导出一个 `loader` 函数,我们称为 Data Loader,它会在对应的路由组件渲染之前执行,为组件提供数据。如下面示例:
|
|
16
|
+
Modern.js 推荐使用[约定式路由](/guides/basic-features/routes/routes)做路由的管理,每个路由组件(`layout.ts`,`page.ts` 或 `$.tsx`)都可以有一个同名的 `.data` 文件。这些文件可以导出一个 `loader` 函数,我们称为 Data Loader,它会在对应的路由组件渲染之前执行,为组件提供数据。如下面示例:
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
.
|
|
@@ -76,7 +76,7 @@ export default function UserPage() {
|
|
|
76
76
|
在以后的版本中,Modern.js 可能会支持在 CSR 环境下,`loader` 函数也在服务端运行,以提高性能和安全性,所以这里建议尽可能地保证 `loader` 的纯粹,只做数据获取的场景。
|
|
77
77
|
:::
|
|
78
78
|
|
|
79
|
-
当在浏览器端导航时,基于[约定式路由](/guides/basic-features/routes),Modern.js 能够支持所有的 `loader` 函数并行执行(请求)。即当访问 `/user/profile` 时,`/user` 和 `/user/profile` 下的 `loader` 函数都会并行执行(请求),这种方式解决了部分请求、渲染瀑布流的问题,较大的提升了页面性能。
|
|
79
|
+
当在浏览器端导航时,基于[约定式路由](/guides/basic-features/routes/routes),Modern.js 能够支持所有的 `loader` 函数并行执行(请求)。即当访问 `/user/profile` 时,`/user` 和 `/user/profile` 下的 `loader` 函数都会并行执行(请求),这种方式解决了部分请求、渲染瀑布流的问题,较大的提升了页面性能。
|
|
80
80
|
|
|
81
81
|
## `loader` 函数
|
|
82
82
|
|
|
@@ -84,7 +84,7 @@ export default function UserPage() {
|
|
|
84
84
|
|
|
85
85
|
### params
|
|
86
86
|
|
|
87
|
-
`params` 是当路由为[动态路由](/guides/basic-features/routes#动态路由)时的动态路由片段,会作为参数传入 `loader` 函数:
|
|
87
|
+
`params` 是当路由为[动态路由](/guides/basic-features/routes/routes#动态路由)时的动态路由片段,会作为参数传入 `loader` 函数:
|
|
88
88
|
|
|
89
89
|
```tsx title="routes/user/[id]/page.data.ts"
|
|
90
90
|
import { LoaderFunctionArgs } from '@modern-js/runtime/router';
|
|
@@ -160,8 +160,9 @@ SSR 应用的 `loader` 函数只在服务端执行可以带来以下好处:
|
|
|
160
160
|
```tsx
|
|
161
161
|
export async function loader() {
|
|
162
162
|
const res = await fetch('URL_ADDRESS');
|
|
163
|
+
const data = await res.json();
|
|
163
164
|
return {
|
|
164
|
-
message:
|
|
165
|
+
message: data.message
|
|
165
166
|
}
|
|
166
167
|
}
|
|
167
168
|
```
|
|
@@ -170,7 +171,7 @@ export async function loader() {
|
|
|
170
171
|
|
|
171
172
|
### 基本用法
|
|
172
173
|
|
|
173
|
-
在 `loader` 函数中,可以通过 `throw error` 或者 `throw response` 的方式处理错误,当 `loader` 函数中有错误被抛出时,Modern.js 会停止执行当前 `loader` 中的代码,并将前端 UI 切换到定义的 [`ErrorBoundary`](/guides/basic-features/routes#错误处理) 组件:
|
|
174
|
+
在 `loader` 函数中,可以通过 `throw error` 或者 `throw response` 的方式处理错误,当 `loader` 函数中有错误被抛出时,Modern.js 会停止执行当前 `loader` 中的代码,并将前端 UI 切换到定义的 [`ErrorBoundary`](/guides/basic-features/routes/routes#错误处理) 组件:
|
|
174
175
|
|
|
175
176
|
```tsx
|
|
176
177
|
// routes/user/profile/page.data.ts
|
|
@@ -14,7 +14,7 @@ sidebar_position: 4
|
|
|
14
14
|
|
|
15
15
|
## 什么是 Data Action
|
|
16
16
|
|
|
17
|
-
Modern.js 推荐使用[约定式路由](/guides/basic-features/routes)做路由的管理,每个路由组件(`layout.ts`,`page.ts` 或 `$.tsx`)都可以有一个同名的 `.data` 文件。这些文件可以导出一个 `action` 函数,我们称为 Data Action,开发者可以在合适的时机调用它:
|
|
17
|
+
Modern.js 推荐使用[约定式路由](/guides/basic-features/routes/routes)做路由的管理,每个路由组件(`layout.ts`,`page.ts` 或 `$.tsx`)都可以有一个同名的 `.data` 文件。这些文件可以导出一个 `action` 函数,我们称为 Data Action,开发者可以在合适的时机调用它:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
.
|
|
@@ -29,7 +29,7 @@ Modern.js 推荐使用[约定式路由](/guides/basic-features/routes)做路由
|
|
|
29
29
|
```ts title="routes/user/layout.data.ts"
|
|
30
30
|
import type { ActionFunction } from '@modern-js/runtime/router';
|
|
31
31
|
|
|
32
|
-
export const action: ActionFunction = ({ request }) => {
|
|
32
|
+
export const action: ActionFunction = async ({ request }) => {
|
|
33
33
|
const newUser = await request.json();
|
|
34
34
|
const name = newUser.name;
|
|
35
35
|
return updateUserProfile(name);
|
|
@@ -82,7 +82,7 @@ export default () => {
|
|
|
82
82
|
|
|
83
83
|
### params
|
|
84
84
|
|
|
85
|
-
`params` 是当路由为[动态路由](/guides/basic-features/routes#动态路由)时动态路由片段,会作为参数传入 `action` 函数:
|
|
85
|
+
`params` 是当路由为[动态路由](/guides/basic-features/routes/routes#动态路由)时动态路由片段,会作为参数传入 `action` 函数:
|
|
86
86
|
|
|
87
87
|
```tsx title="routes/user/[id]/page.data.ts"
|
|
88
88
|
import { ActionFunctionArgs } from '@modern-js/runtime/router';
|
|
@@ -97,7 +97,7 @@ export const action = async ({ params }: ActionFunctionArgs) => {
|
|
|
97
97
|
|
|
98
98
|
### request
|
|
99
99
|
|
|
100
|
-
`request` 是一个 [Fetch Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) 实例。通过 `request`,可以在 action 函数中获取到浏览器端提交的数据,如 `request.json()`,`request.formData()`,`request.
|
|
100
|
+
`request` 是一个 [Fetch Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) 实例。通过 `request`,可以在 action 函数中获取到浏览器端提交的数据,如 `request.json()`,`request.formData()`,`request.text()` 等。具体使用哪个 API,请参考[数据类型](#数据类型)。
|
|
101
101
|
|
|
102
102
|
```tsx title="routes/user/[id]/page.data.ts"
|
|
103
103
|
import { ActionFunctionArgs } from '@modern-js/runtime/router';
|
|
@@ -70,7 +70,7 @@ module.exports = {
|
|
|
70
70
|
|
|
71
71
|
```js
|
|
72
72
|
module.exports = {
|
|
73
|
-
'api/getInfo': (req, res) => {
|
|
73
|
+
'/api/getInfo': (req, res) => {
|
|
74
74
|
setTimeout(() => {
|
|
75
75
|
res.end('delay 2000ms');
|
|
76
76
|
}, 2000);
|
|
@@ -83,6 +83,9 @@ module.exports = {
|
|
|
83
83
|
`config/mock/index.ts` 下还可以导出 `config` 对象,更精细的控制 Mock 服务。
|
|
84
84
|
|
|
85
85
|
```ts
|
|
86
|
+
import type { IncomingMessage } from 'node:http';
|
|
87
|
+
import type { ServerResponse } from 'node:http';
|
|
88
|
+
|
|
86
89
|
type MockConfig = {
|
|
87
90
|
enable: ((req: IncomingMessage, res: ServerResponse) => boolean) | boolean;
|
|
88
91
|
};
|
|
@@ -4,8 +4,6 @@ sidebar_position: 6
|
|
|
4
4
|
|
|
5
5
|
# 网络代理
|
|
6
6
|
|
|
7
|
-
## 本地代理
|
|
8
|
-
|
|
9
7
|
Modern.js 在 [`tools.devServer`](/configure/app/tools/dev-server) 中提供了配置开发环境代理的方式。例如,将本地开发接口,代理到线上某个地址:
|
|
10
8
|
|
|
11
9
|
```ts title="modern.config.ts"
|
|
@@ -31,9 +29,3 @@ export default defineConfig({
|
|
|
31
29
|
配置格式可参考:[http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware)。
|
|
32
30
|
|
|
33
31
|
:::
|
|
34
|
-
|
|
35
|
-
## 全局代理
|
|
36
|
-
|
|
37
|
-
import GlobalProxy from "@site-docs/components/global-proxy"
|
|
38
|
-
|
|
39
|
-
<GlobalProxy />
|
|
@@ -26,14 +26,14 @@ import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';
|
|
|
26
26
|
export default {
|
|
27
27
|
// ...
|
|
28
28
|
tools: {
|
|
29
|
-
|
|
29
|
+
bundlerChain(chain) {
|
|
30
30
|
// 仅在 RSDOCTOR 为 true 时注册插件,因为插件会增加构建耗时
|
|
31
31
|
if (process.env.RSDOCTOR) {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
chain.plugin('rsdoctor').use(RsdoctorRspackPlugin, [
|
|
33
|
+
{
|
|
34
34
|
// 插件选项
|
|
35
|
-
}
|
|
36
|
-
);
|
|
35
|
+
},
|
|
36
|
+
]);
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
},
|
|
@@ -46,7 +46,7 @@ export default {
|
|
|
46
46
|
|
|
47
47
|
## 执行构建
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
你可以在项目内执行 build 命令,在完成构建后,Rsdoctor 会自动打开本次构建的分析页面。
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
RSDOCTOR=true npm run build
|
|
@@ -26,7 +26,6 @@ MODERNJS_DEPLOY=netlify npx modern deploy
|
|
|
26
26
|
在 Modern.js 官方支持的部署平台中部署时,无需指定环境变量。
|
|
27
27
|
:::
|
|
28
28
|
|
|
29
|
-
|
|
30
29
|
## ModernJS 内置 Node.js 服务器
|
|
31
30
|
|
|
32
31
|
### 单仓库项目
|
|
@@ -54,8 +53,8 @@ You can preview this build by `node .output/index`
|
|
|
54
53
|
```
|
|
55
54
|
PORT=3000 node .output/index
|
|
56
55
|
```
|
|
57
|
-
:::
|
|
58
56
|
|
|
57
|
+
:::
|
|
59
58
|
|
|
60
59
|
### Monorepo
|
|
61
60
|
|
|
@@ -67,7 +66,7 @@ PORT=3000 node .output/index
|
|
|
67
66
|
{
|
|
68
67
|
"scripts": {
|
|
69
68
|
"build:packages": "pnpm --filter 'app^...' run build",
|
|
70
|
-
"deploy": "pnpm run build:packages && modern deploy"
|
|
69
|
+
"deploy": "pnpm run build:packages && modern deploy"
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
```
|
|
@@ -78,7 +77,7 @@ PORT=3000 node .output/index
|
|
|
78
77
|
{
|
|
79
78
|
"scripts": {
|
|
80
79
|
"build:packages": "rush rebuild --to-except app",
|
|
81
|
-
"deploy": "rushx build:packages && modern deploy"
|
|
80
|
+
"deploy": "rushx build:packages && modern deploy"
|
|
82
81
|
}
|
|
83
82
|
}
|
|
84
83
|
```
|
|
@@ -102,6 +101,7 @@ Netlify 是一个流行的 Web 开发平台,专为构建、发布和维护现
|
|
|
102
101
|
```
|
|
103
102
|
|
|
104
103
|
在 `netlify.toml` 中添加以下内容:
|
|
104
|
+
|
|
105
105
|
```toml
|
|
106
106
|
[build]
|
|
107
107
|
publish = "dist"
|
|
@@ -131,14 +131,12 @@ Netlify 是一个流行的 Web 开发平台,专为构建、发布和维护现
|
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
:::info
|
|
134
|
+
|
|
134
135
|
1. 目前 Modern.js 还不支持在 Netlify Edge Functions 进行部署,我们将在后续的版本中支持。
|
|
135
136
|
2. 你可参考部署[项目示例](https://github.com/web-infra-dev/modern-js-examples/tree/main/examples/modern-js-deploy-ssr)。
|
|
136
137
|
|
|
137
138
|
:::
|
|
138
139
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
140
|
### Monorepo 项目
|
|
143
141
|
|
|
144
142
|
:::info
|
|
@@ -169,7 +167,7 @@ Netlify 是一个流行的 Web 开发平台,专为构建、发布和维护现
|
|
|
169
167
|
{
|
|
170
168
|
"scripts": {
|
|
171
169
|
"build:packages": "pnpm --filter 'app^...' run build",
|
|
172
|
-
"deploy": "pnpm run build:packages && modern deploy"
|
|
170
|
+
"deploy": "pnpm run build:packages && modern deploy"
|
|
173
171
|
}
|
|
174
172
|
}
|
|
175
173
|
```
|
|
@@ -231,7 +229,6 @@ Vercel 是一个面向现代 Web 应用的部署平台,它提供了丰富的
|
|
|
231
229
|
1. 当前,Modern.js 还不支持在 Vercel 平台上部署 BFF 项目,我们将在后续的版本中支持。
|
|
232
230
|
2. 函数运行的 node.js 版本由项目在 Vercel 平台配置决定。
|
|
233
231
|
|
|
234
|
-
|
|
235
232
|
:::info
|
|
236
233
|
你可参考部署[项目示例](https://github.com/web-infra-dev/modern-js-examples/tree/main/examples/modern-js-deploy-ssr)。
|
|
237
234
|
|
|
@@ -261,10 +258,11 @@ Vercel 是一个面向现代 Web 应用的部署平台,它提供了丰富的
|
|
|
261
258
|
|
|
262
259
|
<img src="https://sf16-sg.tiktokcdn.com/obj/eden-sg/lmeh7nuptpfnuhd/vercel-root-directory.png" />
|
|
263
260
|
|
|
264
|
-
将 Node.js 运行时设置为 `
|
|
261
|
+
将 Node.js 运行时设置为 `20.x`:
|
|
262
|
+
|
|
265
263
|
```json title="package.json"
|
|
266
264
|
"engines": {
|
|
267
|
-
"node": "
|
|
265
|
+
"node": "20.x"
|
|
268
266
|
},
|
|
269
267
|
```
|
|
270
268
|
|
|
@@ -274,12 +272,13 @@ Vercel 是一个面向现代 Web 应用的部署平台,它提供了丰富的
|
|
|
274
272
|
{
|
|
275
273
|
"scripts": {
|
|
276
274
|
"build:packages": "pnpm --filter 'app^...' run build",
|
|
277
|
-
"deploy": "pnpm run build:packages && modern deploy"
|
|
275
|
+
"deploy": "pnpm run build:packages && modern deploy"
|
|
278
276
|
}
|
|
279
277
|
}
|
|
280
278
|
```
|
|
281
279
|
|
|
282
280
|
在 `packages/app/vercel.json` 文件中添加以下内容:
|
|
281
|
+
|
|
283
282
|
```json title="vercel.json"
|
|
284
283
|
{
|
|
285
284
|
"buildCommand": "npm run deploy",
|
|
@@ -291,23 +290,25 @@ Vercel 是一个面向现代 Web 应用的部署平台,它提供了丰富的
|
|
|
291
290
|
|
|
292
291
|
## Github Pages
|
|
293
292
|
|
|
294
|
-
|
|
293
|
+
如果你要为一个仓库创建 Github 页面,并且你没有自定义域名,则该页面的 URL 将会是以下格式:`http://<username>.github.io/<repository-name>`,所以需要在 `modern.config.ts` 中添加
|
|
295
294
|
以下配置:
|
|
295
|
+
|
|
296
296
|
```ts
|
|
297
297
|
import { defineConfig } from '@modern-js/app-tools';
|
|
298
298
|
|
|
299
299
|
export default defineConfig({
|
|
300
300
|
//...
|
|
301
|
-
server:{
|
|
302
|
-
baseUrl:
|
|
301
|
+
server: {
|
|
302
|
+
baseUrl: '/<repository-name>',
|
|
303
303
|
},
|
|
304
304
|
output: {
|
|
305
|
-
assetPrefix:
|
|
306
|
-
}
|
|
305
|
+
assetPrefix: '/<repository-name>',
|
|
306
|
+
},
|
|
307
307
|
});
|
|
308
308
|
```
|
|
309
309
|
|
|
310
310
|
Github Pages 支持两种部署方式,通过分支部署或通过 Github Actions 部署,如果通过分支部署,可以使用以下步骤:
|
|
311
|
+
|
|
311
312
|
1. 在 github 仓库中,选择 `Settings > Pages > Source > Deploy from a branch`。
|
|
312
313
|
2. 安装 `gh-pages` 依赖作为开发依赖。
|
|
313
314
|
3. 在 package.json 的 `scripts` 中添加 `"deploy:gh-pages": "MODERNJS_DEPLOY=ghPages modern deploy && gh-pages -d .output"`。
|
|
@@ -322,7 +323,6 @@ Github Pages 支持两种部署方式,通过分支部署或通过 Github Actio
|
|
|
322
323
|
|
|
323
324
|
如果通过 Github Actions 部署,可以选择 Settings > Pages > Source > GitHub Actions,并在项目中添加 workflow 文件,可参考[示例](https://github.com/web-infra-dev/modern-js-examples/tree/main/examples/modern-js-deploy-csr)。
|
|
324
325
|
|
|
325
|
-
|
|
326
326
|
## 自建 Node.js 服务器
|
|
327
327
|
|
|
328
328
|
通常情况下,我们推荐使用 Modern.js 内置的 Node.js 服务器来部署应用,它支持托管纯前端项目或者全栈项目,并且保证在开发和生产环境下的表现一致。
|
|
@@ -367,10 +367,14 @@ const app = new Koa();
|
|
|
367
367
|
app.use(async (ctx, next) => {
|
|
368
368
|
if (ctx.path.startsWith('/static')) {
|
|
369
369
|
ctx.type = mime.lookup(ctx.path);
|
|
370
|
-
ctx.body = fs.createReadStream(
|
|
370
|
+
ctx.body = fs.createReadStream(
|
|
371
|
+
path.resolve(__dirname, `.output${ctx.path}`),
|
|
372
|
+
);
|
|
371
373
|
} else if (ctx.path === '/') {
|
|
372
374
|
ctx.type = 'html';
|
|
373
|
-
ctx.body = fs.createReadStream(
|
|
375
|
+
ctx.body = fs.createReadStream(
|
|
376
|
+
path.resolve(__dirname, '.output/html/main/index.html'),
|
|
377
|
+
);
|
|
374
378
|
}
|
|
375
379
|
});
|
|
376
380
|
app.listen(3000);
|
|
@@ -35,7 +35,7 @@ Modern.js 约定,在 `src/` 或入口目录下,可以创建 `Document.[jt]sx
|
|
|
35
35
|
|
|
36
36
|
### HTML 组件
|
|
37
37
|
|
|
38
|
-
Modern.js
|
|
38
|
+
Modern.js 提供了一系列渲染页面的组件,用来帮助开发者生成模板,可以从 `@modern-js/runtime/document` 中使用这些组件:
|
|
39
39
|
|
|
40
40
|
```tsx
|
|
41
41
|
import { Html, Body, Root, Head, Scripts } from '@modern-js/runtime/document';
|
|
@@ -154,7 +154,7 @@ export default function Document(): React.ReactElement {
|
|
|
154
154
|
你可以使用 `<Scripts>` 组件,将构建生成的 `<script>` 标签插入到 `<body>` 标签内:
|
|
155
155
|
|
|
156
156
|
```tsx
|
|
157
|
-
import React
|
|
157
|
+
import React from 'react';
|
|
158
158
|
import { Html, Root, Head, Body, Scripts } from '@modern-js/runtime/document';
|
|
159
159
|
|
|
160
160
|
export default function Document(): React.ReactElement {
|
|
@@ -47,8 +47,8 @@ Modern.js 提供了多个配置项来修改产物目录和产物名称,你可
|
|
|
47
47
|
- 通过 [output.filename](/configure/app/output/filename) 来修改产物的文件名。
|
|
48
48
|
- 通过 [output.distPath](/configure/app/output/dist-path) 来修改产物的输出路径。
|
|
49
49
|
- 通过 [output.legalComments](/configure/app/output/legal-comments) 来修改 License 文件的生成方式。
|
|
50
|
-
- 通过 [output.
|
|
51
|
-
- 通过 [html.
|
|
50
|
+
- 通过 [output.sourceMap](/configure/app/output/source-map) 来移除 Source Map 文件。
|
|
51
|
+
- 通过 [html.outputStructure](/configure/app/html/output-structure) 移除 HTML 产物对应的文件夹。
|
|
52
52
|
|
|
53
53
|
## 静态资源
|
|
54
54
|
|
|
@@ -112,7 +112,7 @@ export default {
|
|
|
112
112
|
},
|
|
113
113
|
},
|
|
114
114
|
html: {
|
|
115
|
-
|
|
115
|
+
outputStructure: 'flat',
|
|
116
116
|
},
|
|
117
117
|
};
|
|
118
118
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
["ssr", "streaming-ssr", "ssr-cache", "ssg", "before-render"]
|
|
1
|
+
["overview", "ssr", "streaming-ssr", "ssr-cache", "ssg", "rsc", "before-render"]
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# 渲染预处理
|
|
1
|
+
# 渲染预处理
|
|
2
2
|
|
|
3
3
|
在某些场景下,应用需要在渲染前执行预处理操作。Modern.js 推荐使用 **[Runtime 插件 (Runtime Plugin)](/plugin/introduction.html#runtime-插件)** 来实现这类逻辑。
|
|
4
4
|
|
|
5
5
|
## 定义 Runtime 插件
|
|
6
6
|
|
|
7
7
|
```ts
|
|
8
|
-
import type {
|
|
8
|
+
import type { RuntimePlugin } from '@modern-js/runtime';
|
|
9
9
|
|
|
10
|
-
const myRuntimePlugin = ():
|
|
10
|
+
const myRuntimePlugin = (): RuntimePlugin => ({
|
|
11
11
|
name: 'my-runtime-plugin',
|
|
12
|
-
setup:
|
|
13
|
-
api.onBeforeRender(
|
|
12
|
+
setup: api => {
|
|
13
|
+
api.onBeforeRender(context => {
|
|
14
14
|
// 在渲染前执行的逻辑
|
|
15
15
|
console.log('Before rendering:', context);
|
|
16
16
|
});
|
|
@@ -35,23 +35,24 @@ export default defineRuntimeConfig({
|
|
|
35
35
|
|
|
36
36
|
## 应用场景 -- 全局数据注入
|
|
37
37
|
|
|
38
|
-
通过 `onBeforeRender` 钩子的 `context` 参数,可以向应用注入全局数据。应用的组件可以通过 `
|
|
38
|
+
通过 `onBeforeRender` 钩子的 `context` 参数,可以向应用注入全局数据。应用的组件可以通过 `use(RuntimeContext)` Hook 访问这些数据。
|
|
39
39
|
|
|
40
40
|
:::info
|
|
41
41
|
|
|
42
42
|
此功能在以下场景中特别有用:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
|
|
44
|
+
- 需要页面级前置数据的应用
|
|
45
|
+
- 自定义数据注入流程
|
|
46
|
+
- 框架迁移场景(例如从 Next.js 迁移)
|
|
46
47
|
|
|
47
48
|
:::
|
|
48
49
|
|
|
49
50
|
**定义数据注入插件**
|
|
50
51
|
|
|
51
52
|
```ts
|
|
52
|
-
import type {
|
|
53
|
+
import type { RuntimePlugin } from '@modern-js/runtime';
|
|
53
54
|
|
|
54
|
-
const dataInjectionPlugin = ():
|
|
55
|
+
const dataInjectionPlugin = (): RuntimePlugin => ({
|
|
55
56
|
name: 'data-injection-plugin',
|
|
56
57
|
setup: api => {
|
|
57
58
|
api.onBeforeRender(context => {
|
|
@@ -67,10 +68,11 @@ export default dataInjectionPlugin;
|
|
|
67
68
|
**在组件中使用注入的数据**
|
|
68
69
|
|
|
69
70
|
```tsx
|
|
70
|
-
import {
|
|
71
|
+
import { use } from 'react';
|
|
72
|
+
import { RuntimeContext } from '@modern-js/runtime';
|
|
71
73
|
|
|
72
74
|
export default function MyComponent() {
|
|
73
|
-
const context =
|
|
75
|
+
const context = use(RuntimeContext);
|
|
74
76
|
const { message } = context;
|
|
75
77
|
|
|
76
78
|
return <div>{message}</div>;
|
|
@@ -82,9 +84,9 @@ export default function MyComponent() {
|
|
|
82
84
|
在 SSR 场景下,浏览器端可以获取服务端渲染期间通过 `onBeforeRender` 注入的数据。开发者可以根据需求决定是否在浏览器端重新获取数据来覆盖服务端数据。
|
|
83
85
|
|
|
84
86
|
```ts
|
|
85
|
-
import type {
|
|
87
|
+
import type { RuntimePlugin } from '@modern-js/runtime';
|
|
86
88
|
|
|
87
|
-
const dataInjectionPlugin = ():
|
|
89
|
+
const dataInjectionPlugin = (): RuntimePlugin => ({
|
|
88
90
|
name: 'data-injection-plugin',
|
|
89
91
|
setup: api => {
|
|
90
92
|
api.onBeforeRender(context => {
|
|
@@ -104,12 +106,3 @@ const dataInjectionPlugin = (): RuntimePluginFuture => ({
|
|
|
104
106
|
|
|
105
107
|
export default dataInjectionPlugin;
|
|
106
108
|
```
|
|
107
|
-
|
|
108
|
-
## 兼容性说明
|
|
109
|
-
|
|
110
|
-
在 Modern.js 的早期版本中,支持通过 `routes/layout.tsx` 中的 `init` 钩子以及 `App.init` 方法来添加渲染预处理逻辑。这些方式目前仍然**被支持**,但我们**强烈推荐**使用 Runtime 插件实现。
|
|
111
|
-
|
|
112
|
-
:::warning
|
|
113
|
-
|
|
114
|
-
未来版本中,`routes/layout.tsx` 的 `init` 钩子和 `App.init` 方法将逐步**废弃**。建议尽早迁移到 Runtime 插件方案。
|
|
115
|
-
:::
|