@modern-js/main-doc 2.0.0-beta.2 → 2.0.0-beta.4
Sign up to get free protection for your applications and to get access to all the features.
- 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`,重复刷新页面,发现页面渲染结果始终保持同样的内容,数据在请求时不会再次获取,说明页面在编译时已经完成渲染。
|