@modern-js/main-doc 2.69.7 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/en/{_meta.json → _nav.json} +5 -1
- package/docs/en/apis/app/commands.mdx +8 -33
- 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 +19 -17
- package/docs/en/components/build-output.mdx +45 -0
- package/docs/en/components/bundler.mdx +1 -1
- 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 +42 -8
- package/docs/en/components/enable-ssg.mdx +49 -0
- package/docs/en/components/entry-scan-logic.mdx +7 -0
- package/docs/en/components/esbuild.mdx +2 -2
- package/docs/en/components/extend-bff-function.mdx +2 -4
- package/docs/en/components/hono.mdx +119 -0
- package/docs/en/components/init-app.mdx +40 -17
- package/docs/en/components/international/custom-instance-code.mdx +16 -0
- package/docs/en/components/international/init-options-desc.mdx +1 -0
- package/docs/en/components/international/install-command.mdx +23 -0
- package/docs/en/components/international/instance-code.mdx +26 -0
- package/docs/en/components/international/introduce.mdx +2 -0
- package/docs/en/components/module-federation.mdx +4 -4
- 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-config-deploy.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/builder-plugins.mdx +1 -2
- package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
- package/docs/en/configure/app/dev/server.mdx +211 -0
- package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
- package/docs/en/configure/app/experiments/source-build.mdx +0 -1
- package/docs/en/configure/app/html/app-icon.mdx +1 -23
- package/docs/en/configure/app/output/assets-retry.mdx +1 -1
- package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
- package/docs/en/configure/app/output/filename.mdx +2 -4
- 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/output/temp-dir.mdx +3 -3
- package/docs/en/configure/app/performance/build-cache.mdx +1 -5
- package/docs/en/configure/app/performance/profile.mdx +1 -1
- package/docs/en/configure/app/plugins.mdx +1 -3
- 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/runtime/router.mdx +0 -4
- package/docs/en/configure/app/security/check-syntax.mdx +1 -1
- package/docs/en/configure/app/security/sri.mdx +0 -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/alias.mdx +1 -1
- package/docs/en/configure/app/source/decorators.mdx +4 -2
- package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
- package/docs/en/configure/app/source/entries.mdx +0 -2
- package/docs/en/configure/app/source/include.mdx +2 -14
- 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 +22 -256
- 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 +5 -27
- package/docs/en/guides/_meta.json +5 -1
- package/docs/en/guides/advanced-features/_meta.json +6 -0
- package/docs/en/guides/advanced-features/bff/_meta.json +9 -1
- package/docs/en/guides/advanced-features/bff/cross-project.mdx +2 -8
- package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
- package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -15
- package/docs/en/guides/advanced-features/bff/function.mdx +6 -10
- package/docs/en/guides/advanced-features/bff/operators.mdx +628 -0
- package/docs/en/guides/advanced-features/bff/sdk.mdx +20 -12
- package/docs/en/guides/advanced-features/bff/upload.mdx +3 -1
- 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 +428 -0
- package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
- package/docs/en/guides/advanced-features/international/quick-start.mdx +126 -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 +8 -22
- package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +19 -12
- package/docs/en/guides/advanced-features/rspack-start.mdx +3 -23
- package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
- package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +121 -36
- 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 +65 -77
- package/docs/en/guides/basic-features/data/data-fetch.mdx +19 -18
- 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 +6 -17
- 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 +399 -0
- package/docs/en/guides/basic-features/render/ssg.mdx +26 -67
- package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -10
- 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/svg-assets.mdx +0 -4
- package/docs/en/guides/basic-features/static-assets.mdx +2 -2
- package/docs/en/guides/concept/builder.mdx +27 -12
- 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 +4 -71
- package/docs/en/guides/get-started/tech-stack.mdx +7 -27
- 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/guides/upgrade/_meta.json +1 -0
- package/docs/en/guides/upgrade/config.mdx +936 -0
- package/docs/en/guides/upgrade/entry.mdx +463 -0
- package/docs/en/guides/upgrade/other.mdx +83 -0
- package/docs/en/guides/upgrade/overview.mdx +33 -0
- package/docs/en/guides/upgrade/tailwindcss.mdx +130 -0
- package/docs/en/guides/upgrade/web-server.mdx +91 -0
- package/docs/en/plugin/_meta.json +5 -0
- package/docs/en/plugin/cli-plugins/_meta.json +1 -1
- package/docs/en/plugin/cli-plugins/api.mdx +17 -68
- package/docs/en/plugin/cli-plugins/life-cycle.mdx +0 -4
- package/docs/en/plugin/introduction.mdx +44 -44
- 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 +69 -62
- package/docs/en/plugin/runtime-plugins/_meta.json +1 -1
- package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
- package/docs/en/plugin/server-plugins/_meta.json +1 -0
- package/docs/en/plugin/server-plugins/api.mdx +210 -1
- package/docs/en/plugin/server-plugins/life-cycle.mdx +41 -1
- 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 +8 -33
- 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-operator-code.mdx +5 -0
- package/docs/zh/components/bff-upload.mdx +8 -7
- package/docs/zh/components/build-output.mdx +45 -0
- package/docs/zh/components/bundler.mdx +1 -1
- 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 +41 -8
- package/docs/zh/components/enable-ssg.mdx +49 -0
- package/docs/zh/components/entry-scan-logic.mdx +7 -0
- package/docs/zh/components/esbuild.mdx +2 -2
- package/docs/zh/components/extend-bff-function.mdx +2 -4
- package/docs/zh/components/hono.mdx +119 -0
- package/docs/zh/components/init-app.mdx +40 -18
- package/docs/zh/components/international/custom-instance-code.mdx +16 -0
- package/docs/zh/components/international/init-options-desc.mdx +1 -0
- package/docs/zh/components/international/install-command.mdx +23 -0
- package/docs/zh/components/international/instance-code.mdx +26 -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/components/upgrade-config-deploy.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/builder-plugins.mdx +1 -2
- package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
- package/docs/zh/configure/app/dev/server.mdx +211 -0
- package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
- package/docs/zh/configure/app/experiments/source-build.mdx +0 -1
- package/docs/zh/configure/app/html/app-icon.mdx +1 -23
- package/docs/zh/configure/app/output/assets-retry.mdx +1 -1
- package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
- package/docs/zh/configure/app/output/filename.mdx +2 -4
- 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/output/temp-dir.mdx +3 -3
- package/docs/zh/configure/app/performance/build-cache.mdx +1 -5
- package/docs/zh/configure/app/performance/profile.mdx +1 -1
- package/docs/zh/configure/app/plugins.mdx +1 -2
- 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/runtime/router.mdx +0 -4
- package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
- package/docs/zh/configure/app/security/sri.mdx +0 -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/alias.mdx +1 -1
- package/docs/zh/configure/app/source/decorators.mdx +4 -4
- package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
- package/docs/zh/configure/app/source/entries.mdx +0 -2
- package/docs/zh/configure/app/source/include.mdx +2 -16
- 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 +6 -28
- 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/_meta.json +9 -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 +2 -16
- package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
- package/docs/zh/guides/advanced-features/bff/operators.mdx +628 -0
- package/docs/zh/guides/advanced-features/bff/sdk.mdx +23 -16
- package/docs/zh/guides/advanced-features/bff/upload.mdx +3 -1
- 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 +432 -0
- package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
- package/docs/zh/guides/advanced-features/international/quick-start.mdx +126 -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 +8 -22
- package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +19 -12
- package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
- package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +120 -37
- 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 +55 -59
- package/docs/zh/guides/basic-features/data/data-fetch.mdx +14 -16
- 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 +4 -15
- 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 +399 -0
- package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
- package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -9
- 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/svg-assets.mdx +0 -4
- 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 +26 -11
- 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 -28
- 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 -31
- package/docs/zh/guides/troubleshooting/builder.mdx +4 -85
- 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 +940 -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/_meta.json +5 -0
- package/docs/zh/plugin/cli-plugins/_meta.json +1 -1
- package/docs/zh/plugin/cli-plugins/api.mdx +19 -70
- package/docs/zh/plugin/cli-plugins/life-cycle.mdx +0 -4
- package/docs/zh/plugin/introduction.mdx +40 -40
- 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 +43 -51
- package/docs/zh/plugin/runtime-plugins/_meta.json +1 -1
- package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
- package/docs/zh/plugin/server-plugins/_meta.json +1 -0
- package/docs/zh/plugin/server-plugins/api.mdx +210 -1
- package/docs/zh/plugin/server-plugins/life-cycle.mdx +41 -1
- 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/FrameworkCode/index.tsx +605 -0
- 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/bundle-analyze.mdx +0 -24
- 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/babel.mdx +0 -225
- 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 -253
- package/docs/en/configure/app/tools/webpack.mdx +0 -309
- 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/cli-plugins/migration.mdx +0 -98
- 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/plugin/runtime-plugins/migration.mdx +0 -101
- 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/default-mwa-generate.mdx +0 -4
- 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/bundle-analyze.mdx +0 -24
- 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/babel.mdx +0 -224
- 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 -257
- package/docs/zh/configure/app/tools/webpack.mdx +0 -309
- 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/cli-plugins/migration.mdx +0 -98
- 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/plugin/runtime-plugins/migration.mdx +0 -101
- 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/en/components/{router-legacy-tip.mdx → international/platform-support.mdx} +0 -0
- /package/docs/{zh/components/reduck-migration.mdx → en/components/new-entry-tooltip.mdx} +0 -0
- /package/docs/{zh/components/router-legacy-tip.mdx → en/components/upgrade-browserslist.mdx} +0 -0
|
@@ -56,11 +56,11 @@ export interface Monitors {
|
|
|
56
56
|
warn(message: string, ...args: any[]): void;
|
|
57
57
|
debug(message: string, ...args: any[]): void;
|
|
58
58
|
info(message: string, ...args: any[]): void;
|
|
59
|
-
trace(message: string
|
|
59
|
+
trace(message: string, ...args: any[]): void;
|
|
60
60
|
|
|
61
61
|
// Metrics Event
|
|
62
62
|
timing(name: string, dur: number, ...args: any[]): void;
|
|
63
|
-
counter(name: string, ...args: any[]): void
|
|
63
|
+
counter(name: string, ...args: any[]): void;
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -71,31 +71,104 @@ Modern.js comes with a built-in default Monitor, where different events trigger
|
|
|
71
71
|
- [Log Event](/guides/advanced-features/server-monitor/logger)
|
|
72
72
|
- [Metrics Event](/guides/advanced-features/server-monitor/metrics)
|
|
73
73
|
|
|
74
|
-
|
|
75
74
|
## Register Monitors
|
|
76
75
|
|
|
77
|
-
Developers can register their own Monitors using the `push` API, but this can only be done in [server middleware](/
|
|
76
|
+
Developers can register their own Monitors using the `push` API, but this can only be done in [server middleware](/guides/advanced-features/web-server#unstable-middleware) or [server plugins](/plugin/server-plugins/api). Registration is not available in Data Loaders, components, or init functions.
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
```ts title="server/modern.server.ts"
|
|
79
|
+
import {
|
|
80
|
+
defineServerConfig,
|
|
81
|
+
type MiddlewareHandler,
|
|
82
|
+
} from '@modern-js/server-runtime';
|
|
83
|
+
import type { MonitorEvent } from '@modern-js/types';
|
|
82
84
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
const injectMonitorMiddleware: MiddlewareHandler = async (c, next) => {
|
|
86
|
+
const monitors = c.get('monitors');
|
|
87
|
+
const myMonitor = (event: MonitorEvent) => {
|
|
88
|
+
if (event.type === 'log') {
|
|
89
|
+
// Handle log events
|
|
90
|
+
console.log(`[${event.payload.level}] ${event.payload.message}`);
|
|
91
|
+
} else if (event.type === 'timing') {
|
|
92
|
+
// Handle timing events
|
|
93
|
+
console.log(`Timing: ${event.payload.name} = ${event.payload.dur}ms`);
|
|
94
|
+
} else if (event.type === 'counter') {
|
|
95
|
+
// Handle counter events
|
|
96
|
+
console.log(`Counter: ${event.payload.name}`);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
monitors.push(myMonitor);
|
|
100
|
+
await next();
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export default defineServerConfig({
|
|
104
|
+
middlewares: [
|
|
105
|
+
{
|
|
106
|
+
name: 'inject-monitor',
|
|
107
|
+
handler: injectMonitorMiddleware,
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Register Monitor in server plugins:
|
|
114
|
+
|
|
115
|
+
```ts title="server/plugins/my-monitor-plugin.ts"
|
|
116
|
+
import type { ServerPlugin } from '@modern-js/server-runtime';
|
|
117
|
+
import type { MonitorEvent } from '@modern-js/types';
|
|
118
|
+
|
|
119
|
+
const myMonitorPlugin = (): ServerPlugin => ({
|
|
120
|
+
name: '@my-org/my-monitor-plugin',
|
|
121
|
+
setup(api) {
|
|
122
|
+
api.onPrepare(() => {
|
|
123
|
+
const { middlewares } = api.getServerContext();
|
|
124
|
+
|
|
125
|
+
// Define monitor, ensuring it's only created once
|
|
126
|
+
const myMonitor = (event: MonitorEvent) => {
|
|
88
127
|
if (event.type === 'log') {
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
|
|
128
|
+
// Handle log events
|
|
129
|
+
console.log(`[${event.payload.level}] ${event.payload.message}`);
|
|
130
|
+
} else if (event.type === 'timing') {
|
|
131
|
+
// Handle timing events
|
|
132
|
+
console.log(
|
|
133
|
+
`Timing: ${event.payload.name} = ${event.payload.dur}ms`,
|
|
134
|
+
);
|
|
135
|
+
} else if (event.type === 'counter') {
|
|
136
|
+
// Handle counter events
|
|
137
|
+
console.log(`Counter: ${event.payload.name}`);
|
|
92
138
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// Use a flag to ensure monitor is only registered once
|
|
142
|
+
let monitorRegistered = false;
|
|
143
|
+
|
|
144
|
+
middlewares.push({
|
|
145
|
+
name: 'inject-monitor',
|
|
146
|
+
handler: async (c, next) => {
|
|
147
|
+
const monitors = c.get('monitors');
|
|
148
|
+
// Only register monitor on the first request
|
|
149
|
+
if (!monitorRegistered) {
|
|
150
|
+
monitors.push(myMonitor);
|
|
151
|
+
monitorRegistered = true;
|
|
152
|
+
}
|
|
153
|
+
await next();
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
export default myMonitorPlugin;
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Then configure the plugin in `server/modern.server.ts`:
|
|
164
|
+
|
|
165
|
+
```ts title="server/modern.server.ts"
|
|
166
|
+
import { defineServerConfig } from '@modern-js/server-runtime';
|
|
167
|
+
import myMonitorPlugin from './plugins/my-monitor-plugin';
|
|
97
168
|
|
|
98
|
-
export
|
|
169
|
+
export default defineServerConfig({
|
|
170
|
+
plugins: [myMonitorPlugin()],
|
|
171
|
+
});
|
|
99
172
|
```
|
|
100
173
|
|
|
101
174
|
## Use Monitors
|
|
@@ -126,32 +199,44 @@ const loader = async ({ context }: LoaderFunctionArgs) => {
|
|
|
126
199
|
When invoking Monitors in components, you need to determine whether the current runtime environment is Node.js:
|
|
127
200
|
|
|
128
201
|
```tsx title="routes/page.tsx"
|
|
129
|
-
import {
|
|
202
|
+
import { use } from 'react';
|
|
203
|
+
import { RuntimeContext, getMonitors } from '@modern-js/runtime';
|
|
130
204
|
const Page = () => {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
205
|
+
const context = use(RuntimeContext);
|
|
206
|
+
if (process.env.MODERN_TARGET === 'node') {
|
|
207
|
+
const monitors = getMonitors();
|
|
208
|
+
monitors.info('Page rendered');
|
|
209
|
+
}
|
|
210
|
+
return <div>Hello World</div>;
|
|
211
|
+
};
|
|
138
212
|
export default Page;
|
|
139
213
|
```
|
|
140
214
|
|
|
141
215
|
In middleware, we can also invoke Monitors, but the approach differs from runtime code as it requires accessing them through `context`:
|
|
142
216
|
|
|
143
|
-
```ts title="server/
|
|
144
|
-
import {
|
|
217
|
+
```ts title="server/modern.server.ts"
|
|
218
|
+
import {
|
|
219
|
+
defineServerConfig,
|
|
220
|
+
type MiddlewareHandler,
|
|
221
|
+
} from '@modern-js/server-runtime';
|
|
145
222
|
|
|
146
|
-
const
|
|
223
|
+
export const handler: MiddlewareHandler = async (c, next) => {
|
|
224
|
+
const monitors = c.get('monitors');
|
|
147
225
|
const start = Date.now();
|
|
226
|
+
|
|
148
227
|
await next();
|
|
228
|
+
|
|
149
229
|
const end = Date.now();
|
|
150
|
-
|
|
151
|
-
monitors.
|
|
230
|
+
// Report timing
|
|
231
|
+
monitors.timing('request_timing', end - start);
|
|
152
232
|
};
|
|
153
233
|
|
|
154
|
-
export
|
|
234
|
+
export default defineServerConfig({
|
|
235
|
+
middlewares: [
|
|
236
|
+
{
|
|
237
|
+
name: 'request-timing',
|
|
238
|
+
handler,
|
|
239
|
+
},
|
|
240
|
+
],
|
|
241
|
+
});
|
|
155
242
|
```
|
|
156
|
-
|
|
157
|
-
|
|
@@ -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.
|