@modern-js/main-doc 2.0.0-beta.1 → 2.0.0-beta.3
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/build.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +1 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/test.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/overview.md +1 -1
- 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/auto-actions.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/connect.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-store.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/handle-effect.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-local-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-static-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +1 -23
- package/en/docusaurus-plugin-content-docs/current/components/command-tip.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-migration.md +1 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-tip.md +5 -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 +12 -0
- 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/runtime/router.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/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/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/topic-detail/generator/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/app.md +152 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/git.md +49 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/handlebars.md +58 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/json.md +59 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/npm.md +49 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/develop.md +52 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/introduce.md +46 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/structure.md +87 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/common.md +106 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/module.md +39 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/monorepo.md +28 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/mwa.md +89 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/abstract.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addFile.md +52 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addHelper.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addManyFile.md +58 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addPartial.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/introduce.md +38 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmDir.md +24 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmFile.md +24 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +54 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +33 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.md +20 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/initGitRepo.md +16 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/isInGitRepo.md +16 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/afterForged.md +35 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/onForged.md +36 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/isFileExit.md +22 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/locale.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/readDir.md +22 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +57 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInput.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInputValue.md +30 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/type.md +65 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/introduce.md +91 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createElement.md +33 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createSubProject.md +35 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/enableFunc.md +44 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/introduce.md +15 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/install.md +18 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/develop.md +125 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/use.md +61 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/project.md +118 -0
- package/en/docusaurus-plugin-content-docs/current.json +57 -21
- package/package.json +3 -3
- package/scripts/config.ts +2 -2
- package/scripts/summary.en.json +1 -1
- package/scripts/summary.zh.json +1 -1
- package/zh/apis/app/commands/new.md +0 -3
- package/zh/apis/app/hooks/server/test.md +2 -2
- 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/apis/app/runtime/web-server/hook.md +4 -4
- package/zh/apis/app/runtime/web-server/middleware.md +4 -4
- 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 +12 -0
- 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/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/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/_category_.json +5 -1
- package/zh/guides/advanced-features/bff/bff-proxy.md +5 -3
- package/zh/guides/advanced-features/bff/frameworks.md +72 -51
- package/zh/guides/advanced-features/bff/function.md +16 -30
- package/zh/guides/advanced-features/bff/index.md +20 -0
- package/zh/guides/advanced-features/bff/type.md +43 -0
- package/zh/guides/advanced-features/custom-app.md +69 -1
- package/zh/guides/advanced-features/ssg.md +74 -63
- package/zh/guides/advanced-features/ssr.md +74 -11
- package/zh/guides/advanced-features/web-server.md +21 -110
- 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/data-fetch.md +62 -1
- package/zh/guides/basic-features/env-vars.md +122 -41
- package/zh/guides/basic-features/routes.md +264 -0
- package/zh/guides/concept/entries.md +112 -0
- package/zh/guides/concept/lifecycle.md +10 -0
- package/zh/guides/get-started/quick-start.md +199 -1
- package/zh/guides/get-started/upgrade.md +75 -1
- 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/generator/codesmith/api/_category_.json +4 -0
- package/zh/guides/topic-detail/generator/codesmith/api/app.md +152 -0
- package/zh/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
- package/zh/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
- package/zh/guides/topic-detail/generator/codesmith/api/git.md +48 -0
- package/zh/guides/topic-detail/generator/codesmith/api/handlebars.md +56 -0
- package/zh/guides/topic-detail/generator/codesmith/api/json.md +58 -0
- package/zh/guides/topic-detail/generator/codesmith/api/npm.md +45 -0
- package/zh/guides/topic-detail/generator/codesmith/develop.md +52 -0
- package/zh/guides/topic-detail/generator/codesmith/introduce.md +42 -1
- package/zh/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
- package/zh/guides/topic-detail/generator/codesmith/structure.md +86 -0
- package/zh/guides/topic-detail/generator/config/mwa.md +4 -8
- package/zh/guides/topic-detail/generator/plugin/api/file/addFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/addHelper.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/addPartial.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/introduce.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/rmDir.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/rmFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +3 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.md +3 -3
- package/zh/guides/topic-detail/generator/plugin/api/hook/onForged.md +3 -3
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/type.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/createElement.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/npm/install.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/develop.md +11 -7
- package/zh/guides/topic-detail/model/quick-start.md +4 -0
- package/zh/guides/topic-detail/monorepo/sub-project-interface.md +0 -2
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +2 -2
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +2 -2
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +5 -2
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -8
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +12 -6
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +2 -4
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +1 -1
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +44 -50
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +1 -1
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +4 -4
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +8 -21
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +37 -13
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +3 -13
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +1 -21
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +9 -9
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +9 -14
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +7 -7
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +1 -1
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +2 -2
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +8 -17
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +24 -19
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +31 -35
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +4 -9
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +66 -63
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +35 -33
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +28 -102
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +4 -6
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +3 -3
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +21 -20
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +2 -2
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +34 -68
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +40 -37
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +6 -4
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +2 -2
- package/zh/tutorials/foundations/introduction.md +1 -1
- 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/env.md +0 -72
- 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/zh/apis/app/runtime/default-alias.md +0 -23
- package/zh/apis/app/runtime/env.md +0 -70
- 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/components/deploy.md +0 -60
- package/zh/components/dev-ide.md +0 -1
- package/zh/components/entry-name.md +0 -15
- package/zh/components/env-prepare.md +0 -1
- package/zh/components/launch-bff-choices.md +0 -6
- package/zh/guides/advanced-features/bff/bff-server.md +0 -142
- package/zh/guides/advanced-features/typescript.md +0 -4
- package/zh/guides/basic-features/image.md +0 -43
- package/zh/guides/concept/integrated.md +0 -4
- package/zh/guides/concept/solutions.md +0 -4
- package/zh/guides/topic-detail/compile-speed.md +0 -182
- package/zh/guides/topic-detail/framework-plugin/abstract.md +0 -27
- package/zh/guides/troubleshooting/compile.md +0 -379
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -318
@@ -3,9 +3,99 @@ title: 环境变量
|
|
3
3
|
sidebar_position: 7
|
4
4
|
---
|
5
5
|
|
6
|
+
Modern.js 提供了对环境变量的支持,包含内置的环境变量和自定义的环境变量。
|
7
|
+
|
8
|
+
## 内置的环境变量
|
9
|
+
|
10
|
+
### NODE_ENV
|
11
|
+
|
12
|
+
表示当前的执行环境,是**只读的**的环境变量,其值在不同的执行命令下具有不同的值:
|
13
|
+
|
14
|
+
- `production`:执行 `modern build`、`modern preview` 命令时的默认值。
|
15
|
+
- `test`:执行 `modern test` 命令时的默认值。
|
16
|
+
- `development`:执行 `modern dev` 命令时的默认值,同时也是其他所有情况下的默认值。
|
17
|
+
|
18
|
+
### MODERN_ENV
|
19
|
+
|
20
|
+
手动设置当前的执行环境。除了上述 NODE_ENV 对应的值之外,这里支持自定义环境名称,例如 `staging`、`boe` 等。
|
21
|
+
|
22
|
+
:::tip
|
23
|
+
MODERN_ENV 的优先级高于 NODE_ENV。
|
24
|
+
:::
|
25
|
+
|
26
|
+
### MODERN_TARGET
|
27
|
+
|
28
|
+
使用 `@modern-js/runtime` 时会自动注入,用于区分 SSR 与 CSR 环境。开发者可以自行在代码中判断,构建时会默认移除 dead code。
|
29
|
+
|
30
|
+
```ts title="App.tsx"
|
31
|
+
function App() {
|
32
|
+
if (process.env.MODERN_TARGET === 'browser') {
|
33
|
+
console.log(window.innerHeight);
|
34
|
+
};
|
35
|
+
};
|
36
|
+
```
|
37
|
+
|
38
|
+
开发环境打包后,可以看到 SSR 产物和 CSR 产物如下:
|
39
|
+
|
40
|
+
```js title="dist/bundles/main.js"
|
41
|
+
function App() {
|
42
|
+
if (false) {}
|
43
|
+
}
|
44
|
+
```
|
45
|
+
|
46
|
+
```js title="dist/static/main.js"
|
47
|
+
function App() {
|
48
|
+
if (true) {
|
49
|
+
console.log(window.innerHeight);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
```
|
53
|
+
|
54
|
+
:::note
|
55
|
+
在生产环境,会将 dead code 移除,例如上述 `if` 语句。
|
56
|
+
:::
|
57
|
+
|
58
|
+
这种方式可以针对不同客户端提供不同的产物,保证代码体积最小化。也能方便处理不同环境下,代码中的一些副作用,
|
59
|
+
|
60
|
+
## 自定义环境变量
|
61
|
+
|
62
|
+
环境变量支持通过 `shell` 和 `.env` 文件两种方式指定。
|
63
|
+
|
64
|
+
### 通过 `shell` 指定
|
65
|
+
|
66
|
+
在命令前添加自定义环境变量:
|
67
|
+
|
68
|
+
```shell
|
69
|
+
REACT_APP_FOO=123 BAR=456 pnpm run dev
|
70
|
+
```
|
71
|
+
|
72
|
+
### 通过 `.env` 文件指定
|
73
|
+
|
74
|
+
在项目根目录创建 `.env` 文件,并添加自定义环境变量,这些环境变量会默认添加到启动项目的 Node.js 进程中,例如:
|
75
|
+
|
76
|
+
```env
|
77
|
+
REACT_APP_FOO=123
|
78
|
+
BAR=456
|
79
|
+
```
|
80
|
+
|
81
|
+
`.env` 文件遵循以下规则加载规则:
|
82
|
+
|
83
|
+
* `.env`:默认加载。
|
84
|
+
* `.env.{ MODERN_ENV | NODE_ENV }`:针对具体环境设置环境变量,会覆盖 `.env` 中的设置。
|
85
|
+
|
86
|
+
当需要根据环境使用不同的配置时,可以把环境变量定义到对应环境名称的 `.env` 文件中,并在启动项目时手动设置执行环境。例如使用以下命令启动项目时,将会加载 `.env` 和 `.env.staging`:
|
87
|
+
|
88
|
+
```shell
|
89
|
+
MODERN_ENV=staging pnpm run dev
|
90
|
+
```
|
91
|
+
|
6
92
|
## 使用环境变量
|
7
93
|
|
8
|
-
|
94
|
+
### 约定命名
|
95
|
+
|
96
|
+
在前端代码中可以直接使用 `NODE_ENV` 环境变量。另外,以 `MODERN_` 开头的自定义环境变量,也可以在代码中直接使用。
|
97
|
+
|
98
|
+
例如:
|
9
99
|
|
10
100
|
```js
|
11
101
|
if (process.env.NODE_ENV === 'development') {
|
@@ -13,7 +103,7 @@ if (process.env.NODE_ENV === 'development') {
|
|
13
103
|
}
|
14
104
|
```
|
15
105
|
|
16
|
-
执行 `dev`
|
106
|
+
执行 `pnpm run dev` 命令之后可以看到如下构建产物:
|
17
107
|
|
18
108
|
```js
|
19
109
|
if (true) {
|
@@ -21,62 +111,53 @@ if (true) {
|
|
21
111
|
}
|
22
112
|
```
|
23
113
|
|
24
|
-
同样在自定义的 HTML
|
114
|
+
同样在自定义的 HTML 模板中,也可以直接使用这类环境变量。如 `config/html/head.html`:
|
25
115
|
|
26
116
|
```js
|
27
117
|
<meta name="test" content="<process.env.NODE_ENV>">
|
28
118
|
```
|
29
119
|
|
30
|
-
|
120
|
+
### 任意命名
|
121
|
+
|
122
|
+
如果需要在代码中使用任意名称的环境变量,可以在 [`source.globalVars`](/docs/configure/app/source/global-vars) 配置指定, 例如:
|
123
|
+
|
31
124
|
```typescript title="modern.config.ts"
|
32
125
|
export default defineConfig({
|
33
126
|
source: {
|
34
|
-
|
35
|
-
|
36
|
-
}
|
37
|
-
|
38
|
-
|
39
|
-
`VERSION` 环境变量需要在编译之前设置好, 可以在执行命令时添加:
|
40
|
-
|
41
|
-
```bash
|
42
|
-
// linux, macOS
|
43
|
-
$ VERSION=1.0.0 npm run dev
|
44
|
-
|
45
|
-
// windows
|
46
|
-
$ set VERSION=1.0.0&&npm run dev
|
47
|
-
```
|
48
|
-
|
49
|
-
Modern.js 也支持在 `.env` 文件中定义环境变量:
|
50
|
-
|
51
|
-
```js title=".env"
|
52
|
-
VERSION=1.0.0
|
127
|
+
globalVars: {
|
128
|
+
'process.env.VERSION': process.env.VERSION,
|
129
|
+
}.
|
130
|
+
},
|
131
|
+
});
|
53
132
|
```
|
54
133
|
|
55
|
-
|
134
|
+
此时,在代码中的 `process.env.VERSION`,将会被替换为环境变量中 `VERSION` 的值。
|
56
135
|
|
57
|
-
|
58
|
-
|
136
|
+
:::note
|
137
|
+
`source.globalVars` 也支持将其他表达式或字符串替换为指定的值,不仅限于环境变量。
|
138
|
+
:::
|
59
139
|
|
140
|
+
## 使用全局替换
|
60
141
|
|
61
|
-
|
142
|
+
除了环境变量,Modern.js 也支持将代码中的变量替换成其它值或者表达式,可以用于在代码逻辑中区分开发环境与生产环境等场景。
|
62
143
|
|
63
|
-
|
144
|
+
例如将代码中的 `TWO` 转换为 `1 + 1` 的表达式:
|
64
145
|
|
65
|
-
```
|
66
|
-
export default
|
146
|
+
```ts
|
147
|
+
export default {
|
67
148
|
source: {
|
68
|
-
|
69
|
-
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
149
|
+
define: {
|
150
|
+
TWO: '1 + 1',
|
151
|
+
},
|
152
|
+
},
|
153
|
+
};
|
73
154
|
```
|
74
155
|
|
75
|
-
|
156
|
+
```ts
|
157
|
+
const foo = TWO;
|
76
158
|
|
77
|
-
|
78
|
-
|
79
|
-
declare const VERSION: string;
|
80
|
-
|
81
|
-
const a = VERSION;
|
159
|
+
// ⬇️ Turn into being...
|
160
|
+
const foo = 1 + 1;
|
82
161
|
```
|
162
|
+
|
163
|
+
在大多数情况下,`source.globalVars` 已经能满足替换变量的需求。但 `source.globalVars` 传入的值都会默认被 JSON 序列化,因此无法做出像上面例子中 `1 + 1` 的替换,此时就需要使用 [`source.define`](/docs/configure/app/source/define)。
|
@@ -2,3 +2,267 @@
|
|
2
2
|
title: 路由
|
3
3
|
sidebar_position: 1
|
4
4
|
---
|
5
|
+
|
6
|
+
Modern.js 内置了对 [React Router 6](https://reactrouter.com/en/main) 的**部分**支持,并提供了多种类型的路由模式。根据不同[入口](/docs/guides/concept/entries)类型,将路由分为三种模式,分别是**约定式路由**,**自控式路由**和**其他路由方案**。
|
7
|
+
|
8
|
+
:::note
|
9
|
+
本小节提到的路由,都是客户端路由,即 SPA 路由。
|
10
|
+
:::
|
11
|
+
|
12
|
+
## 约定式路由
|
13
|
+
|
14
|
+
以 `routes/` 为约定的入口,Modern.js 会自动基于文件系统,生成对应的路由结构。
|
15
|
+
|
16
|
+
Modern.js 支持了业界流行的约定路由模式:**嵌套路由**,使用嵌套路由时,页面的路由 与 UI 结构是相呼应的,我们将会详细介绍这种路由模式。
|
17
|
+
|
18
|
+
```
|
19
|
+
/user/johnny/profile /user/johnny/posts
|
20
|
+
+------------------+ +-----------------+
|
21
|
+
| User | | User |
|
22
|
+
| +--------------+ | | +-------------+ |
|
23
|
+
| | Profile | | +------------> | | Posts | |
|
24
|
+
| | | | | | | |
|
25
|
+
| +--------------+ | | +-------------+ |
|
26
|
+
+------------------+ +-----------------+
|
27
|
+
```
|
28
|
+
|
29
|
+
### 路由文件约定
|
30
|
+
|
31
|
+
`routes/` 目录下有两个文件约定 `layout.[jt]sx` 和 `page.[jt]sx`(后面简写为 `.tsx`)。这两个文件决定了应用的布局层次,其中 `layout.tsx` 中作为布局组件,`page.tsx` 作为内容组件,是整个路由表的叶子节点。
|
32
|
+
|
33
|
+
例如,这里 `routes/layout.tsx` 会作为 `/` 路由下所有组件的布局组件使用:
|
34
|
+
|
35
|
+
```bash
|
36
|
+
.
|
37
|
+
└── routes
|
38
|
+
├── layout.tsx
|
39
|
+
├── page.tsx
|
40
|
+
└── user
|
41
|
+
├── layout.tsx
|
42
|
+
└── page.tsx
|
43
|
+
```
|
44
|
+
|
45
|
+
当路由为 `/` 时,会有以下 UI 布局:
|
46
|
+
|
47
|
+
```tsx
|
48
|
+
<Layout>
|
49
|
+
<Page />
|
50
|
+
</Layout>
|
51
|
+
```
|
52
|
+
|
53
|
+
同样,`routes/user/layout.tsx` 会作为 `/user` 路由下所有组件的布局组件使用。当路由为 `/user` 时, 会有以下 UI 布局:
|
54
|
+
|
55
|
+
```tsx
|
56
|
+
<Layout>
|
57
|
+
<UserLayout>
|
58
|
+
<UserPage>
|
59
|
+
<UserLayout>
|
60
|
+
</Layout>
|
61
|
+
```
|
62
|
+
|
63
|
+
#### Layout
|
64
|
+
|
65
|
+
`<Layout>` 组件是指 `routes/` 目录下所有 `layout.tsx` 文件,它们表示对应路由片段的布局,使用 `<Outlet>` 表示子组件。
|
66
|
+
|
67
|
+
:::note
|
68
|
+
`<Outlet>` 是 React Router 6 中新的 API,详情可以查看 [Outlet](https://reactrouter.com/en/main/components/outlet#outlet).
|
69
|
+
:::
|
70
|
+
|
71
|
+
为了方便介绍 `<Layout>` 与 `<Outlet>` 的关系,以下面的文件目录举例:
|
72
|
+
|
73
|
+
```bash
|
74
|
+
.
|
75
|
+
└── routes
|
76
|
+
├── blog
|
77
|
+
│ └── page.tsx
|
78
|
+
├── layout.tsx
|
79
|
+
├── page.tsx
|
80
|
+
└── user
|
81
|
+
├── layout.tsx
|
82
|
+
└── page.tsx
|
83
|
+
```
|
84
|
+
|
85
|
+
1. 当路由为 `/` 时,`routes/layout.tsx` 中的 `<Outlet>` 代表的是 `routes/page.tsx` 中导出的组件,生成以下 UI 结构:
|
86
|
+
|
87
|
+
```tsx
|
88
|
+
<Layout>
|
89
|
+
<Page />
|
90
|
+
</Layout>
|
91
|
+
```
|
92
|
+
|
93
|
+
2. 当路由为 `/blog` 时,`routes/layout.tsx` 中的 `<Outlet>` 代表的是 `routes/blog/page.tsx` 中导出的组件,生成以下 UI 结构:
|
94
|
+
```tsx
|
95
|
+
<Layout>
|
96
|
+
<BlogPage />
|
97
|
+
</Layout>
|
98
|
+
```
|
99
|
+
|
100
|
+
3. 当路由为 `/user` 时,`routes/layout.tsx` 中的 `<Outlet>` 代表的是 `routes/user/layout.tsx` 中导出的组件。`routes/user/layout.tsx` 中的 `<Outlet>` 代表的是 `routes/user/page.tsx` 中导出的组件。生成以下 UI 结构:
|
101
|
+
|
102
|
+
```tsx
|
103
|
+
<Layout>
|
104
|
+
<UserLayout>
|
105
|
+
<UserPage>
|
106
|
+
<UserLayout>
|
107
|
+
</Layout>
|
108
|
+
```
|
109
|
+
|
110
|
+
总结而言,如果子路由的文件目录下存在 `layout.tsx`,上一级 `layout.tsx` 中的 `<Outlet>` 即为子路由文件目录下的 `layout.tsx` ,否则为子路由文件目录下的 `page.tsx`。
|
111
|
+
|
112
|
+
#### Page
|
113
|
+
|
114
|
+
所有的路由,理论上都应该由 `<Page>` 组件结束。在 `page.tsx` 文件内,如果开发者引入 `<Outlet>` 组件,不会有任何效果。
|
115
|
+
|
116
|
+
### 动态路由
|
117
|
+
|
118
|
+
通过 `[]` 命名的文件目录,生成的路由会作为动态路由。例如以下文件目录:
|
119
|
+
|
120
|
+
```
|
121
|
+
└── routes
|
122
|
+
├── [id]
|
123
|
+
│ └── page.tsx
|
124
|
+
├── blog
|
125
|
+
│ └── page.tsx
|
126
|
+
└── page.tsx
|
127
|
+
```
|
128
|
+
|
129
|
+
`routes/[id]/page.tsx` 文件会转为 `/:id` 路由。除了可以确切匹配的 `/blog` 路由,其他所有 `/xxx` 都会匹配到该路由。
|
130
|
+
|
131
|
+
在组件中,可以通过 [useParams](/docs/apis/app/runtime/router/#useparams) 获取对应命名的参数。
|
132
|
+
|
133
|
+
### 无路径布局
|
134
|
+
|
135
|
+
当目录名以 __ 开头时,对应的目录名不会转换为实际的路由路径,例如以下文件目录:
|
136
|
+
|
137
|
+
```
|
138
|
+
.
|
139
|
+
└── routes
|
140
|
+
├── __auth
|
141
|
+
│ ├── layout.tsx
|
142
|
+
│ ├── login
|
143
|
+
│ │ └── page.tsx
|
144
|
+
│ └── signup
|
145
|
+
│ └── page.tsx
|
146
|
+
├── layout.tsx
|
147
|
+
└── page.tsx
|
148
|
+
```
|
149
|
+
|
150
|
+
Modern.js 会生成 `/login` 和 `/sign` 两条路由,`__auth/layout.tsx` 组件会作为 `login/page.tsx` 和 `signup/page.tsx` 的布局组件,但__auth 不会作为路由路径片段。
|
151
|
+
|
152
|
+
当需要为某些类型的路由,做独立的布局,或是想要将路由做归类时,这一功能非常有用。
|
153
|
+
|
154
|
+
### 无布局路径
|
155
|
+
|
156
|
+
有些情况下,项目需要较为复杂的路由,但这些路由又不存在独立的 UI 布局,如果像普通文件目录那边创建路由会导致目录层级较深。
|
157
|
+
|
158
|
+
因此 Modern.js 支持了通过 `.` 来分割路由片段,代替文件目录。例如,当需要 `/user/profile/2022/edit` 时,可以直接创建如下文件:
|
159
|
+
|
160
|
+
```
|
161
|
+
└── routes
|
162
|
+
├── user.profile.[id].edit
|
163
|
+
│ └── page.tsx
|
164
|
+
├── layout.tsx
|
165
|
+
└── page.tsx
|
166
|
+
```
|
167
|
+
|
168
|
+
访问路由时,将得到如下 UI 布局:
|
169
|
+
|
170
|
+
```tsx
|
171
|
+
<RootLayout>
|
172
|
+
<UserProfileEdit /> // routes/user.profile.[id].edit/page.tsx
|
173
|
+
</RootLayout>
|
174
|
+
```
|
175
|
+
|
176
|
+
### Loading
|
177
|
+
|
178
|
+
`routes/` 下每一层目录中,开发者可以创建 `loading.tsx` 文件,默认导出一个 `<Loading>` 组件。
|
179
|
+
|
180
|
+
当路由目录下存在该组件时,这一级子路由下所有的路由切换时,都会以该 `<Loading>` 组件作为 JS Chunk 加载时的 Fallback UI。当该目录下未定义 `layout.tsx` 文件时,`<Loading>` 组件不会生效。例如以下文件目录:
|
181
|
+
|
182
|
+
```bash
|
183
|
+
.
|
184
|
+
└── routes
|
185
|
+
├── blog
|
186
|
+
│ ├── [id]
|
187
|
+
│ │ └── page.tsx
|
188
|
+
│ └── page.tsx
|
189
|
+
├── layout.tsx
|
190
|
+
├── loading.tsx
|
191
|
+
└── page.tsx
|
192
|
+
```
|
193
|
+
|
194
|
+
当路由从 `/` 跳转到 `/blog` 时,如果 `<Blog>` 组件的 JS Chunk 还未加载,则会先展示 `loading.tsx` 中导出的组件 UI。但从 `/blog` 跳转到 `/blog/20220101` 时,则不会展示。
|
195
|
+
|
196
|
+
### 错误处理
|
197
|
+
|
198
|
+
`routes/` 下每一层目录中,开发者同样可以定义一个 `error.tsx` 文件,默认导出一个 `<ErrorBoundary>` 组件。
|
199
|
+
|
200
|
+
当有路由目录下存在该组件时,组件渲染出错会被 ErrorBoundary 组件捕获。当目录未定义 `layout.tsx` 文件时,`<ErrorBoundary>` 组件不会生效。
|
201
|
+
|
202
|
+
`<ErrorBoundary>` 可以返回出错时的 UI 视图,当前层级未声明 `<ErrorBoundary>` 组件时,错误会向上冒泡到更上层的组件,直到被捕获或抛出错误。同时,当组件出错时,只会影响捕获到该错误的路由组件及子组件,其他组件的状态和视图不受影响,可以继续交互。
|
203
|
+
|
204
|
+
<!-- Todo API 路由-->
|
205
|
+
在 `<ErrorBoundary>` 组件内,可以使用 [useRouteError](/docs/apis/app/runtime/router/#useparams) 获取的错误的具体信息:
|
206
|
+
|
207
|
+
```tsx
|
208
|
+
import { useRouteError } from '@modern-js/runtime/router';
|
209
|
+
export default const ErrorBoundary = () => {
|
210
|
+
const error = useRouteError();
|
211
|
+
return (
|
212
|
+
<div>
|
213
|
+
<h1>{error.status}</h1>
|
214
|
+
<h2>{error.message}</h2>
|
215
|
+
</div>
|
216
|
+
)
|
217
|
+
}
|
218
|
+
```
|
219
|
+
|
220
|
+
## 自控式路由
|
221
|
+
|
222
|
+
以 `src/App.tsx` 为约定的入口,Modern.js 不会多路由做额外的操作,开发者可以自行使用 React Router 6 的 API 进行开发,例如:
|
223
|
+
|
224
|
+
```tsx
|
225
|
+
import { Route, Routes, BrowserRouter } from '@modern-js/runtime/router';
|
226
|
+
import { StaticRouter } from '@modern-js/runtime/router/server';
|
227
|
+
|
228
|
+
const Router = typeof window === 'undefined' ? StaticRouter : BrowserRouter;
|
229
|
+
export default () => {
|
230
|
+
return (
|
231
|
+
<Router location={context.request.pathname}>
|
232
|
+
<Routes>
|
233
|
+
<Route index element={<div>index</div>} />
|
234
|
+
<Route path="about" element={<div>about</div>} />
|
235
|
+
</Routes>
|
236
|
+
</Router>
|
237
|
+
);
|
238
|
+
};
|
239
|
+
```
|
240
|
+
|
241
|
+
:::note
|
242
|
+
在自控式路由下,开发者如果希望在 SSR 中使用 React Router 6 中 [Loader API](https://reactrouter.com/en/main/hooks/use-loader-data#useloaderdata) 的能力会相对复杂,推荐直接使用约定式路由。Modern.js 已经为你封装好了一切。
|
243
|
+
|
244
|
+
<!-- Todo 嵌套路由带来的优化可以补充下文档-->
|
245
|
+
如果项目只想升级到 React Router 6,而不希望使用嵌套路由带来的优化,那 [useLoader](/docs/apis/app/runtime/core/use-loader) 在 SSR 下仍然可以工作。
|
246
|
+
:::
|
247
|
+
|
248
|
+
## 其他路由方案
|
249
|
+
|
250
|
+
默认情况下,Modern.js 会开启内置的路由方案,即 React Router。
|
251
|
+
|
252
|
+
```js
|
253
|
+
export default defineConfig({
|
254
|
+
runtime: {
|
255
|
+
router: true,
|
256
|
+
}
|
257
|
+
})
|
258
|
+
```
|
259
|
+
|
260
|
+
Modern.js 从 `@modern-js/runtime/router` 命名空间暴露了 React Router 的 API 供开发者使用,保证开发者和 Modern.js 中使用同一份代码。另外,这种情况下,React Router 的代码会被打包到 JS 产物中。如果项目已经有自己的路由方案,或者不需要使用客户端路由,可以关闭这个功能。
|
261
|
+
|
262
|
+
```js
|
263
|
+
export default defineConfig({
|
264
|
+
runtime: {
|
265
|
+
router: false,
|
266
|
+
}
|
267
|
+
})
|
268
|
+
```
|
@@ -2,3 +2,115 @@
|
|
2
2
|
title: 入口
|
3
3
|
sidebar_position: 2
|
4
4
|
---
|
5
|
+
|
6
|
+
入口是 Modern.js 默认的文件约定,项目的每一个入口是一张独立的页面,对应一条服务端路由。
|
7
|
+
|
8
|
+
很多配置,如 HTML 模板、Meta 信息、是否开启 SSR、SSG、服务端路由规则都是以入口为维度划分的。
|
9
|
+
|
10
|
+
## 单入口与多入口
|
11
|
+
|
12
|
+
Modern.js 初始化的项目是单入口的,项目结构如下:
|
13
|
+
|
14
|
+
```
|
15
|
+
.
|
16
|
+
├── node_modules
|
17
|
+
├── src
|
18
|
+
│ ├── modern-app-env.d.ts
|
19
|
+
│ └── routes
|
20
|
+
│ ├── index.css
|
21
|
+
│ ├── layout.tsx
|
22
|
+
│ └── page.tsx
|
23
|
+
├── package.json
|
24
|
+
├── modern.config.ts
|
25
|
+
├── pnpm-lock.yaml
|
26
|
+
├── README.md
|
27
|
+
└── tsconfig.json
|
28
|
+
```
|
29
|
+
|
30
|
+
Modern.js 可以很方便的将单入口切换成多入口。可以在项目下执行 `pnpm run new`,通过生成器创建入口:
|
31
|
+
|
32
|
+
```bash
|
33
|
+
? 请选择你想要的操作: 创建工程元素
|
34
|
+
? 创建工程元素: 新建「应用入口」
|
35
|
+
? 请填写入口名称: new-entry
|
36
|
+
```
|
37
|
+
|
38
|
+
执行后,`src/` 目录将会变成如下结构:
|
39
|
+
|
40
|
+
```
|
41
|
+
.
|
42
|
+
├── modern-app-env.d.ts
|
43
|
+
├── myapp
|
44
|
+
│ └── routes
|
45
|
+
│ ├── index.css
|
46
|
+
│ ├── layout.tsx
|
47
|
+
│ └── page.tsx
|
48
|
+
└── new-entry
|
49
|
+
└── routes
|
50
|
+
├── index.css
|
51
|
+
├── layout.tsx
|
52
|
+
└── page.tsx
|
53
|
+
```
|
54
|
+
|
55
|
+
原本的代码被移动到了和 `package.json` 中 `name` 同名的目录下,并创建了新的目录。
|
56
|
+
|
57
|
+
执行 `pnpm run dev` 后,可以看到新增一条 `/new-entry` 的路由,并且被迁移的代码路由并未发生变化。
|
58
|
+
|
59
|
+
:::note
|
60
|
+
Modern.js 会将和 `package.json` 中 `name` 同名的目录作为主入口,默认路由为 `/`,其他入口默认路由为 `/{entryName}`。
|
61
|
+
:::
|
62
|
+
|
63
|
+
## 入口条件
|
64
|
+
|
65
|
+
默认情况下,Modern.js 启动项目前会对 `src/` 下的文件进行扫描,识别入口,并生成对应的服务端路由。
|
66
|
+
|
67
|
+
:::tip
|
68
|
+
可以通过 [source.entriesDir](/docs/configure/app/source/entries-dir) 更改入口目录为其他目录。
|
69
|
+
:::
|
70
|
+
|
71
|
+
并非 `src/` 下所有的一级目录都会成为项目入口, 入口所在目录必须满足以下四个条件之一:
|
72
|
+
|
73
|
+
1. 具有 `routes/` 目录
|
74
|
+
2. 具有 `App.[jt]sx?` 文件
|
75
|
+
3. 具有 `index.[jt]sx?` 文件
|
76
|
+
2. 具有 `pages/` 目录(兼容旧版本)
|
77
|
+
|
78
|
+
当 `src/` 目录满足入口特征时,Modern.js 会认为当前项目为单入口应用。
|
79
|
+
|
80
|
+
:::tip
|
81
|
+
单入口默认的入口名为 `main`。
|
82
|
+
:::
|
83
|
+
|
84
|
+
当项目不是单入口应用时,Modern.js 会进一步查看 `src/` 下的一级目录。
|
85
|
+
|
86
|
+
## 入口的区别
|
87
|
+
|
88
|
+
不同约定的入口具有不同的行为。
|
89
|
+
|
90
|
+
### routes 入口
|
91
|
+
|
92
|
+
如果入口为 `routes/` 约定,Modern.js 会在启动时扫描 `routes` 下的文件,基于文件约定,自动生成客户端路由(react-router)。
|
93
|
+
|
94
|
+
详细内容可以参考[路由](/docs/guides/basic-features/routes)。
|
95
|
+
|
96
|
+
### App 入口
|
97
|
+
|
98
|
+
如果入口为 `App.[jt]sx?` 约定,开发者可以在这个文件中自由的设置客户端路由,或者不设置客户端路由。
|
99
|
+
|
100
|
+
详细内容可以参考[路由](/docs/guides/basic-features/routes)。
|
101
|
+
|
102
|
+
### Index 入口
|
103
|
+
|
104
|
+
通常情况下,上面两种模式已经能满足需求,但当开发者需要自己接管 React 挂载逻辑,或完全接管 Webpack 入口时,可以使用 `index.[jt]sx?` 约定。
|
105
|
+
|
106
|
+
如果入口为 `index.[jt]sx?` 约定,Modern.js 会根据该文件是否存在默认的组件导出,来决定构建行为。
|
107
|
+
|
108
|
+
详细内容可以参考[自定义 App](/docs/guides/advanced-features/custom-app)。
|
109
|
+
|
110
|
+
## 配置入口
|
111
|
+
|
112
|
+
在 Modern.js 中,除了使用文件约定生成入口外,还可以在 `modern.config.[jt]s` 中手动配置入口。
|
113
|
+
|
114
|
+
:::tip
|
115
|
+
详情可以查看 [source.entries](/docs/configure/app/source/entries)。
|
116
|
+
:::
|
@@ -2,3 +2,13 @@
|
|
2
2
|
title: 生命周期
|
3
3
|
sidebar_position: 1
|
4
4
|
---
|
5
|
+
|
6
|
+
Modern.js 应用具有完整的生命周期,包括 CLI、Server Side 和 Runtime 三个阶段。
|
7
|
+
|
8
|
+
目前 Modern.js 大致的生命周期如下:
|
9
|
+
|
10
|
+
:::note
|
11
|
+
其中粉色框的矩形代表 Modern.js 提供的插件钩子,淡黄色底色椭圆代表与下一个阶段的连接点。
|
12
|
+
:::
|
13
|
+
|
14
|
+

|