@modern-js/main-doc 2.0.0-beta.2 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/inspect.md +0 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +17 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +0 -22
- package/en/docusaurus-plugin-content-docs/current/components/init-app.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-migration.md +1 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/hmr.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/https.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/port.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/progress-bar.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/start-url.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/experiments/lazy-compilation.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/app-icon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/crossorigin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/disable-html-folder.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/mount-id.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/assets-retry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/charset.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/clean-dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/convert-to-rem.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/copy.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/css-module-local-ident-name.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/data-uri-limit.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-module-extension.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-filename-hash.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-minimize.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-source-map.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-fallback.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-manifest.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-scripts.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-styles.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-latest-decorators.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/externals.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/filename.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/legal-comments.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/override-browserslist.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/polyfill.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/svg-default-export.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/build-cache.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/bundle-analyze.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/chunk-split.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/print-file-size.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/profile.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-console.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-moment-locale.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/security/sri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/routes.md +2 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/alias.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/compile-js-data-uri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/define.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/exclude.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/global-vars.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/include.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/module-scopes.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/pre-entry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-extension-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-main-fields.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/autoprefixer.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/babel.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/dev-server.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/esbuild.md +16 -39
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/html-plugin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/inspector.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/less.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/minify-css.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/postcss.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/pug.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/sass.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/style-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/styled-components.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/swc.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/terser.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack-chain.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/builder.md +46 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-in-js.md +38 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-modules.md +86 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/less-sass.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/postcss.md +81 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/tailwindcss.md +95 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/data-fetch.md +66 -0
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/routes.md +270 -0
- package/en/docusaurus-plugin-content-docs/current/guides/concept/entries.md +116 -0
- package/en/docusaurus-plugin-content-docs/current/guides/concept/lifecycle.md +15 -0
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/quick-start.md +162 -0
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/upgrade.md +78 -0
- package/{zh/tutorials/first-app → en/docusaurus-plugin-content-docs/current/guides}/overview.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/tutorials/foundations/introduction.md +1 -1
- package/en/docusaurus-plugin-content-docs/current.json +29 -29
- package/package.json +3 -3
- package/scripts/config.ts +2 -2
- package/zh/apis/app/commands/inspect.md +0 -4
- package/zh/apis/app/commands/new.md +1 -3
- package/zh/apis/app/hooks/src/index_.md +6 -5
- package/zh/apis/app/runtime/app/_category_.json +1 -1
- package/zh/apis/app/runtime/bff/_category_.json +1 -1
- package/zh/apis/app/runtime/core/_category_.json +1 -1
- package/zh/apis/app/runtime/core/bootstrap.md +17 -3
- package/zh/apis/app/runtime/model/_category_.json +1 -1
- package/zh/apis/app/runtime/model/create-app.md +1 -1
- package/zh/apis/app/runtime/model/use-store.md +1 -23
- package/zh/apis/app/runtime/router/_category_.json +1 -1
- package/zh/apis/app/runtime/ssr/_category_.json +1 -1
- package/zh/apis/app/runtime/testing/_category_.json +1 -1
- package/zh/apis/app/runtime/utility/_category_.json +1 -1
- package/zh/apis/app/runtime/web-server/_category_.json +1 -1
- package/zh/components/debug-app.md +18 -0
- package/zh/components/global-proxy.md +28 -0
- package/zh/components/init-app.md +44 -0
- package/zh/components/prerequisites.md +19 -0
- package/zh/components/reduck-migration.md +1 -0
- package/zh/configure/app/dev/asset-prefix.md +1 -1
- package/zh/configure/app/dev/hmr.md +1 -1
- package/zh/configure/app/dev/https.md +1 -1
- package/zh/configure/app/dev/port.md +1 -1
- package/zh/configure/app/dev/progress-bar.md +1 -1
- package/zh/configure/app/dev/start-url.md +1 -1
- package/zh/configure/app/experiments/_category_.json +4 -0
- package/zh/configure/app/experiments/lazy-compilation.md +1 -1
- package/zh/configure/app/html/_category_.json +4 -0
- package/zh/configure/app/html/app-icon.md +1 -1
- package/zh/configure/app/html/crossorigin.md +1 -1
- package/zh/configure/app/html/disable-html-folder.md +1 -1
- package/zh/configure/app/html/favicon-by-entries.md +1 -1
- package/zh/configure/app/html/favicon.md +1 -1
- package/zh/configure/app/html/inject-by-entries.md +1 -1
- package/zh/configure/app/html/inject.md +1 -1
- package/zh/configure/app/html/meta-by-entries.md +1 -1
- package/zh/configure/app/html/meta.md +1 -1
- package/zh/configure/app/html/mount-id.md +1 -1
- package/zh/configure/app/html/template-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters.md +1 -1
- package/zh/configure/app/html/template.md +1 -1
- package/zh/configure/app/html/title-by-entries.md +1 -1
- package/zh/configure/app/html/title.md +1 -1
- package/zh/configure/app/output/asset-prefix.md +1 -1
- package/zh/configure/app/output/assets-retry.md +1 -1
- package/zh/configure/app/output/charset.md +1 -1
- package/zh/configure/app/output/clean-dist-path.md +1 -1
- package/zh/configure/app/output/convert-to-rem.md +1 -1
- package/zh/configure/app/output/copy.md +1 -1
- package/zh/configure/app/output/css-module-local-ident-name.md +1 -1
- package/zh/configure/app/output/data-uri-limit.md +1 -1
- package/zh/configure/app/output/disable-css-extract.md +1 -1
- package/zh/configure/app/output/disable-css-module-extension.md +1 -1
- package/zh/configure/app/output/disable-filename-hash.md +1 -1
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/zh/configure/app/output/disable-minimize.md +1 -1
- package/zh/configure/app/output/disable-source-map.md +1 -1
- package/zh/configure/app/output/disable-ts-checker.md +1 -1
- package/zh/configure/app/output/dist-path.md +1 -1
- package/zh/configure/app/output/enable-asset-fallback.md +1 -1
- package/zh/configure/app/output/enable-asset-manifest.md +1 -1
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/zh/configure/app/output/enable-inline-scripts.md +1 -1
- package/zh/configure/app/output/enable-inline-styles.md +1 -1
- package/zh/configure/app/output/enable-latest-decorators.md +1 -1
- package/zh/configure/app/output/externals.md +1 -1
- package/zh/configure/app/output/filename.md +1 -1
- package/zh/configure/app/output/legal-comments.md +1 -1
- package/zh/configure/app/output/override-browserslist.md +1 -1
- package/zh/configure/app/output/polyfill.md +1 -1
- package/zh/configure/app/output/ssg.md +118 -114
- package/zh/configure/app/output/svg-default-export.md +1 -1
- package/zh/configure/app/performance/_category_.json +4 -0
- package/zh/configure/app/performance/build-cache.md +1 -1
- package/zh/configure/app/performance/bundle-analyze.md +1 -1
- package/zh/configure/app/performance/chunk-split.md +1 -1
- package/zh/configure/app/performance/print-file-size.md +1 -1
- package/zh/configure/app/performance/profile.md +1 -1
- package/zh/configure/app/performance/remove-console.md +1 -1
- package/zh/configure/app/performance/remove-moment-locale.md +1 -1
- package/zh/configure/app/plugins.md +1 -1
- package/zh/configure/app/runtime/state.md +13 -0
- package/zh/configure/app/security/_category_.json +4 -0
- package/zh/configure/app/security/sri.md +1 -1
- package/zh/configure/app/server/routes.md +2 -4
- package/zh/configure/app/server/ssr.md +0 -2
- package/zh/configure/app/source/alias.md +1 -1
- package/zh/configure/app/source/compile-js-data-uri.md +1 -1
- package/zh/configure/app/source/define.md +1 -1
- package/zh/configure/app/source/exclude.md +1 -1
- package/zh/configure/app/source/global-vars.md +1 -1
- package/zh/configure/app/source/include.md +1 -1
- package/zh/configure/app/source/module-scopes.md +1 -1
- package/zh/configure/app/source/pre-entry.md +1 -1
- package/zh/configure/app/source/resolve-extension-prefix.md +1 -1
- package/zh/configure/app/source/resolve-main-fields.md +1 -1
- package/zh/configure/app/tools/autoprefixer.md +1 -1
- package/zh/configure/app/tools/babel.md +1 -1
- package/zh/configure/app/tools/css-extract.md +1 -1
- package/zh/configure/app/tools/css-loader.md +1 -1
- package/zh/configure/app/tools/dev-server.md +1 -1
- package/zh/configure/app/tools/esbuild.md +16 -39
- package/zh/configure/app/tools/html-plugin.md +1 -1
- package/zh/configure/app/tools/inspector.md +1 -1
- package/zh/configure/app/tools/less.md +1 -1
- package/zh/configure/app/tools/minify-css.md +1 -1
- package/zh/configure/app/tools/postcss.md +1 -1
- package/zh/configure/app/tools/pug.md +1 -1
- package/zh/configure/app/tools/sass.md +1 -1
- package/zh/configure/app/tools/style-loader.md +1 -1
- package/zh/configure/app/tools/styled-components.md +1 -1
- package/zh/configure/app/tools/swc.md +42 -0
- package/zh/configure/app/tools/terser.md +1 -1
- package/zh/configure/app/tools/ts-checker.md +1 -1
- package/zh/configure/app/tools/ts-loader.md +1 -1
- package/zh/configure/app/tools/webpack-chain.md +1 -1
- package/zh/configure/app/tools/webpack.md +1 -1
- package/zh/guides/advanced-features/bff/bff-proxy.md +1 -1
- package/zh/guides/advanced-features/compatibility.md +2 -38
- package/zh/guides/advanced-features/custom-app.md +23 -19
- package/zh/guides/advanced-features/ssg.md +73 -62
- package/zh/guides/advanced-features/ssr.md +142 -36
- package/zh/guides/advanced-features/testing.md +33 -1
- package/zh/guides/advanced-features/web-server.md +2 -2
- package/zh/guides/basic-features/builder.md +46 -0
- package/zh/guides/basic-features/css/_category_.json +1 -1
- package/zh/guides/basic-features/css/less-sass.md +1 -14
- package/zh/guides/basic-features/css/tailwindcss.md +2 -6
- package/zh/guides/basic-features/data-fetch.md +1 -1
- package/zh/guides/basic-features/env-vars.md +34 -0
- package/zh/guides/basic-features/html.md +182 -0
- package/zh/guides/basic-features/mock.md +3 -9
- package/zh/guides/basic-features/proxy.md +2 -27
- package/zh/guides/basic-features/routes.md +32 -35
- package/zh/guides/concept/entries.md +8 -9
- package/zh/guides/get-started/quick-start.md +6 -78
- package/zh/guides/get-started/upgrade.md +8 -8
- package/zh/guides/topic-detail/framework-plugin/extend.md +3 -4
- package/zh/{apis/app/runtime/plugin/hook-api.md → guides/topic-detail/framework-plugin/hook-list.md} +42 -135
- package/zh/{apis/app/runtime/plugin → guides/topic-detail/framework-plugin}/hook.md +2 -3
- package/zh/guides/topic-detail/framework-plugin/implement.md +21 -10
- package/zh/guides/topic-detail/framework-plugin/introduction.md +49 -0
- package/{en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin → zh/guides/topic-detail/framework-plugin}/plugin-api.md +3 -4
- package/zh/guides/topic-detail/framework-plugin/relationship.md +2 -3
- package/zh/guides/topic-detail/model/quick-start.md +5 -1
- package/zh/guides/topic-detail/model/test-model.md +2 -2
- package/zh/guides/topic-detail/monorepo/intro.md +1 -1
- package/zh/guides/troubleshooting/dependencies.md +0 -69
- package/zh/tutorials/first-app/_category_.json +1 -1
- package/zh/tutorials/first-app/c01-start.md +94 -0
- package/zh/tutorials/first-app/c02-component.md +56 -0
- package/zh/tutorials/first-app/c03-css.md +305 -0
- package/zh/tutorials/first-app/c04-routes.md +169 -0
- package/zh/tutorials/first-app/c05-loader.md +82 -0
- package/zh/tutorials/first-app/c06-model.md +256 -0
- package/zh/tutorials/first-app/c07-container.md +268 -0
- package/zh/tutorials/first-app/c08-entries.md +134 -0
- package/zh/tutorials/foundations/introduction.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/default-alias.md +0 -25
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/_category_.json +0 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/abstract.md +0 -26
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook-api.md +0 -896
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook.md +0 -170
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-modern-mode.md +0 -34
- package/zh/apis/app/runtime/default-alias.md +0 -23
- package/zh/apis/app/runtime/plugin/_category_.json +0 -4
- package/zh/apis/app/runtime/plugin/abstract.md +0 -26
- package/zh/apis/app/runtime/plugin/plugin-api.md +0 -117
- package/zh/apis/generator/overview.md +0 -32
- package/zh/configure/app/output/enable-modern-mode.md +0 -34
- package/zh/guides/basic-features/image.md +0 -43
- package/zh/guides/topic-detail/compile-speed.md +0 -182
- package/zh/guides/topic-detail/framework-plugin/abstract.md +0 -27
- package/zh/guides/topic-detail/monorepo/deploy.md +0 -43
- package/zh/guides/troubleshooting/compile.md +0 -379
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +0 -25
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +0 -118
- package/zh/tutorials/first-app/c01-getting-started/1.3-dev-command.md +0 -29
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +0 -44
- package/zh/tutorials/first-app/c01-getting-started/1.5-start-command.md +0 -18
- package/zh/tutorials/first-app/c01-getting-started/1.6-create-repo.md +0 -31
- package/zh/tutorials/first-app/c01-getting-started/_category_.json +0 -3
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -79
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +0 -36
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +0 -21
- package/zh/tutorials/first-app/c02-generator-and-studio/_category_.json +0 -3
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +0 -55
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +0 -66
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +0 -11
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +0 -63
- package/zh/tutorials/first-app/c03-ide/_category_.json +0 -3
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +0 -67
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +0 -111
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.3-compatibility.md +0 -67
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/_category_.json +0 -3
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +0 -68
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +0 -92
- package/zh/tutorials/first-app/c05-component/_category_.json +0 -3
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +0 -110
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +0 -148
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +0 -84
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +0 -83
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +0 -77
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +0 -113
- package/zh/tutorials/first-app/c06-css-and-component/_category_.json +0 -3
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +0 -64
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +0 -100
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +0 -74
- package/zh/tutorials/first-app/c07-app-entry/_category_.json +0 -3
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +0 -153
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -310
- package/zh/tutorials/first-app/c08-client-side-routing/_category_.json +0 -3
- package/zh/tutorials/first-app/c09-bff/9.1-serverless.md +0 -30
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +0 -93
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +0 -205
- package/zh/tutorials/first-app/c09-bff/_category_.json +0 -3
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +0 -23
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +0 -185
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +0 -54
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +0 -69
- package/zh/tutorials/first-app/c10-model/_category_.json +0 -3
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +0 -274
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +0 -106
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +0 -61
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +0 -56
- package/zh/tutorials/first-app/c11-container/_category_.json +0 -3
|
@@ -4,7 +4,7 @@ sidebar_label: cssLoader
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.cssLoader](https://modernjs.dev/builder/zh/api/config-tools.html#tools-cssloader)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/cssLoader.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: devServer
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.devServer](https://modernjs.dev/builder/zh/api/config-tools.html#tools-devserver)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/devServer.md'
|
|
@@ -3,59 +3,36 @@ title: tools.esbuild
|
|
|
3
3
|
sidebar_label: esbuild
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
- 类型: `Object`
|
|
7
|
+
- 默认值: `undefined`
|
|
8
8
|
|
|
9
9
|
## 介绍
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Modern.js 基于 esbuild 提供了代码编译和压缩的能力,在大型工程中开启后,**可以大幅度减少代码压缩所需的时间,同时有效避免 OOM (heap out of memory) 问题**。
|
|
14
|
-
|
|
15
|
-
使用 esbuild 压缩虽然带来了构建效率上的提升,但 esbuild 的压缩比例是低于 terser 的,因此**构建产物的体积会增大**,请根据业务情况酌情使用(比较适合中后台场景)。
|
|
16
|
-
|
|
17
|
-
对于压缩工具之间的详细对比,可以参考 [minification-benchmarks](https://github.com/privatenumber/minification-benchmarks)。
|
|
18
|
-
|
|
19
|
-
:::info
|
|
20
|
-
除了代码压缩外,esbuild 也可以代替 babel 进行代码编译,优点是可以提升编译速度,缺点是无法使用丰富的 babel 插件能力。
|
|
11
|
+
:::tip esbuild 介绍
|
|
12
|
+
[esbuild](https://esbuild.github.io/) 是一款基于 Golang 开发的前端构建工具,具有打包、编译和压缩 JavaScript 代码的功能,相比传统的打包编译工具,esbuild 在性能上有显著提升。在代码压缩方面,相比 webpack 内置的 terser 压缩器,esbuild 在性能上有数十倍的提升。
|
|
21
13
|
:::
|
|
22
14
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
### target
|
|
15
|
+
Modern.js 提供了 esbuild 插件,让你能使用 esbuild 代替 babel-loader、ts-loader 和 terser 等库进行代码编译和压缩。在大型工程中开启后,**可以大幅度减少代码编译和压缩所需的时间,同时有效避免 OOM (heap out of memory) 问题**。
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
* 默认值: `'esnext'`
|
|
29
|
-
|
|
30
|
-
为生成的 JavaScript 和 CSS 代码设置目标环境。
|
|
31
|
-
|
|
32
|
-
可以直接设置为 JavaScript 语言版本,比如 `es5`,`es6`,`es2020`。也可以设置为若干个目标环境,每个目标环境都是一个环境名称后跟一个版本号。比如 `['chrome58', 'edge16' ,'firefox57']`。
|
|
33
|
-
|
|
34
|
-
支持设置以下环境:
|
|
17
|
+
## 配置项
|
|
35
18
|
|
|
36
|
-
|
|
37
|
-
- edge
|
|
38
|
-
- firefox
|
|
39
|
-
- ie
|
|
40
|
-
- ios
|
|
41
|
-
- node
|
|
42
|
-
- opera
|
|
43
|
-
- safari
|
|
19
|
+
你可以通过 `tools.esbuild` 配置项来设置 esbuild 编译行为。
|
|
44
20
|
|
|
45
|
-
|
|
21
|
+
```js title="modern.config.ts"
|
|
22
|
+
import { defineConfig } from '@modern-js/app-tools';
|
|
46
23
|
|
|
47
|
-
```typescript title="modern.config.ts"
|
|
48
24
|
export default defineConfig({
|
|
49
25
|
tools: {
|
|
50
26
|
esbuild: {
|
|
51
|
-
|
|
27
|
+
loader: {
|
|
28
|
+
target: 'chrome61',
|
|
29
|
+
},
|
|
30
|
+
minimize: {
|
|
31
|
+
target: 'chrome61',
|
|
32
|
+
},
|
|
52
33
|
},
|
|
53
34
|
},
|
|
54
35
|
});
|
|
55
36
|
```
|
|
56
37
|
|
|
57
|
-
|
|
58
|
-
设置 `target` 为 `es5` 时,需要保证所有代码被 babel 转义为 es5 代码,否则会导致 esbuild 编译报错:`Transforming 'xxx' to the configured target environment ("es5") is not supported yet`。
|
|
59
|
-
|
|
60
|
-
`target` 字段的详细介绍可以参考 [esbuild - target](https://esbuild.github.io/api/#target)。
|
|
61
|
-
:::
|
|
38
|
+
完整配置项请参考 [Modern.js Builder - esbuild 插件配置](https://modernjs.dev/builder/zh/plugins/plugin-esbuild.html#%E9%85%8D%E7%BD%AE)。
|
|
@@ -4,7 +4,7 @@ sidebar_label: htmlPlugin
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.htmlPlugin](https://modernjs.dev/builder/zh/api/config-tools.html#tools-htmlplugin)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/htmlPlugin.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: inspector
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.inspector](https://modernjs.dev/builder/zh/api/config-tools.html#tools-inspector)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/inspector.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: less
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.less](https://modernjs.dev/builder/zh/api/config-tools.html#tools-less)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/less.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: minifyCss
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.minifyCss](https://modernjs.dev/builder/zh/api/config-tools.html#tools-minifycss)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/minifyCss.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: postcss
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.postcss](https://modernjs.dev/builder/zh/api/config-tools.html#tools-postcss)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/postcss.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: pug
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.pug](https://modernjs.dev/builder/zh/api/config-tools.html#tools-pug)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/pug.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: sass
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.sass](https://modernjs.dev/builder/zh/api/config-tools.html#tools-sass)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/sass.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: styleLoader
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.styleLoader](https://modernjs.dev/builder/zh/api/config-tools.html#tools-styleloader)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/styleLoader.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: styledComponents
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.styledComponents](https://modernjs.dev/builder/zh/api/config-tools.html#tools-styledcomponents)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/styledComponents.md'
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: tools.swc
|
|
3
|
+
sidebar_label: swc
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
- 类型: `Object`
|
|
7
|
+
- 默认值: `undefined`
|
|
8
|
+
|
|
9
|
+
## 介绍
|
|
10
|
+
|
|
11
|
+
[SWC](https://swc.rs/) (Speedy Web Compiler) 是基于 `Rust` 语言编写的高性能 JavaScript 和 TypeScript 转译和压缩工具。在 Polyfill 和语法降级方面可以和 Babel 提供一致的能力,并且比 Babel 性能高出 10 倍不止。
|
|
12
|
+
|
|
13
|
+
Modern.js 提供了开箱即用的 SWC 插件,可以为你的 Web 应用提供语法降级、Polyfill 以及压缩,并且移植了一些额外常见的 Babel 插件。
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
使用前需要安装 `@modern-js/plugin-swc` 插件,安装完成后,会自动启用 SWC 编译和压缩能力。
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @modern-js/plugin-swc -D
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 配置项
|
|
24
|
+
|
|
25
|
+
你可以通过 `tools.swc` 配置项来设置 SWC 编译行为。
|
|
26
|
+
|
|
27
|
+
```js title="modern.config.ts"
|
|
28
|
+
import { defineConfig } from '@modern-js/app-tools';
|
|
29
|
+
|
|
30
|
+
export default defineConfig({
|
|
31
|
+
tools: {
|
|
32
|
+
swc: {
|
|
33
|
+
jsMinify: {
|
|
34
|
+
compress: {},
|
|
35
|
+
mangle: true,
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
完整配置项请参考 [Modern.js Builder - SWC 插件配置](https://modernjs.dev/builder/zh/plugins/plugin-swc.html#%E9%85%8D%E7%BD%AE)。
|
|
@@ -4,7 +4,7 @@ sidebar_label: terser
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.terser](https://modernjs.dev/builder/zh/api/config-tools.html#tools-terser)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/terser.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: tsChecker
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.tsChecker](https://modernjs.dev/builder/zh/api/config-tools.html#tools-tschecker)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/tsChecker.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: tsLoader
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.tsLoader](https://modernjs.dev/builder/zh/api/config-tools.html#tools-tsloader)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/tsLoader.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: webpackChain
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.webpackChain](https://modernjs.dev/builder/zh/api/config-tools.html#tools-webpackchain)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/webpackChain.md'
|
|
@@ -4,7 +4,7 @@ sidebar_label: webpack
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
:::info BUILDER
|
|
7
|
-
该配置为 Modern.js Builder
|
|
7
|
+
该配置为 Modern.js Builder 配置,详细信息可参考 [tools.webpack](https://modernjs.dev/builder/zh/api/config-tools.html#tools-webpack)。
|
|
8
8
|
:::
|
|
9
9
|
|
|
10
10
|
import Main from '@modern-js/builder-doc/zh/config/tools/webpack.md'
|
|
@@ -25,8 +25,8 @@ Modern.js 中还提供了基于浏览器 [UA](https://developer.mozilla.org/zh-C
|
|
|
25
25
|
可以通过微生成器开启该功能:
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
?
|
|
29
|
-
?
|
|
28
|
+
? 请选择你想要的操作 启用可选功能
|
|
29
|
+
? 启用可选功能 启用「基于 UA 的 Polyfill」功能
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
安装依赖后,配置 `output.polyfill` 为 `ua` 并且执行 `pnpm run build && pnpm run start` 启动服务器后,访问页面可以看到 HTML 产物中包含如下脚本:
|
|
@@ -40,42 +40,6 @@ Modern.js 中还提供了基于浏览器 [UA](https://developer.mozilla.org/zh-C
|
|
|
40
40
|
|
|
41
41
|

|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
## 差异化分发
|
|
45
|
-
|
|
46
|
-
Modern.js 提供了运行时基于浏览器 User Agent 的差异化分发方案, 设置 [`output.enableModernMode`](/docs/configure/app/output/enable-modern-mode) 后, 生产环境会自动构建出针对现代浏览器语法未降级的 JS 产物和针对旧版本浏览器带有 Polyfill 的 JS 产物:
|
|
47
|
-
|
|
48
|
-
```bash title="dist/static/js"
|
|
49
|
-
├── 370.95db0e84-es6.js
|
|
50
|
-
├── 370.95db0e84-es6.js.map
|
|
51
|
-
├── 370.ace5d8a0.js
|
|
52
|
-
├── 370.ace5d8a0.js.map
|
|
53
|
-
├── main.64eb3bc7-es6.js
|
|
54
|
-
├── main.64eb3bc7-es6.js.map
|
|
55
|
-
├── main.c8aab430.js
|
|
56
|
-
├── main.c8aab430.js.map
|
|
57
|
-
├── runtime-main.9ad9a46b-es6.js
|
|
58
|
-
├── runtime-main.9ad9a46b-es6.js.map
|
|
59
|
-
├── runtime-main.dccca6e0.js
|
|
60
|
-
└── runtime-main.dccca6e0.js.map
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
同时 HTML 也会构建出对应的 ES6 版本:
|
|
64
|
-
|
|
65
|
-
```js title="dist/html/main/index-es6.html"
|
|
66
|
-
<script defer="defer" src="/static/js/370.95db0e84-es6.js"></script>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
```js title="dist/html/main/index.html"
|
|
70
|
-
<script defer="defer" src="/static/js/370.ace5d8a0.js"></script>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
通过 `pnpm run build && pnpm run start` 启动服务器, 访问页面时,会根据浏览器信息决定返回 `index-es6.html` 还是 `index.html`。
|
|
74
|
-
|
|
75
|
-
:::info 注
|
|
76
|
-
内部目前使用 [@babel/compat-data](https://github.com/babel/babel/blob/main/packages/babel-compat-data/data/native-modules.json) 来判断具体浏览器是否支持 es6 语法。
|
|
77
|
-
:::
|
|
78
|
-
|
|
79
43
|
## Browserslist 配置
|
|
80
44
|
|
|
81
45
|
Modern.js 支持在项目根目录 `package.json` 文件中的 `browserslist` 字段(或单独的 `.browserslistrc` 文件)指定项目覆盖的目标浏览器范围。该值会被 [`@babel/preset-env`](https://babeljs.io/docs/en/babel-preset-env) 和 [`autoprefixer`](https://github.com/postcss/autoprefixer) 用来确定需要转换的 JavaScript 语法特性和需要添加的 CSS 浏览器前缀。
|
|
@@ -9,46 +9,50 @@ sidebar_position: 7
|
|
|
9
9
|
|
|
10
10
|
## 添加自定义行为
|
|
11
11
|
|
|
12
|
-
当 `index` 文件默认导出**函数**是,Modern.js 还是会根据 `runtime
|
|
12
|
+
当 `index` 文件默认导出**函数**是,Modern.js 还是会根据 `runtime` 的设置情况生成 `createApp` 包裹后的代码。在渲染过程中,将 `createApp` 包裹后的组件作为参数传递给 `index` 文件导出的函数,这样开发者可以自定义将组件挂载到 DOM 节点上,或在挂载前添加自定义行为。例如:
|
|
13
13
|
|
|
14
14
|
```js title=src/index.jsx
|
|
15
|
+
import ReactDOM from 'react-dom/client'
|
|
15
16
|
import { bootstrap } from '@modern-js/runtime';
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
|
|
19
|
+
export default (App: React.ComponentType) => {
|
|
18
20
|
// do something before bootstrap...
|
|
19
|
-
bootstrap(App, 'root');
|
|
21
|
+
bootstrap(App, 'root', undefined, ReactDOM);
|
|
20
22
|
};
|
|
21
23
|
```
|
|
22
24
|
|
|
25
|
+
:::warning
|
|
26
|
+
由于 bootstrap 函数需要兼容 React17 和 React18 的用法,调用 bootstrap 函数时需要手动传入 ReactDOM 参数。
|
|
27
|
+
:::
|
|
28
|
+
|
|
23
29
|
Modern.js 生成的文件内容如下:
|
|
24
30
|
|
|
25
31
|
```js
|
|
26
|
-
import customRender from '@/src/index.js';
|
|
27
|
-
import { createApp, bootstrap } from '@modern-js/runtime';
|
|
28
32
|
import React from 'react';
|
|
29
|
-
import
|
|
33
|
+
import ReactDOM from 'react-dom/client';
|
|
34
|
+
import customBootstrap from '@_edenx_src/index.tsx';
|
|
35
|
+
import App from '@_edenx_src/App';
|
|
36
|
+
import { router, state } from '@edenx/runtime/plugins';
|
|
30
37
|
|
|
31
|
-
const IS_BROWSER = typeof window !== 'undefined';
|
|
38
|
+
const IS_BROWSER = typeof window !== 'undefined' && window.name !== 'nodejs';
|
|
32
39
|
const MOUNT_ID = 'root';
|
|
33
40
|
|
|
34
41
|
let AppWrapper = null;
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
function render() {
|
|
37
44
|
AppWrapper = createApp({
|
|
38
45
|
// runtime 的插件参数...
|
|
39
|
-
})(App)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
})(App)
|
|
47
|
+
if (IS_BROWSER) {
|
|
48
|
+
customBootstrap(AppWrapper);
|
|
49
|
+
}
|
|
50
|
+
return AppWrapper
|
|
51
|
+
}
|
|
44
52
|
|
|
45
|
-
|
|
53
|
+
AppWrapper = render();
|
|
46
54
|
|
|
47
|
-
|
|
48
|
-
module.hot.accept('<path>/src/App', () => {
|
|
49
|
-
renderApp();
|
|
50
|
-
});
|
|
51
|
-
}
|
|
55
|
+
export default AppWrapper;;
|
|
52
56
|
```
|
|
53
57
|
|
|
54
58
|
## 完全接管 Webpack 入口
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
2
|
+
title: 静态站点生成(SSG)
|
|
3
3
|
sidebar_position: 4
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -9,7 +9,7 @@ SSG(Static Site Generation)是一种基于数据与模板,在构建时渲
|
|
|
9
9
|
SSG 是构建阶段的解决方案,因此仅对生产环境有效。通过 `dev` 命令运行时,表现效果与 SSR 相同。
|
|
10
10
|
:::
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
我们首先需要执行 `pnpm run new` 启用 SSG 功能:
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
? 请选择你想要的操作 启用可选功能
|
|
@@ -25,22 +25,37 @@ SSG 在**约定式路由**和**自控式路由**下的使用方式不同。
|
|
|
25
25
|
例如,以下是一个使用约定式路由的项目目录结构:
|
|
26
26
|
|
|
27
27
|
```
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
│
|
|
31
|
-
│
|
|
32
|
-
│
|
|
28
|
+
.
|
|
29
|
+
├── src
|
|
30
|
+
│ └── routes
|
|
31
|
+
│ ├── layout.tsx
|
|
32
|
+
│ ├── page.tsx
|
|
33
|
+
│ └── user
|
|
34
|
+
│ ├── layout.tsx
|
|
35
|
+
│ ├── page.tsx
|
|
36
|
+
│ └── profile
|
|
37
|
+
│ └── page.tsx
|
|
33
38
|
```
|
|
34
39
|
|
|
35
|
-
|
|
40
|
+
上述文件目录将会生成以下三条路由:
|
|
36
41
|
|
|
37
|
-
|
|
42
|
+
- `/`
|
|
43
|
+
- `/user`
|
|
44
|
+
- `/user/profile`
|
|
45
|
+
|
|
46
|
+
:::note
|
|
47
|
+
如果还不了解约定式路由的规则,可以先查看[路由](/docs/guides/basic-features/routes)。
|
|
48
|
+
:::
|
|
49
|
+
|
|
50
|
+
在 `src/routes/page.tsx` 中添加组件代码:
|
|
51
|
+
|
|
52
|
+
```jsx title="src/routes/page.tsx"
|
|
38
53
|
export default () => {
|
|
39
|
-
return <div>
|
|
54
|
+
return <div>Index Page</div>
|
|
40
55
|
}
|
|
41
56
|
```
|
|
42
57
|
|
|
43
|
-
SSG
|
|
58
|
+
SSG 也是在 Node.js 环境渲染页面,因此我们可以在**开发阶段开启 SSR**,提前在暴露代码问题,验证 SSG 渲染效果:
|
|
44
59
|
|
|
45
60
|
```typescript title="modern.config.ts"
|
|
46
61
|
export default defineConfig({
|
|
@@ -50,13 +65,11 @@ export default defineConfig({
|
|
|
50
65
|
}
|
|
51
66
|
```
|
|
52
67
|
|
|
53
|
-
在项目根路径下执行 `pnpm run dev` 命令,查看 `dist/` 目录,此时只生成一个 HTML
|
|
54
|
-
|
|
55
|
-

|
|
68
|
+
在项目根路径下执行 `pnpm run dev` 命令,查看 `dist/` 目录,此时只生成一个 HTML 文件 `main/index.html`。
|
|
56
69
|
|
|
57
|
-
在项目根路径下执行 `pnpm run build` 命令,构建完成后,查看 `dist/` 目录,此时生成 `main/index.html`、`main/
|
|
70
|
+
在项目根路径下执行 `pnpm run build` 命令,构建完成后,查看 `dist/` 目录,此时生成 `main/index.html`、`main/user/index.html` 和 `main/user/profile/index.html` 三个 HTML 文件,内容分别对应上述三条路由。
|
|
58
71
|
|
|
59
|
-
|
|
72
|
+
**约定式路由**中的每一条路由,都会生成一个单独的 HTML 文件。查看 `main/index.html`,可以发现包含 `Index Page` 的文本内容,这正是 SSG 的效果。
|
|
60
73
|
|
|
61
74
|
执行 `pnpm run start` 启动项目后,访问页面,在浏览器我们工具的 Network 窗口,查看请求返回的文档,文档包含组件渲染后的完整页面内容。
|
|
62
75
|
|
|
@@ -64,45 +77,46 @@ export default defineConfig({
|
|
|
64
77
|
|
|
65
78
|
**自控式路由**是通过组件代码自定义路由,需要应用运行起来才能获取准确的路由信息。因此,无法开箱即用的使用 SSG 功能。此时需要用户提前告知 Modern.js 框架,哪些路由需要开启 SSG 功能。
|
|
66
79
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
import {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<Switch>
|
|
74
|
-
<Route path="/" exact={true}>
|
|
75
|
-
<div>Home</div>
|
|
76
|
-
</Route>
|
|
77
|
-
<Route path="/foo" exact={true}>
|
|
78
|
-
<div>Foo</div>
|
|
79
|
-
</Route>
|
|
80
|
-
</Switch>
|
|
81
|
-
);
|
|
82
|
-
```
|
|
80
|
+
例如有以下代码,包含多条路由,设置 `output.ssg` 为 `true` 时,默认只会渲染入口路由即 `/`:
|
|
81
|
+
|
|
82
|
+
```tsx title="src/App.tsx"
|
|
83
|
+
import { useRuntimeContext } from '@modern-js/runtime';
|
|
84
|
+
import { Routes, Route, BrowserRouter } from '@modern-js/runtime/router';
|
|
85
|
+
import { StaticRouter } from '@modern-js/runtime/router/server';
|
|
83
86
|
|
|
84
|
-
|
|
87
|
+
const Router = typeof window === 'undefined' ? StaticRouter : BrowserRouter;
|
|
88
|
+
|
|
89
|
+
export default () => {
|
|
90
|
+
const { context } = useRuntimeContext();
|
|
91
|
+
return (
|
|
92
|
+
<Router location={context.request.pathname}>
|
|
93
|
+
<Routes>
|
|
94
|
+
<Route index element={<div>index</div>} />
|
|
95
|
+
<Route path="about" element={<div>about</div>} />
|
|
96
|
+
</Routes>
|
|
97
|
+
</Router>
|
|
98
|
+
);
|
|
99
|
+
};
|
|
100
|
+
```
|
|
85
101
|
|
|
86
|
-
|
|
102
|
+
如果我们希望同时开启 `/about` 的 SSG 功能,可以配置 `output.ssg`,告知 Modern.js 开启指定路由的 SSG 功能。
|
|
87
103
|
|
|
88
104
|
```typescript title="modern.config.ts"
|
|
89
105
|
export default defineConfig({
|
|
90
106
|
output: {
|
|
91
107
|
ssg: {
|
|
92
|
-
routes: ['/', '/
|
|
108
|
+
routes: ['/', '/about'],
|
|
93
109
|
},
|
|
94
110
|
},
|
|
95
111
|
})
|
|
96
112
|
```
|
|
97
113
|
|
|
98
|
-
执行 `pnpm run build` 与 `pnpm run start` 后,访问 `http://localhost:8080/
|
|
99
|
-
|
|
100
|
-
查看构建产物文件,可以看到 `dist/` 目录中,在默认的 `main` 入口产物目录下,新增一个 `foo.html` 文件:
|
|
114
|
+
执行 `pnpm run build` 与 `pnpm run start` 后,访问 `http://localhost:8080/about`,在 Preview 视图中可以看到页面已经完成渲染。
|
|
101
115
|
|
|
102
|
-
|
|
116
|
+
查看构建产物文件,可以看到 `dist/` 目录中,新增了一个 `main/about/index.html` 文件。
|
|
103
117
|
|
|
104
118
|
:::info
|
|
105
|
-
|
|
119
|
+
以上仅介绍了单入口的情况,更多相关内容可以查看 [API 文档](/docs/configure/app/output/ssg)。
|
|
106
120
|
:::
|
|
107
121
|
|
|
108
122
|
### 获取数据
|
|
@@ -116,36 +130,33 @@ export default defineConfig({
|
|
|
116
130
|
- 在开发阶段,不管 `useLoader` 是否配置 `{ static: true }`,函数都会在 SSR 时获取数据。
|
|
117
131
|
:::
|
|
118
132
|
|
|
119
|
-
修改上述 `App.ts` 的代码为:
|
|
133
|
+
修改上述 `src/App.ts` 的代码为:
|
|
120
134
|
|
|
121
|
-
```
|
|
122
|
-
import {
|
|
123
|
-
import {
|
|
135
|
+
```tsx title="App.ts"
|
|
136
|
+
import { useRuntimeContext, useLoader } from '@modern-js/runtime';
|
|
137
|
+
import { Routes, Route, BrowserRouter } from '@modern-js/runtime/router';
|
|
138
|
+
import { StaticRouter } from '@modern-js/runtime/router/server';
|
|
139
|
+
|
|
140
|
+
const Router = typeof window === 'undefined' ? StaticRouter : BrowserRouter;
|
|
124
141
|
|
|
125
142
|
export default () => {
|
|
126
|
-
const {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
static: true,
|
|
132
|
-
params: 'foo',
|
|
133
|
-
},
|
|
134
|
-
);
|
|
143
|
+
const { context } = useRuntimeContext();
|
|
144
|
+
|
|
145
|
+
const { data } = useLoader(async () => ({
|
|
146
|
+
message: Math.random(),
|
|
147
|
+
}), { static: true });
|
|
135
148
|
|
|
136
149
|
return (
|
|
137
|
-
<
|
|
138
|
-
<
|
|
139
|
-
<div>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
</Route>
|
|
144
|
-
</Switch>
|
|
150
|
+
<Router location={context.request.pathname}>
|
|
151
|
+
<Routes>
|
|
152
|
+
<Route index element={<div>index</div>} />
|
|
153
|
+
<Route path="about" element={<div>about, {data?.message}</div>} />
|
|
154
|
+
</Routes>
|
|
155
|
+
</Router>
|
|
145
156
|
);
|
|
146
157
|
};
|
|
147
158
|
```
|
|
148
159
|
|
|
149
160
|
执行 `pnpm run dev`,重复刷新页面,可以看到 `/foo` 页面的渲染结果不断发生变化,说明数据是在请求时获取的。
|
|
150
161
|
|
|
151
|
-
重新执行 `pnpm run build` 后,执行 `pnpm run start
|
|
162
|
+
重新执行 `pnpm run build` 后,执行 `pnpm run start`,重复刷新页面,发现页面渲染结果始终保持同样的内容,数据在请求时不会再次获取,说明页面在编译时已经完成渲染。
|