@modern-js/main-doc 2.8.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +10 -0
- package/README.md +15 -18
- package/docs/en/apis/app/hooks/api/framework/lambda.mdx +57 -0
- package/docs/en/apis/app/hooks/api/functions/api.mdx +81 -0
- package/docs/en/apis/app/hooks/src/routes.mdx +90 -0
- package/docs/en/apis/app/hooks/src/server.mdx +34 -0
- package/docs/en/apis/app/runtime/router/router.mdx +262 -0
- package/docs/en/apis/app/runtime/web-server/hook.mdx +133 -0
- package/docs/en/apis/app/runtime/web-server/middleware.mdx +134 -0
- package/docs/en/components/enable-bff.mdx +31 -0
- package/docs/en/components/init-app.mdx +43 -0
- package/docs/en/components/init-rspack-app.mdx +7 -0
- package/docs/en/components/prerequisites.mdx +18 -0
- package/docs/en/configure/app/dev/asset-prefix.mdx +13 -0
- package/docs/en/configure/app/dev/before-start-url.mdx +13 -0
- package/docs/en/configure/app/dev/hmr.mdx +13 -0
- package/docs/en/configure/app/dev/host.mdx +13 -0
- package/docs/en/configure/app/dev/https.mdx +13 -0
- package/docs/en/configure/app/dev/port.mdx +13 -0
- package/docs/en/configure/app/dev/progress-bar.mdx +13 -0
- package/docs/en/configure/app/dev/start-url.mdx +13 -0
- package/docs/en/configure/app/experiments/lazy-compilation.mdx +13 -0
- package/docs/en/configure/app/html/app-icon.mdx +13 -0
- package/docs/en/configure/app/html/crossorigin.mdx +13 -0
- package/docs/en/configure/app/html/disable-html-folder.mdx +13 -0
- package/docs/en/configure/app/html/favicon-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/favicon.mdx +13 -0
- package/docs/en/configure/app/html/inject-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/inject.mdx +13 -0
- package/docs/en/configure/app/html/meta-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/meta.mdx +13 -0
- package/docs/en/configure/app/html/mount-id.mdx +13 -0
- package/docs/en/configure/app/html/tags-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/tags.mdx +13 -0
- package/docs/en/configure/app/html/template-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/template-parameters-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/template-parameters.mdx +13 -0
- package/docs/en/configure/app/html/template.mdx +13 -0
- package/docs/en/configure/app/html/title-by-entries.mdx +13 -0
- package/docs/en/configure/app/html/title.mdx +13 -0
- package/docs/en/configure/app/output/asset-prefix.mdx +13 -0
- package/docs/en/configure/app/output/assets-retry.mdx +13 -0
- package/docs/en/configure/app/output/charset.mdx +13 -0
- package/docs/en/configure/app/output/clean-dist-path.mdx +13 -0
- package/docs/en/configure/app/output/convert-to-rem.mdx +13 -0
- package/docs/en/configure/app/output/copy.mdx +13 -0
- package/docs/en/configure/app/output/css-module-local-ident-name.mdx +13 -0
- package/docs/en/configure/app/output/data-uri-limit.mdx +13 -0
- package/docs/en/configure/app/output/disable-css-extract.mdx +13 -0
- package/docs/en/configure/app/output/disable-css-module-extension.mdx +13 -0
- package/docs/en/configure/app/output/disable-filename-hash.mdx +13 -0
- package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +13 -0
- package/docs/en/configure/app/output/disable-minimize.mdx +13 -0
- package/docs/en/configure/app/output/disable-source-map.mdx +13 -0
- package/docs/en/configure/app/output/disable-ts-checker.mdx +13 -0
- package/docs/en/configure/app/output/dist-path.mdx +13 -0
- package/docs/en/configure/app/output/enable-asset-fallback.mdx +13 -0
- package/docs/en/configure/app/output/enable-asset-manifest.mdx +13 -0
- package/docs/en/configure/app/output/enable-css-module-tsdeclaration.mdx +13 -0
- package/docs/en/configure/app/output/enable-inline-scripts.mdx +13 -0
- package/docs/en/configure/app/output/enable-inline-styles.mdx +13 -0
- package/docs/en/configure/app/output/enable-latest-decorators.mdx +13 -0
- package/docs/en/configure/app/output/externals.mdx +13 -0
- package/docs/en/configure/app/output/filename.mdx +13 -0
- package/docs/en/configure/app/output/legal-comments.mdx +13 -0
- package/docs/en/configure/app/output/override-browserslist.mdx +13 -0
- package/docs/en/configure/app/output/polyfill.mdx +13 -0
- package/docs/en/configure/app/output/ssg.mdx +196 -0
- package/docs/en/configure/app/output/svg-default-export.mdx +13 -0
- package/docs/en/configure/app/performance/build-cache.mdx +13 -0
- package/docs/en/configure/app/performance/bundle-analyze.mdx +13 -0
- package/docs/en/configure/app/performance/chunk-split.mdx +13 -0
- package/docs/en/configure/app/performance/print-file-size.mdx +13 -0
- package/docs/en/configure/app/performance/profile.mdx +13 -0
- package/docs/en/configure/app/performance/remove-console.mdx +13 -0
- package/docs/en/configure/app/performance/remove-moment-locale.mdx +13 -0
- package/docs/en/configure/app/security/check-syntax.mdx +13 -0
- package/docs/en/configure/app/security/sri.mdx +13 -0
- package/docs/en/configure/app/server/public-routes.mdx +26 -0
- package/docs/en/configure/app/server/ssr.mdx +38 -0
- package/docs/en/configure/app/source/alias.mdx +13 -0
- package/docs/en/configure/app/source/compile-js-data-uri.mdx +13 -0
- package/docs/en/configure/app/source/define.mdx +13 -0
- package/docs/en/configure/app/source/design-system.mdx +1175 -0
- package/docs/en/configure/app/source/disable-entry-dirs.mdx +39 -0
- package/docs/en/configure/app/source/entries.mdx +123 -0
- package/docs/en/configure/app/source/exclude.mdx +13 -0
- package/docs/en/configure/app/source/global-vars.mdx +13 -0
- package/docs/en/configure/app/source/include.mdx +13 -0
- package/docs/en/configure/app/source/module-scopes.mdx +13 -0
- package/docs/en/configure/app/source/pre-entry.mdx +13 -0
- package/docs/en/configure/app/source/resolve-extension-prefix.mdx +13 -0
- package/docs/en/configure/app/source/resolve-main-fields.mdx +13 -0
- package/docs/en/configure/app/tools/autoprefixer.mdx +13 -0
- package/docs/en/configure/app/tools/babel.mdx +13 -0
- package/docs/en/configure/app/tools/css-extract.mdx +13 -0
- package/docs/en/configure/app/tools/css-loader.mdx +13 -0
- package/docs/en/configure/app/tools/dev-server.mdx +13 -0
- package/docs/en/configure/app/tools/html-plugin.mdx +13 -0
- package/docs/en/configure/app/tools/inspector.mdx +13 -0
- package/docs/en/configure/app/tools/less.mdx +13 -0
- package/docs/en/configure/app/tools/minify-css.mdx +13 -0
- package/docs/en/configure/app/tools/postcss.mdx +13 -0
- package/docs/en/configure/app/tools/pug.mdx +13 -0
- package/docs/en/configure/app/tools/rspack.mdx +13 -0
- package/docs/en/configure/app/tools/sass.mdx +13 -0
- package/docs/en/configure/app/tools/style-loader.mdx +13 -0
- package/docs/en/configure/app/tools/styled-components.mdx +13 -0
- package/docs/en/configure/app/tools/terser.mdx +13 -0
- package/docs/en/configure/app/tools/ts-checker.mdx +13 -0
- package/docs/en/configure/app/tools/ts-loader.mdx +13 -0
- package/docs/en/configure/app/tools/webpack-chain.mdx +13 -0
- package/docs/en/configure/app/tools/webpack.mdx +13 -0
- package/docs/en/guides/advanced-features/code-split.mdx +80 -0
- package/docs/en/guides/advanced-features/compatibility.mdx +78 -0
- package/docs/en/guides/advanced-features/eslint.mdx +148 -0
- package/docs/en/guides/advanced-features/rspack-start.mdx +61 -0
- package/docs/en/guides/advanced-features/ssg.mdx +116 -0
- package/docs/en/guides/advanced-features/ssr.mdx +518 -0
- package/docs/en/guides/advanced-features/testing.mdx +46 -0
- package/docs/en/guides/advanced-features/web-server.mdx +124 -0
- package/docs/en/guides/basic-features/data-fetch.mdx +404 -0
- package/docs/en/guides/basic-features/env-vars.mdx +174 -0
- package/docs/en/guides/basic-features/html.mdx +247 -0
- package/docs/en/guides/basic-features/proxy.mdx +61 -0
- package/docs/en/guides/get-started/introduction.mdx +50 -0
- package/docs/en/guides/get-started/quick-start.mdx +162 -0
- package/docs/en/guides/topic-detail/framework-plugin/extend.mdx +164 -0
- package/docs/en/guides/topic-detail/framework-plugin/hook-list.mdx +827 -0
- package/docs/en/guides/topic-detail/framework-plugin/hook.mdx +188 -0
- package/docs/en/guides/topic-detail/framework-plugin/implement.mdx +246 -0
- package/docs/en/guides/topic-detail/framework-plugin/relationship.mdx +119 -0
- package/docs/en/guides/topic-detail/generator/codesmith/api/npm.mdx +48 -0
- package/docs/en/guides/topic-detail/generator/codesmith/develop.mdx +53 -0
- package/docs/en/guides/topic-detail/generator/config/app.mdx +82 -0
- package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +55 -0
- package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +55 -0
- package/docs/en/guides/topic-detail/generator/plugin/api/npm/install.mdx +18 -0
- package/docs/en/guides/topic-detail/generator/plugin/develop.mdx +125 -0
- package/docs/en/guides/topic-detail/generator/project.mdx +118 -0
- package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +282 -0
- package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +57 -0
- package/docs/en/guides/topic-detail/model/computed-state.mdx +153 -0
- package/docs/en/guides/troubleshooting/cli.mdx +63 -0
- package/docs/en/tutorials/first-app/c03-css.mdx +323 -0
- package/docs/zh/apis/monorepo/commands/new.mdx +39 -0
- package/docs/zh/components/default-mwa-generate.mdx +5 -0
- package/docs/zh/components/init-app.mdx +44 -0
- package/docs/zh/components/init-rspack-app.mdx +7 -0
- package/docs/zh/components/prerequisites.mdx +18 -0
- package/docs/zh/configure/app/dev/asset-prefix.mdx +13 -0
- package/docs/zh/configure/app/dev/before-start-url.mdx +13 -0
- package/docs/zh/configure/app/dev/hmr.mdx +13 -0
- package/docs/zh/configure/app/dev/host.mdx +13 -0
- package/docs/zh/configure/app/dev/https.mdx +13 -0
- package/docs/zh/configure/app/dev/port.mdx +13 -0
- package/docs/zh/configure/app/dev/progress-bar.mdx +13 -0
- package/docs/zh/configure/app/dev/start-url.mdx +13 -0
- package/docs/zh/configure/app/experiments/lazy-compilation.mdx +13 -0
- package/docs/zh/configure/app/html/app-icon.mdx +13 -0
- package/docs/zh/configure/app/html/crossorigin.mdx +13 -0
- package/docs/zh/configure/app/html/disable-html-folder.mdx +13 -0
- package/docs/zh/configure/app/html/favicon-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/favicon.mdx +13 -0
- package/docs/zh/configure/app/html/inject-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/inject.mdx +13 -0
- package/docs/zh/configure/app/html/meta-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/meta.mdx +13 -0
- package/docs/zh/configure/app/html/mount-id.mdx +13 -0
- package/docs/zh/configure/app/html/tags-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/tags.mdx +13 -0
- package/docs/zh/configure/app/html/template-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/template-parameters.mdx +13 -0
- package/docs/zh/configure/app/html/template.mdx +13 -0
- package/docs/zh/configure/app/html/title-by-entries.mdx +13 -0
- package/docs/zh/configure/app/html/title.mdx +13 -0
- package/docs/zh/configure/app/output/asset-prefix.mdx +13 -0
- package/docs/zh/configure/app/output/assets-retry.mdx +13 -0
- package/docs/zh/configure/app/output/charset.mdx +13 -0
- package/docs/zh/configure/app/output/clean-dist-path.mdx +13 -0
- package/docs/zh/configure/app/output/convert-to-rem.mdx +13 -0
- package/docs/zh/configure/app/output/copy.mdx +13 -0
- package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +13 -0
- package/docs/zh/configure/app/output/data-uri-limit.mdx +13 -0
- package/docs/zh/configure/app/output/disable-css-extract.mdx +13 -0
- package/docs/zh/configure/app/output/disable-css-module-extension.mdx +13 -0
- package/docs/zh/configure/app/output/disable-filename-hash.mdx +13 -0
- package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +13 -0
- package/docs/zh/configure/app/output/disable-minimize.mdx +13 -0
- package/docs/zh/configure/app/output/disable-source-map.mdx +13 -0
- package/docs/zh/configure/app/output/disable-ts-checker.mdx +13 -0
- package/docs/zh/configure/app/output/dist-path.mdx +13 -0
- package/docs/zh/configure/app/output/enable-asset-fallback.mdx +13 -0
- package/docs/zh/configure/app/output/enable-asset-manifest.mdx +13 -0
- package/docs/zh/configure/app/output/enable-css-module-tsdeclaration.mdx +13 -0
- package/docs/zh/configure/app/output/enable-inline-scripts.mdx +13 -0
- package/docs/zh/configure/app/output/enable-inline-styles.mdx +13 -0
- package/docs/zh/configure/app/output/enable-latest-decorators.mdx +13 -0
- package/docs/zh/configure/app/output/externals.mdx +13 -0
- package/docs/zh/configure/app/output/filename.mdx +13 -0
- package/docs/zh/configure/app/output/legal-comments.mdx +13 -0
- package/docs/zh/configure/app/output/override-browserslist.mdx +13 -0
- package/docs/zh/configure/app/output/polyfill.mdx +13 -0
- package/docs/zh/configure/app/output/svg-default-export.mdx +13 -0
- package/docs/zh/configure/app/performance/build-cache.mdx +13 -0
- package/docs/zh/configure/app/performance/bundle-analyze.mdx +13 -0
- package/docs/zh/configure/app/performance/chunk-split.mdx +13 -0
- package/docs/zh/configure/app/performance/print-file-size.mdx +13 -0
- package/docs/zh/configure/app/performance/profile.mdx +13 -0
- package/docs/zh/configure/app/performance/remove-console.mdx +13 -0
- package/docs/zh/configure/app/performance/remove-moment-locale.mdx +13 -0
- package/docs/zh/configure/app/security/check-syntax.mdx +13 -0
- package/docs/zh/configure/app/security/sri.mdx +13 -0
- package/docs/zh/configure/app/source/alias.mdx +13 -0
- package/docs/zh/configure/app/source/compile-js-data-uri.mdx +13 -0
- package/docs/zh/configure/app/source/define.mdx +13 -0
- package/docs/zh/configure/app/source/exclude.mdx +13 -0
- package/docs/zh/configure/app/source/global-vars.mdx +13 -0
- package/docs/zh/configure/app/source/include.mdx +13 -0
- package/docs/zh/configure/app/source/module-scopes.mdx +13 -0
- package/docs/zh/configure/app/source/pre-entry.mdx +13 -0
- package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +13 -0
- package/docs/zh/configure/app/source/resolve-main-fields.mdx +13 -0
- package/docs/zh/configure/app/tools/autoprefixer.mdx +13 -0
- package/docs/zh/configure/app/tools/babel.mdx +13 -0
- package/docs/zh/configure/app/tools/css-extract.mdx +13 -0
- package/docs/zh/configure/app/tools/css-loader.mdx +13 -0
- package/docs/zh/configure/app/tools/dev-server.mdx +13 -0
- package/docs/zh/configure/app/tools/html-plugin.mdx +13 -0
- package/docs/zh/configure/app/tools/inspector.mdx +13 -0
- package/docs/zh/configure/app/tools/less.mdx +13 -0
- package/docs/zh/configure/app/tools/minify-css.mdx +13 -0
- package/docs/zh/configure/app/tools/postcss.mdx +13 -0
- package/docs/zh/configure/app/tools/pug.mdx +13 -0
- package/docs/zh/configure/app/tools/rspack.mdx +13 -0
- package/docs/zh/configure/app/tools/sass.mdx +13 -0
- package/docs/zh/configure/app/tools/style-loader.mdx +13 -0
- package/docs/zh/configure/app/tools/styled-components.mdx +13 -0
- package/docs/zh/configure/app/tools/terser.mdx +13 -0
- package/docs/zh/configure/app/tools/ts-checker.mdx +13 -0
- package/docs/zh/configure/app/tools/ts-loader.mdx +13 -0
- package/docs/zh/configure/app/tools/webpack-chain.mdx +13 -0
- package/docs/zh/configure/app/tools/webpack.mdx +13 -0
- package/docs/zh/guides/advanced-features/rspack-start.mdx +62 -0
- package/docs/zh/guides/advanced-features/ssr.mdx +507 -0
- package/docs/zh/guides/basic-features/mock.mdx +99 -0
- package/docs/zh/guides/get-started/introduction.mdx +47 -0
- package/docs/zh/guides/topic-detail/changesets/changelog.mdx +238 -0
- package/docs/zh/guides/topic-detail/changesets/commit.mdx +271 -0
- package/docs/zh/guides/topic-detail/changesets/release-note.mdx +259 -0
- package/docs/zh/guides/topic-detail/generator/plugin/develop.mdx +125 -0
- package/docs/zh/guides/topic-detail/monorepo/create-sub-project.mdx +67 -0
- package/docs/zh/guides/topic-detail/monorepo/sub-project-interface.mdx +179 -0
- package/docs/zh/index.md +4 -0
- package/en/configure/app/dev/asset-prefix.mdx +1 -1
- package/en/configure/app/dev/before-start-url.mdx +1 -1
- package/en/configure/app/dev/hmr.mdx +1 -1
- package/en/configure/app/dev/host.mdx +1 -1
- package/en/configure/app/dev/https.mdx +1 -1
- package/en/configure/app/dev/port.mdx +1 -1
- package/en/configure/app/dev/progress-bar.mdx +1 -1
- package/en/configure/app/dev/start-url.mdx +1 -1
- package/en/configure/app/experiments/lazy-compilation.mdx +1 -1
- package/en/configure/app/html/app-icon.mdx +1 -1
- package/en/configure/app/html/crossorigin.mdx +1 -1
- package/en/configure/app/html/disable-html-folder.mdx +1 -1
- package/en/configure/app/html/favicon-by-entries.mdx +1 -1
- package/en/configure/app/html/favicon.mdx +1 -1
- package/en/configure/app/html/inject-by-entries.mdx +1 -1
- package/en/configure/app/html/inject.mdx +1 -1
- package/en/configure/app/html/meta-by-entries.mdx +1 -1
- package/en/configure/app/html/meta.mdx +1 -1
- package/en/configure/app/html/mount-id.mdx +1 -1
- package/en/configure/app/html/tags-by-entries.mdx +1 -1
- package/en/configure/app/html/tags.mdx +1 -1
- package/en/configure/app/html/template-by-entries.mdx +1 -1
- package/en/configure/app/html/template-parameters-by-entries.mdx +1 -1
- package/en/configure/app/html/template-parameters.mdx +1 -1
- package/en/configure/app/html/template.mdx +1 -1
- package/en/configure/app/html/title-by-entries.mdx +1 -1
- package/en/configure/app/html/title.mdx +1 -1
- package/en/configure/app/output/asset-prefix.mdx +1 -1
- package/en/configure/app/output/assets-retry.mdx +1 -1
- package/en/configure/app/output/charset.mdx +1 -1
- package/en/configure/app/output/clean-dist-path.mdx +1 -1
- package/en/configure/app/output/convert-to-rem.mdx +1 -1
- package/en/configure/app/output/copy.mdx +1 -1
- package/en/configure/app/output/css-module-local-ident-name.mdx +1 -1
- package/en/configure/app/output/data-uri-limit.mdx +1 -1
- package/en/configure/app/output/disable-css-extract.mdx +1 -1
- package/en/configure/app/output/disable-css-module-extension.mdx +1 -1
- package/en/configure/app/output/disable-filename-hash.mdx +1 -1
- package/en/configure/app/output/disable-inline-runtime-chunk.mdx +1 -1
- package/en/configure/app/output/disable-minimize.mdx +1 -1
- package/en/configure/app/output/disable-source-map.mdx +1 -1
- package/en/configure/app/output/disable-ts-checker.mdx +1 -1
- package/en/configure/app/output/dist-path.mdx +1 -1
- package/en/configure/app/output/enable-asset-fallback.mdx +1 -1
- package/en/configure/app/output/enable-asset-manifest.mdx +1 -1
- package/en/configure/app/output/enable-css-module-tsdeclaration.mdx +1 -1
- package/en/configure/app/output/enable-inline-scripts.mdx +1 -1
- package/en/configure/app/output/enable-inline-styles.mdx +1 -1
- package/en/configure/app/output/enable-latest-decorators.mdx +1 -1
- package/en/configure/app/output/externals.mdx +1 -1
- package/en/configure/app/output/filename.mdx +1 -1
- package/en/configure/app/output/legal-comments.mdx +1 -1
- package/en/configure/app/output/override-browserslist.mdx +1 -1
- package/en/configure/app/output/polyfill.mdx +1 -1
- package/en/configure/app/output/svg-default-export.mdx +1 -1
- package/en/configure/app/performance/build-cache.mdx +1 -1
- package/en/configure/app/performance/bundle-analyze.mdx +1 -1
- package/en/configure/app/performance/chunk-split.mdx +1 -1
- package/en/configure/app/performance/print-file-size.mdx +1 -1
- package/en/configure/app/performance/profile.mdx +1 -1
- package/en/configure/app/performance/remove-console.mdx +1 -1
- package/en/configure/app/performance/remove-moment-locale.mdx +1 -1
- package/en/configure/app/security/check-syntax.mdx +1 -1
- package/en/configure/app/security/sri.mdx +1 -1
- package/en/configure/app/source/alias.mdx +1 -1
- package/en/configure/app/source/compile-js-data-uri.mdx +1 -1
- package/en/configure/app/source/define.mdx +1 -1
- package/en/configure/app/source/exclude.mdx +1 -1
- package/en/configure/app/source/global-vars.mdx +1 -1
- package/en/configure/app/source/include.mdx +1 -1
- package/en/configure/app/source/module-scopes.mdx +1 -1
- package/en/configure/app/source/pre-entry.mdx +1 -1
- package/en/configure/app/source/resolve-extension-prefix.mdx +1 -1
- package/en/configure/app/source/resolve-main-fields.mdx +1 -1
- package/en/configure/app/tools/autoprefixer.mdx +1 -1
- package/en/configure/app/tools/babel.mdx +1 -1
- package/en/configure/app/tools/css-extract.mdx +1 -1
- package/en/configure/app/tools/css-loader.mdx +1 -1
- package/en/configure/app/tools/dev-server.mdx +1 -1
- package/en/configure/app/tools/html-plugin.mdx +1 -1
- package/en/configure/app/tools/inspector.mdx +1 -1
- package/en/configure/app/tools/less.mdx +1 -1
- package/en/configure/app/tools/minify-css.mdx +1 -1
- package/en/configure/app/tools/postcss.mdx +1 -1
- package/en/configure/app/tools/pug.mdx +1 -1
- package/en/configure/app/tools/rspack.mdx +1 -1
- package/en/configure/app/tools/sass.mdx +1 -1
- package/en/configure/app/tools/style-loader.mdx +1 -1
- package/en/configure/app/tools/styled-components.mdx +1 -1
- package/en/configure/app/tools/terser.mdx +1 -1
- package/en/configure/app/tools/ts-checker.mdx +1 -1
- package/en/configure/app/tools/ts-loader.mdx +1 -1
- package/en/configure/app/tools/webpack-chain.mdx +1 -1
- package/en/configure/app/tools/webpack.mdx +1 -1
- package/modern.config.ts +157 -0
- package/package.json +14 -5
- package/src/components/ContentCard/index.module.scss +61 -0
- package/src/components/ContentCard/index.tsx +25 -0
- package/src/components/FeatureLayout/index.module.css +8 -0
- package/src/components/FeatureLayout/index.tsx +8 -0
- package/src/components/Footer/index.tsx +131 -0
- package/src/components/Footer/styles.module.scss +49 -0
- package/src/components/ListCard/index.module.css +58 -0
- package/src/components/ListCard/index.tsx +26 -0
- package/src/components/SecondaryTitle/index.module.css +14 -0
- package/src/components/SecondaryTitle/index.tsx +15 -0
- package/src/global.d.ts +28 -0
- package/src/i18n/enUS.ts +50 -0
- package/src/i18n/index.ts +18 -0
- package/src/i18n/zhCN.ts +50 -0
- package/src/index.ts +9 -0
- package/src/pages/index.module.scss +238 -0
- package/src/pages/index.tsx +162 -0
- package/static/img/favicon.ico +0 -0
- package/static/img/features/ai.svg +1 -0
- package/static/img/features/api.svg +1 -0
- package/static/img/features/app.svg +1 -0
- package/static/img/features/blocks.svg +1 -0
- package/static/img/features/browser.svg +12 -0
- package/static/img/features/cloud.svg +1 -0
- package/static/img/features/coding-backend.svg +1 -0
- package/static/img/features/compiler.svg +1 -0
- package/static/img/features/css-file.svg +1 -0
- package/static/img/features/customize.svg +1 -0
- package/static/img/features/developer.svg +1 -0
- package/static/img/features/dynamic.svg +1 -0
- package/static/img/features/editor.svg +1 -0
- package/static/img/features/framework-config.svg +1 -0
- package/static/img/features/framework.svg +1 -0
- package/static/img/features/frameworks.svg +1 -0
- package/static/img/features/html.svg +1 -0
- package/static/img/features/icon2.svg +1 -0
- package/static/img/features/javascript.svg +1 -0
- package/static/img/features/monorepo.svg +1 -0
- package/static/img/features/product.svg +1 -0
- package/static/img/features/server-network.svg +1 -0
- package/static/img/features/serverless.svg +1 -0
- package/static/img/features/test.svg +1 -0
- package/static/img/features/trinity.svg +1 -0
- package/static/img/features/unity.svg +1 -0
- package/static/img/features/url.svg +1 -0
- package/static/img/features/visual.svg +1 -0
- package/static/img/features/web-server.svg +1 -0
- package/zh/configure/app/dev/asset-prefix.mdx +1 -1
- package/zh/configure/app/dev/before-start-url.mdx +1 -1
- package/zh/configure/app/dev/hmr.mdx +1 -1
- package/zh/configure/app/dev/host.mdx +1 -1
- package/zh/configure/app/dev/https.mdx +1 -1
- package/zh/configure/app/dev/port.mdx +1 -1
- package/zh/configure/app/dev/progress-bar.mdx +1 -1
- package/zh/configure/app/dev/start-url.mdx +1 -1
- package/zh/configure/app/experiments/lazy-compilation.mdx +1 -1
- package/zh/configure/app/html/app-icon.mdx +1 -1
- package/zh/configure/app/html/crossorigin.mdx +1 -1
- package/zh/configure/app/html/disable-html-folder.mdx +1 -1
- package/zh/configure/app/html/favicon-by-entries.mdx +1 -1
- package/zh/configure/app/html/favicon.mdx +1 -1
- package/zh/configure/app/html/inject-by-entries.mdx +1 -1
- package/zh/configure/app/html/inject.mdx +1 -1
- package/zh/configure/app/html/meta-by-entries.mdx +1 -1
- package/zh/configure/app/html/meta.mdx +1 -1
- package/zh/configure/app/html/mount-id.mdx +1 -1
- package/zh/configure/app/html/tags-by-entries.mdx +1 -1
- package/zh/configure/app/html/tags.mdx +1 -1
- package/zh/configure/app/html/template-by-entries.mdx +1 -1
- package/zh/configure/app/html/template-parameters-by-entries.mdx +1 -1
- package/zh/configure/app/html/template-parameters.mdx +1 -1
- package/zh/configure/app/html/template.mdx +1 -1
- package/zh/configure/app/html/title-by-entries.mdx +1 -1
- package/zh/configure/app/html/title.mdx +1 -1
- package/zh/configure/app/output/asset-prefix.mdx +1 -1
- package/zh/configure/app/output/assets-retry.mdx +1 -1
- package/zh/configure/app/output/charset.mdx +1 -1
- package/zh/configure/app/output/clean-dist-path.mdx +1 -1
- package/zh/configure/app/output/convert-to-rem.mdx +1 -1
- package/zh/configure/app/output/copy.mdx +1 -1
- package/zh/configure/app/output/css-module-local-ident-name.mdx +1 -1
- package/zh/configure/app/output/data-uri-limit.mdx +1 -1
- package/zh/configure/app/output/disable-css-extract.mdx +1 -1
- package/zh/configure/app/output/disable-css-module-extension.mdx +1 -1
- package/zh/configure/app/output/disable-filename-hash.mdx +1 -1
- package/zh/configure/app/output/disable-inline-runtime-chunk.mdx +1 -1
- package/zh/configure/app/output/disable-minimize.mdx +1 -1
- package/zh/configure/app/output/disable-source-map.mdx +1 -1
- package/zh/configure/app/output/disable-ts-checker.mdx +1 -1
- package/zh/configure/app/output/dist-path.mdx +1 -1
- package/zh/configure/app/output/enable-asset-fallback.mdx +1 -1
- package/zh/configure/app/output/enable-asset-manifest.mdx +1 -1
- package/zh/configure/app/output/enable-css-module-tsdeclaration.mdx +1 -1
- package/zh/configure/app/output/enable-inline-scripts.mdx +1 -1
- package/zh/configure/app/output/enable-inline-styles.mdx +1 -1
- package/zh/configure/app/output/enable-latest-decorators.mdx +1 -1
- package/zh/configure/app/output/externals.mdx +1 -1
- package/zh/configure/app/output/filename.mdx +1 -1
- package/zh/configure/app/output/legal-comments.mdx +1 -1
- package/zh/configure/app/output/override-browserslist.mdx +1 -1
- package/zh/configure/app/output/polyfill.mdx +1 -1
- package/zh/configure/app/output/svg-default-export.mdx +1 -1
- package/zh/configure/app/performance/build-cache.mdx +1 -1
- package/zh/configure/app/performance/bundle-analyze.mdx +1 -1
- package/zh/configure/app/performance/chunk-split.mdx +1 -1
- package/zh/configure/app/performance/print-file-size.mdx +1 -1
- package/zh/configure/app/performance/profile.mdx +1 -1
- package/zh/configure/app/performance/remove-console.mdx +1 -1
- package/zh/configure/app/performance/remove-moment-locale.mdx +1 -1
- package/zh/configure/app/security/check-syntax.mdx +1 -1
- package/zh/configure/app/security/sri.mdx +1 -1
- package/zh/configure/app/source/alias.mdx +1 -1
- package/zh/configure/app/source/compile-js-data-uri.mdx +1 -1
- package/zh/configure/app/source/define.mdx +1 -1
- package/zh/configure/app/source/exclude.mdx +1 -1
- package/zh/configure/app/source/global-vars.mdx +1 -1
- package/zh/configure/app/source/include.mdx +1 -1
- package/zh/configure/app/source/module-scopes.mdx +1 -1
- package/zh/configure/app/source/pre-entry.mdx +1 -1
- package/zh/configure/app/source/resolve-extension-prefix.mdx +1 -1
- package/zh/configure/app/source/resolve-main-fields.mdx +1 -1
- package/zh/configure/app/tools/autoprefixer.mdx +1 -1
- package/zh/configure/app/tools/babel.mdx +1 -1
- package/zh/configure/app/tools/css-extract.mdx +1 -1
- package/zh/configure/app/tools/css-loader.mdx +1 -1
- package/zh/configure/app/tools/dev-server.mdx +1 -1
- package/zh/configure/app/tools/html-plugin.mdx +1 -1
- package/zh/configure/app/tools/inspector.mdx +1 -1
- package/zh/configure/app/tools/less.mdx +1 -1
- package/zh/configure/app/tools/minify-css.mdx +1 -1
- package/zh/configure/app/tools/postcss.mdx +1 -1
- package/zh/configure/app/tools/pug.mdx +1 -1
- package/zh/configure/app/tools/rspack.mdx +1 -1
- package/zh/configure/app/tools/sass.mdx +1 -1
- package/zh/configure/app/tools/style-loader.mdx +1 -1
- package/zh/configure/app/tools/styled-components.mdx +1 -1
- package/zh/configure/app/tools/terser.mdx +1 -1
- package/zh/configure/app/tools/ts-checker.mdx +1 -1
- package/zh/configure/app/tools/ts-loader.mdx +1 -1
- package/zh/configure/app/tools/webpack-chain.mdx +1 -1
- package/zh/configure/app/tools/webpack.mdx +1 -1
- package/.eslintrc.js +0 -12
- package/.turbo/turbo-build.log +0 -4
- package/en/apis/app/hooks/api/framework/lambda.mdx +0 -57
- package/en/apis/app/hooks/api/functions/api.mdx +0 -81
- package/en/apis/app/hooks/src/routes.mdx +0 -90
- package/en/apis/app/hooks/src/server.mdx +0 -34
- package/en/apis/app/runtime/router/router.mdx +0 -262
- package/en/apis/app/runtime/web-server/hook.mdx +0 -133
- package/en/apis/app/runtime/web-server/middleware.mdx +0 -134
- package/en/components/enable-bff.mdx +0 -31
- package/en/components/init-app.mdx +0 -43
- package/en/components/init-rspack-app.mdx +0 -7
- package/en/components/prerequisites.mdx +0 -20
- package/en/configure/app/output/ssg.mdx +0 -196
- package/en/configure/app/server/public-routes.mdx +0 -26
- package/en/configure/app/server/ssr.mdx +0 -38
- package/en/configure/app/source/design-system.mdx +0 -1175
- package/en/configure/app/source/disable-entry-dirs.mdx +0 -39
- package/en/configure/app/source/entries.mdx +0 -123
- package/en/guides/advanced-features/code-split.mdx +0 -80
- package/en/guides/advanced-features/compatibility.mdx +0 -78
- package/en/guides/advanced-features/eslint.mdx +0 -148
- package/en/guides/advanced-features/rspack-start.mdx +0 -65
- package/en/guides/advanced-features/ssg.mdx +0 -116
- package/en/guides/advanced-features/ssr.mdx +0 -513
- package/en/guides/advanced-features/testing.mdx +0 -46
- package/en/guides/advanced-features/web-server.mdx +0 -124
- package/en/guides/basic-features/data-fetch.mdx +0 -404
- package/en/guides/basic-features/env-vars.mdx +0 -174
- package/en/guides/basic-features/html.mdx +0 -247
- package/en/guides/basic-features/proxy.mdx +0 -61
- package/en/guides/get-started/introduction.mdx +0 -34
- package/en/guides/get-started/quick-start.mdx +0 -162
- package/en/guides/topic-detail/framework-plugin/extend.mdx +0 -164
- package/en/guides/topic-detail/framework-plugin/hook-list.mdx +0 -829
- package/en/guides/topic-detail/framework-plugin/hook.mdx +0 -188
- package/en/guides/topic-detail/framework-plugin/implement.mdx +0 -246
- package/en/guides/topic-detail/framework-plugin/relationship.mdx +0 -119
- package/en/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -48
- package/en/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
- package/en/guides/topic-detail/generator/config/app.mdx +0 -82
- package/en/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -55
- package/en/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -55
- package/en/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -18
- package/en/guides/topic-detail/generator/plugin/develop.mdx +0 -125
- package/en/guides/topic-detail/generator/project.mdx +0 -118
- package/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -282
- package/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -57
- package/en/guides/topic-detail/model/computed-state.mdx +0 -153
- package/en/guides/troubleshooting/cli.mdx +0 -63
- package/en/tutorials/first-app/c03-css.mdx +0 -323
- package/scripts/config.ts +0 -96
- package/scripts/summary.en.json +0 -1
- package/scripts/summary.zh.json +0 -1
- package/scripts/sync.ts +0 -57
- package/tsconfig.json +0 -7
- package/zh/apis/monorepo/commands/new.mdx +0 -39
- package/zh/components/default-mwa-generate.mdx +0 -5
- package/zh/components/init-app.mdx +0 -44
- package/zh/components/init-rspack-app.mdx +0 -7
- package/zh/components/prerequisites.mdx +0 -20
- package/zh/guides/advanced-features/rspack-start.mdx +0 -65
- package/zh/guides/advanced-features/ssr.mdx +0 -501
- package/zh/guides/basic-features/mock.mdx +0 -99
- package/zh/guides/get-started/introduction.mdx +0 -31
- package/zh/guides/topic-detail/changesets/changelog.mdx +0 -238
- package/zh/guides/topic-detail/changesets/commit.mdx +0 -271
- package/zh/guides/topic-detail/changesets/release-note.mdx +0 -259
- package/zh/guides/topic-detail/generator/plugin/develop.mdx +0 -125
- package/zh/guides/topic-detail/monorepo/create-sub-project.mdx +0 -67
- package/zh/guides/topic-detail/monorepo/sub-project-interface.mdx +0 -179
- package/zh/index.md +0 -4
- /package/{en → docs/en}/apis/app/commands.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/api/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/api/framework/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/api/functions/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/api/functions/app.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/api/functions/common.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/api/test.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/html.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/icon.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/mock.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/public.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/storybook.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/config/upload.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/modern-config.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/server/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/server/index_.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/server/test.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/shared.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/src/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/hooks/src/app.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/src/index_.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/src/pages.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/src/stories.mdx +0 -0
- /package/{en → docs/en}/apis/app/hooks/src/test.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/app/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/app/define-config.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/bff/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/bff/hook.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/bff/use-context.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/core/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/core/bootstrap.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/core/create-app.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/core/use-loader.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/core/use-module-apps.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/core/use-runtime-context.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/Provider.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/auto-actions.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/connect.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/create-app.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/create-store.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/handle-effect.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/model_.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/use-local-model.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/use-model.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/use-static-model.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/model/use-store.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/router/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/ssr/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/ssr/no-ssr.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/ssr/pre-render.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/testing/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/testing/act.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/testing/cleanup.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/testing/render.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/testing/renderApp.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/utility/_category_.json +0 -0
- /package/{en → docs/en}/apis/app/runtime/utility/css-in-js.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/utility/head.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/utility/loadable.mdx +0 -0
- /package/{en → docs/en}/apis/app/runtime/web-server/_category_.json +0 -0
- /package/{en → docs/en}/components/debug-app.mdx +0 -0
- /package/{en → docs/en}/components/enable-micro-frontend.mdx +0 -0
- /package/{en → docs/en}/components/global-proxy-config.mdx +0 -0
- /package/{en → docs/en}/components/global-proxy.mdx +0 -0
- /package/{en → docs/en}/components/micro-master-manifest-config.mdx +0 -0
- /package/{en → docs/en}/components/micro-runtime-config.mdx +0 -0
- /package/{en → docs/en}/components/reduck-migration.mdx +0 -0
- /package/{en → docs/en}/components/reduck-tip.mdx +0 -0
- /package/{en → docs/en}/components/router-legacy-tip.mdx +0 -0
- /package/{en → docs/en}/configure/app/auto-load-plugin.mdx +0 -0
- /package/{en → docs/en}/configure/app/bff/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/bff/enable-handle-web.mdx +0 -0
- /package/{en → docs/en}/configure/app/bff/prefix.mdx +0 -0
- /package/{en → docs/en}/configure/app/bff/proxy.mdx +0 -0
- /package/{en → docs/en}/configure/app/builder-plugins.mdx +0 -0
- /package/{en → docs/en}/configure/app/deploy/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/deploy/microFrontend.mdx +0 -0
- /package/{en → docs/en}/configure/app/dev/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/dev/proxy.mdx +0 -0
- /package/{en → docs/en}/configure/app/experiments/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/html/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/output/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/output/disable-node-polyfill.mdx +0 -0
- /package/{en → docs/en}/configure/app/performance/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/plugins.mdx +0 -0
- /package/{en → docs/en}/configure/app/runtime/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/runtime/intro.mdx +0 -0
- /package/{en → docs/en}/configure/app/runtime/master-app.mdx +0 -0
- /package/{en → docs/en}/configure/app/runtime/router.mdx +0 -0
- /package/{en → docs/en}/configure/app/runtime/state.mdx +0 -0
- /package/{en → docs/en}/configure/app/security/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/server/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/server/base-url.mdx +0 -0
- /package/{en → docs/en}/configure/app/server/enable-framework-ext.mdx +0 -0
- /package/{en → docs/en}/configure/app/server/port.mdx +0 -0
- /package/{en → docs/en}/configure/app/server/routes.mdx +0 -0
- /package/{en → docs/en}/configure/app/server/ssr-by-entries.mdx +0 -0
- /package/{en → docs/en}/configure/app/source/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/source/config-dir.mdx +0 -0
- /package/{en → docs/en}/configure/app/source/disable-default-entries.mdx +0 -0
- /package/{en → docs/en}/configure/app/source/enable-async-entry.mdx +0 -0
- /package/{en → docs/en}/configure/app/source/entries-dir.mdx +0 -0
- /package/{en → docs/en}/configure/app/testing/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/testing/transformer.mdx +0 -0
- /package/{en → docs/en}/configure/app/tools/_category_.json +0 -0
- /package/{en → docs/en}/configure/app/tools/esbuild.mdx +0 -0
- /package/{en → docs/en}/configure/app/tools/jest.mdx +0 -0
- /package/{en → docs/en}/configure/app/tools/swc.mdx +0 -0
- /package/{en → docs/en}/configure/app/tools/tailwindcss.mdx +0 -0
- /package/{en → docs/en}/configure/app/usage.mdx +0 -0
- /package/{en → docs/en}/guides/advanced-features/_category_.json +0 -0
- /package/{en → docs/en}/guides/advanced-features/bff/_category_.json +0 -0
- /package/{en → docs/en}/guides/advanced-features/bff/bff-proxy.mdx +0 -0
- /package/{en → docs/en}/guides/advanced-features/bff/frameworks.mdx +0 -0
- /package/{en → docs/en}/guides/advanced-features/bff/function.mdx +0 -0
- /package/{en → docs/en}/guides/advanced-features/bff/index.mdx +0 -0
- /package/{en → docs/en}/guides/advanced-features/bff/type.mdx +0 -0
- /package/{en → docs/en}/guides/advanced-features/low-level.mdx +0 -0
- /package/{en → docs/en}/guides/basic-features/_category_.json +0 -0
- /package/{en → docs/en}/guides/basic-features/alias.mdx +0 -0
- /package/{en → docs/en}/guides/basic-features/css.mdx +0 -0
- /package/{en → docs/en}/guides/basic-features/mock.mdx +0 -0
- /package/{en → docs/en}/guides/basic-features/routes.mdx +0 -0
- /package/{en → docs/en}/guides/concept/_category_.json +0 -0
- /package/{en → docs/en}/guides/concept/builder.mdx +0 -0
- /package/{en → docs/en}/guides/concept/entries.mdx +0 -0
- /package/{en → docs/en}/guides/get-started/_category_.json +0 -0
- /package/{en → docs/en}/guides/get-started/upgrade.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/framework-plugin/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/framework-plugin/introduction.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/framework-plugin/lifecycle.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/framework-plugin/plugin-api.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/app.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/git.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/api/json.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/introduce.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/codesmith/structure.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/config/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/config/common.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/config/module.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/config/monorepo.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/abstract.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/generator/plugin/use.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/micro-frontend/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/micro-frontend/c02-development.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/_category_.json +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/auto-actions.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/define-model.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/faq.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/manage-effects.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/model-communicate.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/performance.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/quick-start.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/redux-integration.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/test-model.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/typescript-best-practice.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/use-model.mdx +0 -0
- /package/{en → docs/en}/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -0
- /package/{en → docs/en}/guides/troubleshooting/_category_.json +0 -0
- /package/{en → docs/en}/index.md +0 -0
- /package/{en → docs/en}/tutorials/first-app/_category_.json +0 -0
- /package/{en → docs/en}/tutorials/first-app/c01-start.mdx +0 -0
- /package/{en → docs/en}/tutorials/first-app/c02-component.mdx +0 -0
- /package/{en → docs/en}/tutorials/first-app/c04-routes.mdx +0 -0
- /package/{en → docs/en}/tutorials/first-app/c05-loader.mdx +0 -0
- /package/{en → docs/en}/tutorials/first-app/c06-model.mdx +0 -0
- /package/{en → docs/en}/tutorials/first-app/c07-container.mdx +0 -0
- /package/{en → docs/en}/tutorials/first-app/c08-entries.mdx +0 -0
- /package/{en → docs/en}/tutorials/foundations/_category_.json +0 -0
- /package/{en → docs/en}/tutorials/foundations/introduction.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/commands.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/framework/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/framework/lambda.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/functions/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/functions/api.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/functions/app.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/functions/common.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/api/test.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/html.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/icon.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/mock.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/public.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/storybook.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/config/upload.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/modern-config.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/server/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/server/index_.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/server/test.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/shared.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/app.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/index_.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/pages.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/routes.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/server.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/stories.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/hooks/src/test.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/app/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/app/define-config.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/bff/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/bff/hook.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/bff/use-context.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/core/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/core/bootstrap.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/core/create-app.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/core/use-loader.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/core/use-module-apps.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/core/use-runtime-context.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/Provider.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/auto-actions.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/connect.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/create-app.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/create-store.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/handle-effect.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/model_.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/use-local-model.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/use-model.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/use-static-model.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/model/use-store.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/router/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/router/router.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/ssr/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/ssr/no-ssr.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/ssr/pre-render.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/testing/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/testing/act.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/testing/cleanup.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/testing/render.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/testing/renderApp.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/utility/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/utility/css-in-js.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/utility/head.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/utility/loadable.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/web-server/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/web-server/hook.mdx +0 -0
- /package/{zh → docs/zh}/apis/app/runtime/web-server/middleware.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/bump.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/change.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/clear.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/deploy.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/gen-release-note.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/index.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/lint.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/pre.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/release.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/commands/upgrade.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/_category_.json +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/apps.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/code-workspace.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/examples.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/features.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/index.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/packages.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/pnpm-workspace.mdx +0 -0
- /package/{zh → docs/zh}/apis/monorepo/hooks/pnpmfile.mdx +0 -0
- /package/{zh → docs/zh}/blog/index.md +0 -0
- /package/{zh → docs/zh}/community/index.mdx +0 -0
- /package/{zh → docs/zh}/components/custom-router-micro-frontend.mdx +0 -0
- /package/{zh → docs/zh}/components/debug-app.mdx +0 -0
- /package/{zh → docs/zh}/components/deploy.mdx +0 -0
- /package/{zh → docs/zh}/components/enable-bff.mdx +0 -0
- /package/{zh → docs/zh}/components/enable-micro-frontend.mdx +0 -0
- /package/{zh → docs/zh}/components/global-proxy-config.mdx +0 -0
- /package/{zh → docs/zh}/components/global-proxy.mdx +0 -0
- /package/{zh → docs/zh}/components/micro-master-manifest-config.mdx +0 -0
- /package/{zh → docs/zh}/components/micro-runtime-config.mdx +0 -0
- /package/{zh → docs/zh}/components/reduck-migration.mdx +0 -0
- /package/{zh → docs/zh}/components/reduck-tip.mdx +0 -0
- /package/{zh → docs/zh}/components/release-note.mdx +0 -0
- /package/{zh → docs/zh}/components/router-legacy-tip.mdx +0 -0
- /package/{zh → docs/zh}/components/self-route-example.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/auto-load-plugin.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/bff/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/bff/enable-handle-web.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/bff/prefix.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/bff/proxy.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/builder-plugins.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/deploy/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/deploy/microFrontend.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/dev/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/dev/proxy.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/experiments/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/html/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/output/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/output/disable-node-polyfill.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/output/ssg.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/performance/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/plugins.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/runtime/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/runtime/intro.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/runtime/master-app.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/runtime/router.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/runtime/state.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/security/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/server/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/server/base-url.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/server/enable-framework-ext.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/server/port.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/server/public-routes.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/server/routes.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/server/ssr-by-entries.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/server/ssr.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/source/config-dir.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/design-system.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/disable-default-entries.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/disable-entry-dirs.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/enable-async-entry.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/entries-dir.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/source/entries.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/testing/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/testing/transformer.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/tools/_category_.json +0 -0
- /package/{zh → docs/zh}/configure/app/tools/esbuild.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/tools/jest.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/tools/swc.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/tools/tailwindcss.mdx +0 -0
- /package/{zh → docs/zh}/configure/app/usage.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/bff/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/bff/bff-proxy.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/bff/frameworks.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/bff/function.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/bff/index.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/bff/type.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/code-split.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/compatibility.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/eslint.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/low-level.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/ssg.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/testing.mdx +0 -0
- /package/{zh → docs/zh}/guides/advanced-features/web-server.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/basic-features/alias.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/css.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/data-fetch.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/env-vars.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/html.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/proxy.mdx +0 -0
- /package/{zh → docs/zh}/guides/basic-features/routes.mdx +0 -0
- /package/{zh → docs/zh}/guides/concept/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/concept/builder.mdx +0 -0
- /package/{zh → docs/zh}/guides/concept/entries.mdx +0 -0
- /package/{zh → docs/zh}/guides/get-started/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/get-started/quick-start.mdx +0 -0
- /package/{zh → docs/zh}/guides/get-started/upgrade.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/add.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/config.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/github.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/introduce.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/release-pre.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/changesets/release.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/extend.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/hook-list.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/hook.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/implement.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/introduction.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/lifecycle.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/plugin-api.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/framework-plugin/relationship.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/app.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/git.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/json.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/develop.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/introduce.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/codesmith/structure.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/config/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/config/app.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/config/common.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/config/module.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/config/monorepo.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/abstract.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/plugin/use.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/generator/project.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/micro-frontend/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/micro-frontend/c02-development.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/auto-actions.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/computed-state.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/define-model.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/faq.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/manage-effects.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/model-communicate.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/performance.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/quick-start.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/redux-integration.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/test-model.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/typescript-best-practice.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/use-model.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/monorepo/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/monorepo/intro.mdx +0 -0
- /package/{zh → docs/zh}/guides/topic-detail/monorepo/publish.mdx +0 -0
- /package/{zh → docs/zh}/guides/troubleshooting/_category_.json +0 -0
- /package/{zh → docs/zh}/guides/troubleshooting/cli.mdx +0 -0
- /package/{zh → docs/zh}/guides/troubleshooting/dependencies.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/_category_.json +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c01-start.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c02-component.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c03-css.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c04-routes.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c05-loader.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c06-model.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c07-container.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/first-app/c08-entries.mdx +0 -0
- /package/{zh → docs/zh}/tutorials/foundations/_category_.json +0 -0
- /package/{zh → docs/zh}/tutorials/foundations/introduction.mdx +0 -0
@@ -1,513 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Server-side rendering
|
3
|
-
sidebar_position: 3
|
4
|
-
---
|
5
|
-
# Server-side rendering
|
6
|
-
|
7
|
-
In Modern.js, SSR also works out of the box. Developers do not need to write complex server level logic for SSR, nor do they need to care about the operation and maintenance of SSR, or create services. Modern.js have a comprehensive SSR degradation strategy to ensure that pages can run safely.
|
8
|
-
|
9
|
-
Enabling SSR is very easy, just set ['server.ssr'](/configure/app/server/ssr) to `true`:
|
10
|
-
|
11
|
-
```json
|
12
|
-
{
|
13
|
-
"server": {
|
14
|
-
"ssr": true
|
15
|
-
}
|
16
|
-
}
|
17
|
-
```
|
18
|
-
|
19
|
-
## SSR Data Fetch
|
20
|
-
|
21
|
-
Modern.js provides Data Loader, which is convenient for developers to fetch data under SSR and CSR. Each routing module, such as `layout.tsx` and `page.tsx`, can define its own Data Loader:
|
22
|
-
|
23
|
-
```ts title="src/routes/page.tsx"
|
24
|
-
export const loader = () => {
|
25
|
-
return {
|
26
|
-
message: 'Hello World',
|
27
|
-
};
|
28
|
-
};
|
29
|
-
```
|
30
|
-
|
31
|
-
in the component, the data returned by the `loader` function can be get data through the Hooks API:
|
32
|
-
|
33
|
-
```tsx
|
34
|
-
export default () => {
|
35
|
-
const data = useLoaderData();
|
36
|
-
return <div>{data.message}</div>;
|
37
|
-
};
|
38
|
-
```
|
39
|
-
|
40
|
-
Modern.js break the traditional SSR development model and provide users with a user-friendly SSR development experience.
|
41
|
-
|
42
|
-
And it provides elegant degradation processing. Once the SSR request fails, it will automatically downgrade and restart the request on the browser side.
|
43
|
-
|
44
|
-
However, developers still need to pay attention to the fallback of data, such as `null` values or data returns that do not as expect. Avoid React rendering errors or messy rendering results when SSR.
|
45
|
-
|
46
|
-
:::info
|
47
|
-
1. When you request the page on client-side page transitions, Modern.js sends an API request to the server, which runs Data Loader function.
|
48
|
-
|
49
|
-
2. When using Data Loader, data fetching happens before rendering, Modern.js still supports fetching data when the component is rendered. See [Data Fetch](/guides/basic-features/data-fetch).
|
50
|
-
:::
|
51
|
-
|
52
|
-
## Keep Rendering Consistent
|
53
|
-
|
54
|
-
In some businesses, it is usually necessary to display different UI displays according to the current operating container environment characteristics, such as [UA](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) information.
|
55
|
-
|
56
|
-
If the processing is not careful enough, the rendering results may do not meet the expectations at this time.
|
57
|
-
|
58
|
-
Here is an example to show the problem when SSR and CSR rendering are inconsistent, add the following code to the component:
|
59
|
-
|
60
|
-
```tsx
|
61
|
-
{
|
62
|
-
typeof window !== 'undefined' ? <div>browser content</div> : null;
|
63
|
-
}
|
64
|
-
```
|
65
|
-
|
66
|
-
After starting the app, visit the page and will find that the browser console throws a warning message:
|
67
|
-
|
68
|
-
```sh
|
69
|
-
Warning: Expected server HTML to contain a matching <div> in <div>.
|
70
|
-
```
|
71
|
-
|
72
|
-
This is caused by the inconsistency between the rendering result and the SSR rendering result when React executes the hydrate logic on the client side. Although the page performs normally, in complex applications, it is likely to cause problems such as DOM hierarchy confusion and style confusion.
|
73
|
-
|
74
|
-
:::info
|
75
|
-
For hydrate logic, please refer to [here](https://reactjs.org/docs/react-dom.html#hydrate).
|
76
|
-
|
77
|
-
:::
|
78
|
-
|
79
|
-
Applications need to maintain the consistency of SSR and CSR rendering results. If there are inconsistencies, it means that this part of the content does not need to be rendered in SSR.
|
80
|
-
|
81
|
-
Modern.js provide [`<NoSSR>`](/apis/app/runtime/core/use-runtime-context) for such content that does not need to be rendered in SSR:
|
82
|
-
|
83
|
-
```ts
|
84
|
-
import { NoSSR } from '@modern-js/runtime/ssr';
|
85
|
-
```
|
86
|
-
|
87
|
-
Outside of elements that do not require SSR, wrap with a `NoSSR` component:
|
88
|
-
|
89
|
-
```tsx
|
90
|
-
<NoSSR>
|
91
|
-
<div>client content</div>
|
92
|
-
</NoSSR>
|
93
|
-
```
|
94
|
-
|
95
|
-
After modifying the code, refresh page found that the previous Waring disappeared. Open the Network window of the browser developer tool to see that the returned HTML document does not contain the content of the `NoSSR` component package.
|
96
|
-
|
97
|
-
:::info
|
98
|
-
['useRuntimeContext'](/apis/app/runtime/core/use-runtime-context) can get complete request information, which can be used to ensure that the rendering results of SSR and CSR are consistent.
|
99
|
-
|
100
|
-
:::
|
101
|
-
|
102
|
-
## Concerned Memory Leaks
|
103
|
-
|
104
|
-
:::warning
|
105
|
-
In the SSR, developers need to pay special attention to the problem of memory leaks. Even small memory leaks can affect services..
|
106
|
-
|
107
|
-
:::
|
108
|
-
|
109
|
-
In SSR, every request triggers the component rendering. So, you need to avoid defining any potentially growing global data, or subscribing to events globally, or creating streams that will not be destroyed.
|
110
|
-
|
111
|
-
For example, the following code, when using [redux-observable](https://redux-observable.js.org/), developers used to code like this:
|
112
|
-
|
113
|
-
```tsx
|
114
|
-
import { createEpicMiddleware, combineEpics } from 'redux-observable';
|
115
|
-
|
116
|
-
const epicMiddleware = createEpicMiddleware();
|
117
|
-
const rootEpic = combineEpics();
|
118
|
-
|
119
|
-
export default function Test() {
|
120
|
-
epicMiddleware.run(rootEpic);
|
121
|
-
return <div>Hello Modern.js</div>;
|
122
|
-
}
|
123
|
-
```
|
124
|
-
|
125
|
-
Create a Middleware instance `epicMiddleware` outside the component and call epicMiddleware.run inside the component.
|
126
|
-
|
127
|
-
On the browser side, this code does not cause any problems. But in SSR, the Middleware instance will never be destroyed. Every time the component is rendered and `rootEpic` is called, new event bindings are added internally, causing the entire object to continue to grow larger, which ultimately affects application performance.
|
128
|
-
|
129
|
-
Such problems in CSR are not easy to detect, so when switching from CSR to SSR, if you are not sure whether the application has such hidden dangers, you can press the application.
|
130
|
-
|
131
|
-
## Crop SSR Data
|
132
|
-
|
133
|
-
In order to keep the data requested in the SSR phase, it can be used directly on the browser side, Modern.js inject the data and state that collected during the rendering process into the HTML.
|
134
|
-
|
135
|
-
As a result, CSR applications often have a large amount of interface data and the state of the components is not crop. If SSR is used directly, the rendered HTML size may be too large.
|
136
|
-
|
137
|
-
At this time, SSR not only cannot bring an improvement in the user experience, but may have the opposite effect.
|
138
|
-
|
139
|
-
Therefore, when using SSR, **developers need to do reasonable weight loss for the application**:
|
140
|
-
|
141
|
-
1. Pay attention to the first screen, you can only request the data needed for the first screen in SSR, and render the rest on the browser side.
|
142
|
-
2. Removes the data independent with render from the data returned by the interface.
|
143
|
-
|
144
|
-
## Serverless Pre-render
|
145
|
-
|
146
|
-
Modern.js provide Serverless Pre-rendering(SPR) to improve SSR performance.
|
147
|
-
|
148
|
-
SPR uses pre-rendering and caching to provide the responsive performance of static Web for SSR pages. It allows SSR applications to have the responsiveness and stability of static Web pages, while keeping data dynamically updated.
|
149
|
-
|
150
|
-
Using SPR in the Modern.js is very simple, just add the `<PreRender>` component, and the page where the component is located will automatically open SPR.
|
151
|
-
|
152
|
-
This mock a component that uses the `useLoaderData` API, and the request in the Data Loader takes 2s.
|
153
|
-
|
154
|
-
```jsx
|
155
|
-
import { useLoaderData } from '@modern-js/runtime/router';
|
156
|
-
|
157
|
-
export const loader = async () => {
|
158
|
-
await new Promise((resolve, reject) => {
|
159
|
-
setTimeout(() => {
|
160
|
-
resolve(null);
|
161
|
-
}, 2000);
|
162
|
-
});
|
163
|
-
|
164
|
-
return {
|
165
|
-
message: 'Hello Modern.js',
|
166
|
-
};
|
167
|
-
};
|
168
|
-
|
169
|
-
export default () => {
|
170
|
-
const data = useLoaderData();
|
171
|
-
return <div>{data?.message}</div>;
|
172
|
-
};
|
173
|
-
```
|
174
|
-
|
175
|
-
After executing the `dev` command and opening the page, it is obvious that the page needs to wait 2s before returning.
|
176
|
-
|
177
|
-
The next is to use the `<PreRender>` component, which can be exported directly from `@modern-js/runtime/ssr `:
|
178
|
-
|
179
|
-
```ts
|
180
|
-
import { PreRender } from '@modern-js/runtime/ssr';
|
181
|
-
```
|
182
|
-
|
183
|
-
Use the `PreRender` component in the routing component and set the parameter `interval` to indicate that the expiration time of the rendering result is 5s:
|
184
|
-
|
185
|
-
```tsx
|
186
|
-
<PreRender interval={5} />
|
187
|
-
```
|
188
|
-
|
189
|
-
After modification, execute `pnpm run build && pnpm run serve` to start the application and open the page.
|
190
|
-
|
191
|
-
When open page for the first time, it is no different from the previous rendering, and there is also a 2s delay.
|
192
|
-
|
193
|
-
Refresh page, and the page opens instantly, but at this time, the page data has not changed due to the refresh, because the cache has not expired.
|
194
|
-
|
195
|
-
Wait 5s, refresh the page again, the data of the page is still unchanged. Refresh the page again The data changes, but the page still responds almost instantaneously.
|
196
|
-
|
197
|
-
This is because in the previous request, the SPR has asynchronously obtained the new rendering result in the background, and the page requested this time is the version that has been cached in the server.
|
198
|
-
|
199
|
-
It is conceivable that when `interval` is set to 1, users can have the responsive experience of a static page.
|
200
|
-
|
201
|
-
:::info
|
202
|
-
For more detail, see [`<PreRender>`](/apis/app/runtime/ssr/pre-render).
|
203
|
-
|
204
|
-
:::
|
205
|
-
|
206
|
-
## Treeshaking
|
207
|
-
|
208
|
-
When SSR is enabled, Modern.js will use the same entry to build both the SSR Bundle and the CSR Bundle. Therefore, the Web API in the SSR Bundle, or the Node API in the CSR Bundle, can lead to runtime errors.
|
209
|
-
|
210
|
-
Web API into a component is usually to do some global listening, or to get browser-related data, such as:
|
211
|
-
|
212
|
-
```tsx
|
213
|
-
document.addEventListener('load', () => {
|
214
|
-
console.log('document load');
|
215
|
-
});
|
216
|
-
const App = () => {
|
217
|
-
return <div>Hello World</div>;
|
218
|
-
};
|
219
|
-
export default App;
|
220
|
-
```
|
221
|
-
|
222
|
-
The Node API is introduced in the component file, usually because of the use of Data Loader, for example:
|
223
|
-
|
224
|
-
```ts
|
225
|
-
import fse from 'fs-extra';
|
226
|
-
export const loader = () => {
|
227
|
-
const file = fse.readFileSync('./myfile');
|
228
|
-
return {
|
229
|
-
...
|
230
|
-
};
|
231
|
-
};
|
232
|
-
```
|
233
|
-
|
234
|
-
### Use Environment Variables
|
235
|
-
|
236
|
-
For the first case, we can directly use Modern.js built-in environment variables `MODERN_TARGET` to remove useless code at build time:
|
237
|
-
|
238
|
-
```ts
|
239
|
-
if (process.env.MODERN_TARGET === 'browser') {
|
240
|
-
document.addEventListener('load', () => {
|
241
|
-
console.log('document load');
|
242
|
-
});
|
243
|
-
}
|
244
|
-
```
|
245
|
-
|
246
|
-
:::note
|
247
|
-
For more information, see [environment variables](/guides/basic-features/env-vars).
|
248
|
-
|
249
|
-
:::
|
250
|
-
|
251
|
-
### Use File Suffix
|
252
|
-
|
253
|
-
In the second case, the Treeshaking method does not guarantee that the code is completely separated. Modern.js also supports the packaging file of SSR Bundle and CSR Bundle products through the file suffixed with `.node.`.
|
254
|
-
|
255
|
-
For example, the import of `fs-extra` in the code, when it is directly referenced to the component, will cause the CSR to load an error. You can create `.ts` and `.node.ts` files of the same name as a layer of proxy:
|
256
|
-
|
257
|
-
```ts title="compat.ts"
|
258
|
-
export const readFileSync: any = () => {};
|
259
|
-
```
|
260
|
-
|
261
|
-
```ts title="compat.node.ts"
|
262
|
-
export { readFileSync } from 'fs-extra';
|
263
|
-
```
|
264
|
-
|
265
|
-
use `./compat` directly into the file. At this time, files with the `.node.ts` suffix will be used first in the SSR environment, and files with the `.ts` suffix will be used in the CSR environment.
|
266
|
-
|
267
|
-
```ts title="App.tsx"
|
268
|
-
import { readFileSync } from './compat'
|
269
|
-
|
270
|
-
export const loader = () => {
|
271
|
-
const file = readFileSync('./myfile');
|
272
|
-
return {
|
273
|
-
...
|
274
|
-
};
|
275
|
-
};
|
276
|
-
```
|
277
|
-
|
278
|
-
### Independent File
|
279
|
-
|
280
|
-
Both of the above methods will bring some burden to the developer. Modern.js based on [Nested Routing](/guides/basic-features/routes) developed and designed [Data Fetch](/guides/basic-features/data-fetch) to separate CSR and SSR code.
|
281
|
-
|
282
|
-
## Remote Request
|
283
|
-
|
284
|
-
When initiating remote requests in SSR, developers sometimes use request tools. Some interfaces need to pass user cookies, which developers can get through the ['useRuntimeContext'](/guides/basic-features/data-fetch#route-loader) API to achieve.
|
285
|
-
|
286
|
-
It should be noted, the request header of the HTML request is obtained, which may not be applicable to remote requests, so **must not** pass through all request headers.
|
287
|
-
|
288
|
-
In addition, some backend interfaces, or general gateways, will verify according to the information in the request header, and full pass-through is prone to various problems that are difficult to debug. It is recommended that **pass-through on demand**.
|
289
|
-
|
290
|
-
Be sure to filter the `host` field if you really need to pass through all request headers.
|
291
|
-
|
292
|
-
## Streaming SSR
|
293
|
-
|
294
|
-
Modern.js supports streaming rendering in React 18. Opt in it with the following configuration:
|
295
|
-
|
296
|
-
```json
|
297
|
-
{
|
298
|
-
"server": {
|
299
|
-
"ssr": {
|
300
|
-
"mode": "stream"
|
301
|
-
}
|
302
|
-
}
|
303
|
-
}
|
304
|
-
```
|
305
|
-
|
306
|
-
The streaming SSR of Modern.js is implemented based on React Router, and the main APIs involved are:
|
307
|
-
|
308
|
-
- [`defer`](https://reactrouter.com/en/main/utils/defer): This utility allows you to defer values returned from loaders by passing promises instead of resolved values.
|
309
|
-
- [`Await`](https://reactrouter.com/en/main/components/await): Used to render deferred values with automatic error handling.
|
310
|
-
- [`useAsyncValue`](https://reactrouter.com/en/main/hooks/use-async-value):Returns the resolved data from the nearest `<Await>` ancestor component.
|
311
|
-
|
312
|
-
|
313
|
-
### Return async data
|
314
|
-
|
315
|
-
```ts title='page.loader.ts'
|
316
|
-
import { defer, type LoaderFunctionArgs } from '@modern-js/runtime/router';
|
317
|
-
|
318
|
-
interface User {
|
319
|
-
name: string;
|
320
|
-
age: number;
|
321
|
-
}
|
322
|
-
|
323
|
-
export interface Data {
|
324
|
-
data: User;
|
325
|
-
}
|
326
|
-
|
327
|
-
export default ({ params }: LoaderFunctionArgs) => {
|
328
|
-
const userId = params.id;
|
329
|
-
|
330
|
-
const user = new Promise<User>(resolve => {
|
331
|
-
setTimeout(() => {
|
332
|
-
resolve({
|
333
|
-
name: `user-${userId}`,
|
334
|
-
age: 18,
|
335
|
-
});
|
336
|
-
}, 200);
|
337
|
-
});
|
338
|
-
|
339
|
-
return defer({ data: user });
|
340
|
-
};
|
341
|
-
|
342
|
-
```
|
343
|
-
|
344
|
-
`user` is of `Promise` type, which means the data will be obtained asynchronously. Note that `defer` must accept an object type parameter,
|
345
|
-
therefore, the parameter passed to `defer` is `{data: user}`.
|
346
|
-
|
347
|
-
`defer` can also receive asynchronous data and synchronous data at the same time. For example:
|
348
|
-
|
349
|
-
```ts title='page.loader.ts'
|
350
|
-
|
351
|
-
// skip some codes
|
352
|
-
|
353
|
-
export default ({ params }: LoaderFunctionArgs) => {
|
354
|
-
const userId = params.id;
|
355
|
-
|
356
|
-
const user = new Promise<User>(resolve => {
|
357
|
-
setTimeout(() => {
|
358
|
-
resolve({
|
359
|
-
name: `user-${userId}`,
|
360
|
-
age: 18,
|
361
|
-
});
|
362
|
-
}, 200);
|
363
|
-
});
|
364
|
-
|
365
|
-
const otherData = new Promise<string>(resolve => {
|
366
|
-
setTimeout(() => {
|
367
|
-
resolve('some sync data');
|
368
|
-
}, 200);
|
369
|
-
});
|
370
|
-
|
371
|
-
return defer({
|
372
|
-
data: user,
|
373
|
-
other: await otherData
|
374
|
-
});
|
375
|
-
};
|
376
|
-
|
377
|
-
```
|
378
|
-
|
379
|
-
`await` is added before `otherData`, so the data is obtained synchronously. It can be passed to `defer` with the data `user` at the same time.
|
380
|
-
|
381
|
-
|
382
|
-
### Render async data
|
383
|
-
|
384
|
-
Use the `Await` component to render the data returned asynchronously from the Data Loader. For example:
|
385
|
-
|
386
|
-
```ts title='page.tsx'
|
387
|
-
import { Await, useLoaderData } from '@modern-js/runtime/router';
|
388
|
-
import { Suspense } from 'react';
|
389
|
-
import type { Data } from './page.loader';
|
390
|
-
|
391
|
-
const Page = () => {
|
392
|
-
const data = useLoaderData() as Data;
|
393
|
-
|
394
|
-
return (
|
395
|
-
<div>
|
396
|
-
User info:
|
397
|
-
<Suspense fallback={<div id="loading">loading user data ...</div>}>
|
398
|
-
<Await resolve={data.data}>
|
399
|
-
{(user) => {
|
400
|
-
return (
|
401
|
-
<div id="data">
|
402
|
-
name: {user.name}, age: {user.age}
|
403
|
-
</div>
|
404
|
-
);
|
405
|
-
}}
|
406
|
-
</Await>
|
407
|
-
</Suspense>
|
408
|
-
</div>
|
409
|
-
);
|
410
|
-
};
|
411
|
-
|
412
|
-
export default Page;
|
413
|
-
```
|
414
|
-
|
415
|
-
`Await` needs to be wrapped inside the `Suspense` component. The `resolve` of `Await` passes in the data acquired asynchronously by the Data Loader. When the data acquisition is completed,
|
416
|
-
the obtained data is rendered through the [Render Props](https://reactjs.org/docs/render-props.html) mode. When the data acquisition is in pending status, the
|
417
|
-
content set by the `fallback` property of the `Suspense` component will display.
|
418
|
-
|
419
|
-
|
420
|
-
:::warning Warning
|
421
|
-
When importing a type from a Data Loader file, you need to use the `import type` syntax to ensure that only type information is imported, which can prevent the Data Loader code from being packaged into the client bundle.
|
422
|
-
|
423
|
-
So, here we import like this: `import type { Data } from './page.loader'`;
|
424
|
-
:::
|
425
|
-
|
426
|
-
You can also get the asynchronous data returned by Data Loader through `useAsyncValue`. For example:
|
427
|
-
|
428
|
-
```
|
429
|
-
```ts title='page.tsx'
|
430
|
-
import { useAsyncValue } from '@modern-js/runtime/router';
|
431
|
-
|
432
|
-
// skip some codes
|
433
|
-
|
434
|
-
const UserInfo = () => {
|
435
|
-
const user = useAsyncValue();
|
436
|
-
|
437
|
-
return (
|
438
|
-
<div>
|
439
|
-
name: {user.name}, age: {user.age}
|
440
|
-
</div>
|
441
|
-
)
|
442
|
-
}
|
443
|
-
|
444
|
-
const Page = () => {
|
445
|
-
const data = useLoaderData() as Data;
|
446
|
-
|
447
|
-
return (
|
448
|
-
<div>
|
449
|
-
User info:
|
450
|
-
<Suspense fallback={<div id="loading">loading user data ...</div>}>
|
451
|
-
<Await resolve={data.data}>
|
452
|
-
<UserInfo />
|
453
|
-
</Await>
|
454
|
-
</Suspense>
|
455
|
-
</div>
|
456
|
-
);
|
457
|
-
};
|
458
|
-
|
459
|
-
export default Page;
|
460
|
-
```
|
461
|
-
|
462
|
-
### Error handling
|
463
|
-
|
464
|
-
The `errorElement` property of the `Await` component can be used to handle errors thrown when the Data Loader executes or when a child component renders.
|
465
|
-
For example, we intentionally throw an error in the Data Loader function:
|
466
|
-
|
467
|
-
```ts title='page.loader.ts'
|
468
|
-
import { defer } from '@modern-js/runtime/router';
|
469
|
-
|
470
|
-
export default () => {
|
471
|
-
const data = new Promise((resolve, reject) => {
|
472
|
-
setTimeout(() => {
|
473
|
-
reject(new Error('error occurs'));
|
474
|
-
}, 200);
|
475
|
-
});
|
476
|
-
|
477
|
-
return defer({ data });
|
478
|
-
};
|
479
|
-
```
|
480
|
-
|
481
|
-
Then use `useAsyncError` to get the error, and assign the component used to render the error to the `errorElement` property of the `Await` component:
|
482
|
-
|
483
|
-
```ts title='page.ts'
|
484
|
-
import { Await, useAsyncError, useLoaderData } from '@modern-js/runtime/router';
|
485
|
-
import { Suspense } from 'react';
|
486
|
-
|
487
|
-
export default function Page() {
|
488
|
-
const data = useLoaderData();
|
489
|
-
|
490
|
-
return (
|
491
|
-
<div>
|
492
|
-
Error page
|
493
|
-
<Suspense fallback={<div>loading ...</div>}>
|
494
|
-
<Await resolve={data.data} errorElement={<ErrorElement />}>
|
495
|
-
{(data: any) => {
|
496
|
-
return <div>never displayed</div>;
|
497
|
-
}}
|
498
|
-
</Await>
|
499
|
-
</Suspense>
|
500
|
-
</div>
|
501
|
-
);
|
502
|
-
}
|
503
|
-
|
504
|
-
function ErrorElement() {
|
505
|
-
const error = useAsyncError() as Error;
|
506
|
-
return <p>Something went wrong! {error.message}</p>;
|
507
|
-
}
|
508
|
-
```
|
509
|
-
|
510
|
-
:::info More
|
511
|
-
1. [Deferred Data](https://reactrouter.com/en/main/guides/deferred)
|
512
|
-
2. [New Suspense SSR Architecture in React 18](https://github.com/reactwg/react-18/discussions/37)
|
513
|
-
:::
|
@@ -1,46 +0,0 @@
|
|
1
|
-
---
|
2
|
-
sidebar_position: 10
|
3
|
-
title: Testing
|
4
|
-
---
|
5
|
-
# Testing
|
6
|
-
|
7
|
-
Modern.js inherits the testing capabilities of [Jest](https://jestjs.io/) by default.
|
8
|
-
|
9
|
-
First need to execute `pnpm run new` enable [unit test/integration test] features:
|
10
|
-
|
11
|
-
```
|
12
|
-
? Action: Enable features
|
13
|
-
? Enable features: Enable Unit Test / Integration Test
|
14
|
-
```
|
15
|
-
|
16
|
-
After executing the above command, the `"test": "modern test"` command will be automatically generated in package.json.
|
17
|
-
|
18
|
-
register plugin in `modern.config.ts`:
|
19
|
-
|
20
|
-
```ts title="modern.config.ts"
|
21
|
-
import testPlugin from '@modern-js/plugin-testing';
|
22
|
-
|
23
|
-
export default defineConfig({
|
24
|
-
plugins: [..., testPlugin()],
|
25
|
-
});
|
26
|
-
```
|
27
|
-
|
28
|
-
## Test file
|
29
|
-
|
30
|
-
Modern.js default recognized test file paths are: `<rootDir>/src/**/*.test.[jt]s?(x)` and `<rootDir>/tests/**/*.test.[jt]s?(x)`.
|
31
|
-
|
32
|
-
If you need to customize the test directory, you can configure it with [tools.jest](/configure/app/tools/jest).
|
33
|
-
|
34
|
-
## Usage
|
35
|
-
|
36
|
-
Modern.js test support [testing-library](https://testing-library.com/docs/). API can be imported from `@modern-js/runtime/testing`.
|
37
|
-
|
38
|
-
```
|
39
|
-
import { render, screen } from '@modern-js/runtime/testing';
|
40
|
-
```
|
41
|
-
|
42
|
-
Other Modern.js supported testing APIs can be found [here](/apis/app/runtime/testing/cleanup).
|
43
|
-
|
44
|
-
## transform
|
45
|
-
|
46
|
-
Modern.js tests use [babel-jest](https://www.npmjs.com/package/babel-jest) for source code compilation by default. If you need to use [ts-jest](https://github.com/kulshekhar/ts-jest), you can configure it through [testing.transform](/configure/app/testing/transformer).
|
@@ -1,124 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title: Custom Web Server
|
3
|
-
sidebar_position: 3
|
4
|
-
---
|
5
|
-
# Custom Web Server
|
6
|
-
|
7
|
-
As a client side-centric development framework, Modern.js has weak customization capabilities on the server side. In some development scenarios, special server level logic needs to be customized, such as user authentication, request preprocessing, and adding page rendering skeletons.
|
8
|
-
|
9
|
-
Some developers may be wondering, Modern.js already provides [BFF](/guides/advanced-features/bff/function.html), why do you need **Custom Web Server**.
|
10
|
-
|
11
|
-
Because by default, page routing does not go through BFF, it has no way to provide server-side custom logic for page access. The reason for this design is that we do not want the service that controls the page to be bound to the BFF service, so as to avoid the BFF framework restricting how the page is deployed.
|
12
|
-
|
13
|
-
For example, hosting pages separately from BFF, deploying page services to non-Node environments, or customizing for deployment platforms, etc.
|
14
|
-
|
15
|
-
For the above reasons, Modern.js provides three ways that projects can customize server level capabilities progressively according to their needs.
|
16
|
-
|
17
|
-
:::warning
|
18
|
-
The three extension methods cannot work at the same time, and developers need to choose the appropriate method according to the scenario.
|
19
|
-
:::
|
20
|
-
|
21
|
-
## Extending Web Server with API
|
22
|
-
|
23
|
-
The first way is to customize the server level at a specific life cycle through the server level runtime API provided by Modern.js. The purpose of providing this way is that in some cases, developers do not need to control the full Web Server, but only need to add server level logic.
|
24
|
-
|
25
|
-
Because the full web server cannot be controlled this way, and the extension logic **only takes effect when the page is requested**. Therefore, it is relatively simple to apply to server level logic, and you do not want to create additional BFFs or BFFs and pages without common server level logic scenarios.
|
26
|
-
|
27
|
-
You can execute the'pnpm run new 'command in the project root directory to enable the "Custom Web Serve" function:
|
28
|
-
|
29
|
-
```bash
|
30
|
-
? Action Create project element
|
31
|
-
? New "Custom Web Server" source code directory
|
32
|
-
```
|
33
|
-
|
34
|
-
After executing the command, register the `@modern-js/plugin-server` plugin in `modern.config.ts`:
|
35
|
-
|
36
|
-
```ts title="modern.config.ts"
|
37
|
-
import serverPlugin from '@modern-js/plugin-server';
|
38
|
-
|
39
|
-
export default defineConfig({
|
40
|
-
plugins: [..., serverPlugin()],
|
41
|
-
});
|
42
|
-
```
|
43
|
-
|
44
|
-
After the function is turned on, the `server/index.ts` file will be automatically created in the project directory, and custom logic can be written in this file. Modern.js provides two types of APIs, **Hook** and **Middleware**, to extend Web Server.
|
45
|
-
|
46
|
-
### Hook
|
47
|
-
|
48
|
-
The Hook provided by Modern.js is used to control the built-in logic in the Web Server, and all page requests go through the Hook.
|
49
|
-
|
50
|
-
There are currently two Hooks provided, namely `AfterMatch` and `AfterRender`, which can be used to modify the rendering results. It can be written in `server/index.ts` like this:
|
51
|
-
|
52
|
-
```ts
|
53
|
-
import type { AfterMatchHook, AfterRenderHook } from '@modern-js/runtime/server';
|
54
|
-
|
55
|
-
export const afterMatch: AfterMatchHook = (ctx, next) => {
|
56
|
-
next();
|
57
|
-
}
|
58
|
-
|
59
|
-
export const afterRender: AfterRenderHook = (ctx, next) => {
|
60
|
-
next();
|
61
|
-
}
|
62
|
-
```
|
63
|
-
|
64
|
-
Projects should have the following best practices when using Hook:
|
65
|
-
|
66
|
-
1. Permission verification in afterMatch.
|
67
|
-
2. Do Rewrite and Redirect in afterMatch.
|
68
|
-
3. Do HTML content injection in afterRender.
|
69
|
-
|
70
|
-
:::note
|
71
|
-
For more detail, see [Hook](/apis/app/runtime/web-server/hook)。
|
72
|
-
:::
|
73
|
-
|
74
|
-
### Middleware
|
75
|
-
|
76
|
-
For some projects, there may be more requirements at the server level, Modern.js provides Middleware to add pre-middleware for Web Server. It can only run in a Node environment, so if the project is deployed to another environment, such as a Worker environment, Middleware cannot be used.
|
77
|
-
|
78
|
-
Modern.js provides a set of APIs by default for projects to use:
|
79
|
-
|
80
|
-
```ts
|
81
|
-
import { Middlewre } from '@modern-js/runtime/server';
|
82
|
-
|
83
|
-
export const middleware = (context, next) => {
|
84
|
-
const { source: { req, res } } = context;
|
85
|
-
console.log(req.url);
|
86
|
-
next();
|
87
|
-
};
|
88
|
-
```
|
89
|
-
|
90
|
-
:::note
|
91
|
-
For more detail, see [Middleware] (/apis/app/runtime/web-server/middleware).
|
92
|
-
:::
|
93
|
-
|
94
|
-
Projects should have the following best practices when using Middleware:
|
95
|
-
|
96
|
-
1. In Middleware, you can directly operate origin request and response objects, do event tracking, and inject Node services (databases, Redis, etc.) that may be used for SSR rendering.
|
97
|
-
2. Marking and crawler optimization can be done in Middleware.
|
98
|
-
3. In Middleware, you can ignore the default rendering and customize the rendering process.
|
99
|
-
|
100
|
-
**In general, in CSR projects, using Hook can basically meet all the needs of simple scenarios. In SSR projects, Middleware can be used for more complex Node extensions.**
|
101
|
-
|
102
|
-
## Managed Page Requests with BFF
|
103
|
-
|
104
|
-
The second way is to use BFF to Managed page rendering. In this way, all requests will first hit the BFF service.
|
105
|
-
|
106
|
-
This method can uniformly control the server level logic of all requests through BFF. Therefore, it is suitable for scenarios where the server level logic is complex, and BFF and pages need common server level logic. But it still relies on the Web Server of Modern.js as a whole, and cannot run the logic on existing services.
|
107
|
-
|
108
|
-
To use this method, we need to first enable the "BFF" function through `pnpm new`. Then add [`bff.enableHandleWeb`](/configure/app/bff/enable-handle-web.html) configuration in the configuration file:
|
109
|
-
|
110
|
-
```ts
|
111
|
-
export default defineConfig({
|
112
|
-
bff: {
|
113
|
-
enableHandleWeb: true,
|
114
|
-
},
|
115
|
-
});
|
116
|
-
```
|
117
|
-
|
118
|
-
When this value is set to `true`, page request traffic also goes through the BFF, and the logic built into Modern.js for page rendering defaults to running as the last middleware for the BFF service.
|
119
|
-
|
120
|
-
## Fully Customized Web Server
|
121
|
-
|
122
|
-
:::note
|
123
|
-
Comming soon..
|
124
|
-
:::
|