@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
|
@@ -6,27 +6,54 @@ sidebar_position: 16
|
|
|
6
6
|
|
|
7
7
|
Modern.js encapsulates most server-side capabilities required by projects, typically eliminating the need for server-side development. However, in certain scenarios such as user authentication, request preprocessing, or adding page skeletons, custom server-side logic may still be necessary.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
To use the Custom Web Server in a Modern.js project, follow these steps:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
You must ensure that the Modern.js version is x.67.5 or above.
|
|
13
|
-
:::
|
|
11
|
+
1. Install `@modern-js/server-runtime` dependency
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
If the `@modern-js/server-runtime` dependency is not yet installed in your project, install it first:
|
|
16
14
|
|
|
17
15
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
pnpm add @modern-js/server-runtime
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
:::tip Version Consistency
|
|
20
|
+
Make sure the version of `@modern-js/server-runtime` matches the version of `@modern-js/app-tools` in your project. All Modern.js official packages are released with a uniform version number, and version mismatches may cause compatibility issues.
|
|
21
|
+
|
|
22
|
+
Check the version of `@modern-js/app-tools` first, then install the same version of `@modern-js/server-runtime`:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Check the current version of @modern-js/app-tools
|
|
26
|
+
pnpm list @modern-js/app-tools
|
|
27
|
+
|
|
28
|
+
# Install the same version of @modern-js/server-runtime
|
|
29
|
+
pnpm add @modern-js/server-runtime@<version>
|
|
20
30
|
```
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
:::
|
|
33
|
+
|
|
34
|
+
2. Create the `server` directory and configuration file
|
|
35
|
+
|
|
36
|
+
Create a `server/modern.server.ts` file in the project root directory:
|
|
37
|
+
|
|
38
|
+
```ts title="server/modern.server.ts"
|
|
39
|
+
import { defineServerConfig } from '@modern-js/server-runtime';
|
|
40
|
+
|
|
41
|
+
export default defineServerConfig({
|
|
42
|
+
middlewares: [], // Middleware
|
|
43
|
+
renderMiddlewares: [], // Render Middleware
|
|
44
|
+
plugins: [], // Plugins
|
|
45
|
+
onError: () => {}, // Error handling
|
|
46
|
+
});
|
|
47
|
+
```
|
|
23
48
|
|
|
49
|
+
After creating the file, you can write custom logic in this file.
|
|
24
50
|
|
|
25
51
|
## Capabilities of the Custom Web Server
|
|
26
52
|
|
|
27
53
|
Modern.js's Web Server is based on Hono, and in the latest version of the Custom Web Server, we expose Hono's middleware capabilities, you can refer to [Hono API](https://hono.dev/docs/api/context) for more usage.
|
|
28
54
|
|
|
29
55
|
In the `server/modern.server.ts` file, you can add the following configurations to extend the Server:
|
|
56
|
+
|
|
30
57
|
- **Middleware**
|
|
31
58
|
- **Render Middleware**
|
|
32
59
|
- **Server-side Plugin**
|
|
@@ -51,7 +78,6 @@ export default defineServerConfig({
|
|
|
51
78
|
});
|
|
52
79
|
```
|
|
53
80
|
|
|
54
|
-
|
|
55
81
|
### Type Definition
|
|
56
82
|
|
|
57
83
|
`defineServerConfig` type definition is as follows:
|
|
@@ -61,22 +87,21 @@ import type { MiddlewareHandler } from 'hono';
|
|
|
61
87
|
|
|
62
88
|
type MiddlewareOrder = 'pre' | 'post' | 'default';
|
|
63
89
|
type MiddlewareObj = {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
90
|
+
name: string;
|
|
91
|
+
path?: string;
|
|
92
|
+
method?: 'options' | 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all';
|
|
93
|
+
handler: MiddlewareHandler | MiddlewareHandler[];
|
|
94
|
+
before?: Array<MiddlewareObj['name']>;
|
|
95
|
+
order?: MiddlewareOrder;
|
|
70
96
|
};
|
|
71
97
|
type ServerConfig = {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
98
|
+
middlewares?: MiddlewareObj[];
|
|
99
|
+
renderMiddlewares?: MiddlewareObj[];
|
|
100
|
+
plugins?: ServerPlugin[];
|
|
101
|
+
onError?: (err: Error, c: Context) => Promise<any> | any;
|
|
102
|
+
};
|
|
77
103
|
```
|
|
78
104
|
|
|
79
|
-
|
|
80
105
|
### Middleware
|
|
81
106
|
|
|
82
107
|
Middleware supports executing custom logic before and after the **request handling** and **page routing** processes in Modern.js services.
|
|
@@ -89,7 +114,10 @@ If you only need to handle BFF API routes, you can determine whether a request i
|
|
|
89
114
|
Usage is as follows:
|
|
90
115
|
|
|
91
116
|
```ts title="server/modern.server.ts"
|
|
92
|
-
import {
|
|
117
|
+
import {
|
|
118
|
+
defineServerConfig,
|
|
119
|
+
type MiddlewareHandler,
|
|
120
|
+
} from '@modern-js/server-runtime';
|
|
93
121
|
|
|
94
122
|
export const handler: MiddlewareHandler = async (c, next) => {
|
|
95
123
|
const monitors = c.get('monitors');
|
|
@@ -116,13 +144,15 @@ export default defineServerConfig({
|
|
|
116
144
|
You must execute the `next` function to proceed with the subsequent Middleware.
|
|
117
145
|
:::
|
|
118
146
|
|
|
119
|
-
|
|
120
147
|
### RenderMiddleware
|
|
121
148
|
|
|
122
149
|
If you only need to handle the logic before and after page rendering, modern.js also provides rendering middleware, which can be used as follows:
|
|
123
150
|
|
|
124
151
|
```ts title="server/modern.server.ts"
|
|
125
|
-
import {
|
|
152
|
+
import {
|
|
153
|
+
defineServerConfig,
|
|
154
|
+
type MiddlewareHandler,
|
|
155
|
+
} from '@modern-js/server-runtime';
|
|
126
156
|
|
|
127
157
|
// Inject render performance metrics
|
|
128
158
|
const renderTiming: MiddlewareHandler = async (c, next) => {
|
|
@@ -162,52 +192,46 @@ export default defineServerConfig({
|
|
|
162
192
|
});
|
|
163
193
|
```
|
|
164
194
|
|
|
165
|
-
|
|
166
195
|
### Plugin
|
|
167
196
|
|
|
168
197
|
Modern.js supports adding the aforementioned middleware and rendering middleware for the Server in custom plugins, which can be used as follows:
|
|
169
198
|
|
|
170
|
-
|
|
171
199
|
```ts title="server/plugins/server.ts"
|
|
172
|
-
import type {
|
|
200
|
+
import type { ServerPlugin } from '@modern-js/server-runtime';
|
|
173
201
|
|
|
174
|
-
export default ():
|
|
202
|
+
export default (): ServerPlugin => ({
|
|
175
203
|
name: 'serverPlugin',
|
|
176
204
|
setup(api) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
return serverConfig;
|
|
204
|
-
},
|
|
205
|
-
};
|
|
205
|
+
api.onPrepare(() => {
|
|
206
|
+
const { middlewares, renderMiddlewares } = api.getServerContext();
|
|
207
|
+
|
|
208
|
+
// Inject server-side data for page dataLoader consumption
|
|
209
|
+
middlewares?.push({
|
|
210
|
+
name: 'server-plugin-middleware',
|
|
211
|
+
handler: async (c, next) => {
|
|
212
|
+
c.set('message', 'hi modern.js');
|
|
213
|
+
await next();
|
|
214
|
+
// ...
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
// redirect
|
|
219
|
+
renderMiddlewares?.push({
|
|
220
|
+
name: 'server-plugin-render-middleware',
|
|
221
|
+
handler: async (c, next) => {
|
|
222
|
+
const user = getUser(c.req);
|
|
223
|
+
if (!user) {
|
|
224
|
+
return c.redirect('/login');
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
await next();
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
});
|
|
206
231
|
},
|
|
207
232
|
});
|
|
208
233
|
```
|
|
209
234
|
|
|
210
|
-
|
|
211
235
|
```ts title="server/modern.server.ts"
|
|
212
236
|
import { defineServerConfig } from '@modern-js/server-runtime';
|
|
213
237
|
import serverPlugin from './plugins/serverPlugin';
|
|
@@ -217,7 +241,6 @@ export default defineServerConfig({
|
|
|
217
241
|
});
|
|
218
242
|
```
|
|
219
243
|
|
|
220
|
-
|
|
221
244
|
```ts title="src/routes/page.data.ts"
|
|
222
245
|
import { useHonoContext } from '@modern-js/server-runtime';
|
|
223
246
|
import { defer } from '@modern-js/runtime/router';
|
|
@@ -229,10 +252,8 @@ export default () => {
|
|
|
229
252
|
|
|
230
253
|
// ...
|
|
231
254
|
};
|
|
232
|
-
|
|
233
255
|
```
|
|
234
256
|
|
|
235
|
-
|
|
236
257
|
### onError
|
|
237
258
|
|
|
238
259
|
`onError` is a global error handling function used to capture and handle all uncaught errors in the Modern.js server. By customizing the `onError` function, developers can uniformly handle different types of errors, return custom error responses, and implement features such as error logging and error classification.
|
|
@@ -261,241 +282,3 @@ export default defineServerConfig({
|
|
|
261
282
|
},
|
|
262
283
|
});
|
|
263
284
|
```
|
|
264
|
-
|
|
265
|
-
## Legacy API (Deprecated)
|
|
266
|
-
|
|
267
|
-
:::warning
|
|
268
|
-
The legacy API is compatible but no longer recommended. For extending server capabilities, please refer to [Custom Web Server](/guides/advanced-features/web-server.html#custom-web-server). For migration guidelines, see [Migrating to the New Version of Custom Web Server](/guides/advanced-features/web-server.html#migrate-to-the-new-version-of-custom-web-server).
|
|
269
|
-
:::
|
|
270
|
-
|
|
271
|
-
### Enable
|
|
272
|
-
To enable the custom Web Server feature, follow these steps:
|
|
273
|
-
1. Add `@modern-js/plugin-server`、`tsconfig-paths` and `ts-node` to `devDependencies` and install them.
|
|
274
|
-
2. Add `server` to the `include` section of `tsconfig`.
|
|
275
|
-
3. Register the `@modern-js/plugin-server` plugin in `modern.config.ts`.
|
|
276
|
-
4. Create a `server/index.ts` file in the project directory, where you can write custom logic.
|
|
277
|
-
|
|
278
|
-
### Unstable Middleware
|
|
279
|
-
|
|
280
|
-
Modern.js supports adding rendering middleware to the Web Server, allowing custom logic execution before and after processing page routes.
|
|
281
|
-
|
|
282
|
-
```ts title="server/index.ts"
|
|
283
|
-
import {
|
|
284
|
-
UnstableMiddleware,
|
|
285
|
-
UnstableMiddlewareContext,
|
|
286
|
-
} from '@Modern.js/runtime/server';
|
|
287
|
-
|
|
288
|
-
const time: UnstableMiddleware = async (c: UnstableMiddlewareContext, next) => {
|
|
289
|
-
const start = Date.now();
|
|
290
|
-
|
|
291
|
-
await next();
|
|
292
|
-
|
|
293
|
-
const end = Date.now();
|
|
294
|
-
|
|
295
|
-
console.log(`dur=${end - start}`);
|
|
296
|
-
};
|
|
297
|
-
|
|
298
|
-
export const unstableMiddleware: UnstableMiddleware[] = [time];
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
### Hooks
|
|
303
|
-
|
|
304
|
-
:::warning
|
|
305
|
-
We recommend using UnstableMiddleware instead of Hooks.
|
|
306
|
-
:::
|
|
307
|
-
|
|
308
|
-
Modern.js provides Hooks to control specific logic in the Web Server. All page requests will pass through Hooks.
|
|
309
|
-
|
|
310
|
-
Currently, two types of Hooks are available: `AfterMatch` and `AfterRender`. Developers can implement them in `server/index.ts` as follows:
|
|
311
|
-
|
|
312
|
-
```ts
|
|
313
|
-
import type {
|
|
314
|
-
AfterMatchHook,
|
|
315
|
-
AfterRenderHook,
|
|
316
|
-
} from '@modern-js/runtime/server';
|
|
317
|
-
|
|
318
|
-
export const afterMatch: AfterMatchHook = (ctx, next) => {
|
|
319
|
-
next();
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
export const afterRender: AfterRenderHook = (ctx, next) => {
|
|
323
|
-
next();
|
|
324
|
-
};
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
Best practices when using Hooks:
|
|
328
|
-
|
|
329
|
-
1. Perform authorization checks in afterMatch.
|
|
330
|
-
2. Handle Rewrite and Redirect in afterMatch.
|
|
331
|
-
3. Inject HTML content in afterRender.
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
## Migrate to the New Version of Custom Web Server
|
|
336
|
-
|
|
337
|
-
### Migration Background
|
|
338
|
-
|
|
339
|
-
Modern.js Server is continuously evolving to provide more powerful features. We have optimized the definition and usage of middleware and Server plugins.
|
|
340
|
-
While the old custom Web Server approach is still compatible, we strongly recommend migrating according to this guide to fully leverage the advantages of the new version.
|
|
341
|
-
|
|
342
|
-
### Migration Steps
|
|
343
|
-
|
|
344
|
-
1. Upgrade Modern.js version to x.67.5 or above.
|
|
345
|
-
2. Configure middleware or plugins in `server/modern.server.ts` according to the new definition method.
|
|
346
|
-
3. Migrate the custom logic in `server/index.ts` to middleware or plugins, and update your code with reference to the differences between `Context` and `Next`.
|
|
347
|
-
|
|
348
|
-
### Context Differences
|
|
349
|
-
|
|
350
|
-
In the new version, the middleware handler type is Hono's `MiddlewareHandler`, meaning the `Context` type is `Hono Context`. The differences from the old custom Web Server's `Context` are as follows:
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
#### UnstableMiddleware
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
```ts
|
|
357
|
-
type Body = ReadableStream | ArrayBuffer | string | null;
|
|
358
|
-
|
|
359
|
-
type UnstableMiddlewareContext<
|
|
360
|
-
V extends Record<string, unknown> = Record<string, unknown>,
|
|
361
|
-
> = {
|
|
362
|
-
request: Request;
|
|
363
|
-
response: Response;
|
|
364
|
-
get: Get<V>;
|
|
365
|
-
set: Set<V>;
|
|
366
|
-
// Current Matched Routing Information
|
|
367
|
-
route: string;
|
|
368
|
-
header: (name: string, value: string, options?: { append?: boolean }) => void;
|
|
369
|
-
status: (code: number) => void;
|
|
370
|
-
redirect: (location: string, status?: number) => Response;
|
|
371
|
-
body: (data: Body, init?: ResponseInit) => Response;
|
|
372
|
-
html: (
|
|
373
|
-
data: string | Promise<string>,
|
|
374
|
-
init?: ResponseInit,
|
|
375
|
-
) => Response | Promise<Response>;
|
|
376
|
-
};
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
Differences between UnstableMiddleware Context and Hono Context:
|
|
380
|
-
|
|
381
|
-
| UnstableMiddleware | Hono | Description |
|
|
382
|
-
| :----------------------- | :---------------------------- | :------------------------------------------------------------------------ |
|
|
383
|
-
| `c.request` | `c.req.raw` | Refer to [HonoRequest raw](https://hono.dev/docs/api/request#raw) documentation |
|
|
384
|
-
| `c.response` | `c.res` | Refer to [Hono Context res](https://hono.dev/docs/api/context#res) documentation |
|
|
385
|
-
| `c.route` | `c.get('route')` | Get application context information. |
|
|
386
|
-
| `loaderContext.get` | `honoContext.get` | After injecting data using `c.set`, consume in dataLoader: the old version uses `loaderContext.get`, refer to the new version in [Plugin](/guides/advanced-features/web-server.html#plugin) example |
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
#### Middleware
|
|
390
|
-
|
|
391
|
-
```ts
|
|
392
|
-
type MiddlewareContext = {
|
|
393
|
-
response: {
|
|
394
|
-
set: (key: string, value: string) => void;
|
|
395
|
-
status: (code: number) => void;
|
|
396
|
-
getStatus: () => number;
|
|
397
|
-
cookies: {
|
|
398
|
-
set: (key: string, value: string, options?: any) => void;
|
|
399
|
-
clear: () => void;
|
|
400
|
-
};
|
|
401
|
-
raw: (
|
|
402
|
-
body: string,
|
|
403
|
-
{ status, headers }: { status: number; headers: Record<string, any> },
|
|
404
|
-
) => void;
|
|
405
|
-
locals: Record<string, any>;
|
|
406
|
-
};
|
|
407
|
-
request: {
|
|
408
|
-
url: string;
|
|
409
|
-
host: string;
|
|
410
|
-
pathname: string;
|
|
411
|
-
query: Record<string, any>;
|
|
412
|
-
cookie: string;
|
|
413
|
-
cookies: {
|
|
414
|
-
get: (key: string) => string;
|
|
415
|
-
};
|
|
416
|
-
headers: IncomingHttpHeaders;
|
|
417
|
-
};
|
|
418
|
-
source: {
|
|
419
|
-
req: IncomingMessage;
|
|
420
|
-
res: ServerResponse;
|
|
421
|
-
};
|
|
422
|
-
};
|
|
423
|
-
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
Differences between Middleware `Context` and Hono `Context`:
|
|
427
|
-
| UnstableMiddleware | Hono | Description |
|
|
428
|
-
| :----------------------- | :---------------------------- | :--------------------------------------------------------------------------- |
|
|
429
|
-
| `c.request.cookie` | `c.req.cookie()` | Refer to [Hono Cookie Helper](https://hono.dev/docs/helpers/cookie) documentation |
|
|
430
|
-
| `c.request.pathname` | `c.req.path` | Refer to [HonoRequest path](https://hono.dev/docs/api/request#path) documentation |
|
|
431
|
-
| `c.request.url` | - | Hono `c.req.url` provides the full request URL, calculate manually from URL |
|
|
432
|
-
| `c.request.host` | `c.req.header('Host')` | Obtain host through header |
|
|
433
|
-
| `c.request.query` | `c.req.query()` | Refer to [HonoRequest query](https://hono.dev/docs/api/request#query) documentation |
|
|
434
|
-
| `c.request.headers` | `c.req.header()` | Refer to [HonoRequest header](https://hono.dev/docs/api/request#header) documentation |
|
|
435
|
-
| `c.response.set` | `c.res.headers.set` | Example: `c.res.headers.set('custom-header', '1')` |
|
|
436
|
-
| `c.response.status` | `c.status` | Example: `c.status(201)` |
|
|
437
|
-
| `c.response.cookies` | `c.header` | Example: `c.header('Set-Cookie', 'user_id=123')` |
|
|
438
|
-
| `c.response.raw` | `c.res` | Refer to [Hono Context res](https://hono.dev/docs/api/context#res) documentation |
|
|
439
|
-
|
|
440
|
-
#### Hook
|
|
441
|
-
|
|
442
|
-
```ts
|
|
443
|
-
type HookContext = {
|
|
444
|
-
response: {
|
|
445
|
-
set: (key: string, value: string) => void;
|
|
446
|
-
status: (code: number) => void;
|
|
447
|
-
getStatus: () => number;
|
|
448
|
-
cookies: {
|
|
449
|
-
set: (key: string, value: string, options?: any) => void;
|
|
450
|
-
clear: () => void;
|
|
451
|
-
};
|
|
452
|
-
raw: (
|
|
453
|
-
body: string,
|
|
454
|
-
{ status, headers }: { status: number; headers: Record<string, any> },
|
|
455
|
-
) => void;
|
|
456
|
-
};
|
|
457
|
-
request: {
|
|
458
|
-
url: string;
|
|
459
|
-
host: string;
|
|
460
|
-
pathname: string;
|
|
461
|
-
query: Record<string, any>;
|
|
462
|
-
cookie: string;
|
|
463
|
-
cookies: {
|
|
464
|
-
get: (key: string) => string;
|
|
465
|
-
};
|
|
466
|
-
headers: IncomingHttpHeaders;
|
|
467
|
-
};
|
|
468
|
-
};
|
|
469
|
-
|
|
470
|
-
type AfterMatchContext = HookContext & {
|
|
471
|
-
router: {
|
|
472
|
-
redirect: (url: string, status: number) => void;
|
|
473
|
-
rewrite: (entry: string) => void;
|
|
474
|
-
};
|
|
475
|
-
};
|
|
476
|
-
|
|
477
|
-
type AfterRenderContext = {
|
|
478
|
-
template: {
|
|
479
|
-
get: () => string;
|
|
480
|
-
set: (html: string) => void;
|
|
481
|
-
prependHead: (fragment: string) => void;
|
|
482
|
-
appendHead: (fragment: string) => void;
|
|
483
|
-
prependBody: (fragment: string) => void;
|
|
484
|
-
appendBody: (fragment: string) => void;
|
|
485
|
-
};
|
|
486
|
-
};
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
Hook Context is mostly consistent with Middleware Context, so we need to pay extra attention to the additional parts of different Hooks.
|
|
490
|
-
|
|
491
|
-
| UnstableMiddleware | Hono | Description |
|
|
492
|
-
| :----------------------- | :---------------------------- | :------------------------------------ |
|
|
493
|
-
| `router.redirect` | `c.redirect` | Refer to [Hono Context redirect](https://hono.dev/docs/api/context#redirect) documentation |
|
|
494
|
-
| `router.rewrite` | - | No corresponding capability provided at the moment |
|
|
495
|
-
| template API | `c.res` | Refer to [Hono Context res](https://hono.dev/docs/api/context#res) documentation |
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
### Differences in Next API
|
|
499
|
-
|
|
500
|
-
In Middleware and Hooks, the render function executes even without invoking `next`.
|
|
501
|
-
In the new design, subsequent Middleware will only execute if the `next` function is invoked.
|
|
@@ -1,23 +1,60 @@
|
|
|
1
1
|
# Using CSS-in-JS
|
|
2
2
|
|
|
3
|
-
CSS-in-JS is a technique that allows you to write CSS styles
|
|
3
|
+
CSS-in-JS is a technique that allows you to write CSS styles within JS files.
|
|
4
4
|
|
|
5
|
-
Modern.js
|
|
5
|
+
Modern.js supports the commonly used community CSS-in-JS library [styled-components](https://styled-components.com/), which uses JavaScript's new feature [Tagged template](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#tagged_templates) to write component CSS styles.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The Modern.js plugin `@modern-js/plugin-styled-components` provides support for styled-components and adds server-side rendering capability for styled-components. You can use styled-components by installing the `@modern-js/plugin-styled-components` plugin.
|
|
8
|
+
|
|
9
|
+
## Using styled-components in Modern.js
|
|
10
|
+
|
|
11
|
+
First, you need to install the `styled-components` plugin dependency and the `styled-components` library:
|
|
12
|
+
|
|
13
|
+
import { PackageManagerTabs } from '@theme';
|
|
14
|
+
|
|
15
|
+
<PackageManagerTabs
|
|
16
|
+
command={{
|
|
17
|
+
npm: 'npm install @modern-js/plugin-styled-components styled-components -D',
|
|
18
|
+
yarn: 'yarn add @modern-js/plugin-styled-components styled-components -D',
|
|
19
|
+
pnpm: 'pnpm install @modern-js/plugin-styled-components styled-components -D',
|
|
20
|
+
}}
|
|
21
|
+
/>
|
|
22
|
+
|
|
23
|
+
Then configure the `styled-components` plugin in `modern.config.ts`:
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
import { defineConfig } from '@modern-js/app-tools';
|
|
27
|
+
import { styledComponentsPlugin } from '@modern-js/plugin-styled-components';
|
|
28
|
+
|
|
29
|
+
export default defineConfig({
|
|
30
|
+
plugins: [
|
|
31
|
+
styledComponentsPlugin({
|
|
32
|
+
// ...
|
|
33
|
+
displayName: true,
|
|
34
|
+
minify: process.env.NODE_ENV === 'production',
|
|
35
|
+
}),
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The configuration options of the styledComponentsPlugin plugin are the same as those of the [@rsbuild/plugin-styled-components](https://www.npmjs.com/package/@rsbuild/plugin-styled-components) plugin. You can refer to the documentation of [@rsbuild/plugin-styled-components](https://www.npmjs.com/package/@rsbuild/plugin-styled-components) for configuration.
|
|
41
|
+
|
|
42
|
+
## Writing styles with styled-components
|
|
43
|
+
|
|
44
|
+
When you need to write a `div` component with red text inside, you can implement it as follows:
|
|
8
45
|
|
|
9
46
|
```js
|
|
10
|
-
import styled from '@modern-js/
|
|
47
|
+
import styled from '@modern-js/plugin-styled-components/styled';
|
|
11
48
|
|
|
12
49
|
const RedDiv = styled.div`
|
|
13
50
|
color: red;
|
|
14
51
|
`;
|
|
15
52
|
```
|
|
16
53
|
|
|
17
|
-
|
|
54
|
+
When you need to dynamically set component styles based on the component's `props`, for example, when the `primary` attribute of `props` is `true`, the button's color is white, otherwise red, the implementation is as follows:
|
|
18
55
|
|
|
19
56
|
```js
|
|
20
|
-
import styled from '@modern-js/
|
|
57
|
+
import styled from '@modern-js/plugin-styled-components/styled';
|
|
21
58
|
|
|
22
59
|
const Button = styled.button`
|
|
23
60
|
color: ${props => (props.primary ? 'white' : 'red')};
|
|
@@ -25,10 +62,8 @@ const Button = styled.button`
|
|
|
25
62
|
`;
|
|
26
63
|
```
|
|
27
64
|
|
|
28
|
-
For more usage of styled-components, please refer to [styled-components official website](https://styled-components.com/).
|
|
29
|
-
|
|
30
|
-
Modern.js integrates Babel's [babel-plugin-styled-components](https://github.com/styled-components/babel-plugin-styled-components) plugin internally, and you can configure the plugin through [tools.styledComponents](/configure/app/tools/styled-components).
|
|
65
|
+
For more usage of styled-components, please refer to the [styled-components official website](https://styled-components.com/).
|
|
31
66
|
|
|
32
|
-
:::tip
|
|
33
|
-
If you
|
|
67
|
+
:::tip Tip
|
|
68
|
+
If you want to use other CSS-in-JS libraries such as [styled-jsx](https://www.npmjs.com/package/styled-jsx), [Emotion](https://emotion.sh/), etc., you need to install the corresponding dependencies first. Please refer to the official websites of the respective libraries for specific usage.
|
|
34
69
|
:::
|
|
@@ -77,20 +77,6 @@ export default {
|
|
|
77
77
|
};
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
## Custom Class Names
|
|
81
|
-
|
|
82
|
-
Customizing the class names generated by CSS Modules is also a commonly used function, you can use [output.cssModuleLocalIdentName](/configure/app/output/css-modules.html#cssmodulesexportlocalsconvention) to configure it.
|
|
83
|
-
|
|
84
|
-
```ts
|
|
85
|
-
export default {
|
|
86
|
-
output: {
|
|
87
|
-
cssModuleLocalIdentName: '[hash:base64:4]',
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
If you need to customize other configs of CSS Modules, you can set them via [tools.cssLoader](/configure/app/tools/css-loader).
|
|
93
|
-
|
|
94
80
|
## Add Type Declaration
|
|
95
81
|
|
|
96
82
|
When you import CSS Modules in TypeScript code, TypeScript may prompt that the module is missing a type definition:
|
|
@@ -181,9 +167,11 @@ For example, there are two files `src/index.ts` and `src/index.module.scss` unde
|
|
|
181
167
|
import styles from './index.module.scss';
|
|
182
168
|
|
|
183
169
|
export default () => {
|
|
184
|
-
|
|
185
|
-
<div
|
|
186
|
-
|
|
170
|
+
return (
|
|
171
|
+
<div>
|
|
172
|
+
<div className={styles.pageHeader}>Page Header</div>
|
|
173
|
+
</div>
|
|
174
|
+
);
|
|
187
175
|
};
|
|
188
176
|
```
|
|
189
177
|
|
|
@@ -18,14 +18,14 @@ You can also use Stylus in Modern.js by installing the Stylus plugin provided by
|
|
|
18
18
|
|
|
19
19
|
Modern.js has built-in [PostCSS](https://postcss.org/) to transform CSS code.
|
|
20
20
|
|
|
21
|
-
Please refer to [Rsbuild - Using PostCSS](https://rsbuild.rs/guide/
|
|
21
|
+
Please refer to [Rsbuild - Using PostCSS](https://rsbuild.rs/guide/styling/css-usage) for detailed usage.
|
|
22
22
|
|
|
23
23
|
## Using Lightning CSS
|
|
24
24
|
|
|
25
25
|
Modern.js supports using [Lightning CSS](https://lightningcss.dev/) to convert CSS code. This feature can be turned on by configuring [tools.lightningcssLoader](/configure/app/tools/lightningcss-loader).
|
|
26
26
|
|
|
27
|
-
Please refer to [Rsbuild - Using Lightning CSS](https://rsbuild.rs/guide/
|
|
27
|
+
Please refer to [Rsbuild - Using Lightning CSS](https://rsbuild.rs/guide/styling/css-usage#lightning-css) for detailed usage.
|
|
28
28
|
|
|
29
29
|
## Using Uno CSS
|
|
30
30
|
|
|
31
|
-
Please read the [Rsbuild - Using UnoCSS](https://rsbuild.rs/
|
|
31
|
+
Please read the [Rsbuild - Using UnoCSS](https://rsbuild.rs/guide/styling/unocss) for detailed usage.
|