@modern-js/main-doc 0.0.0-next-20221116121040
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +12 -0
- package/CHANGELOG.md +15 -0
- package/LICENSE +144 -0
- package/en/configure/app/dev/asset-prefix.md +13 -0
- package/en/configure/app/dev/hmr.md +13 -0
- package/en/configure/app/dev/https.md +13 -0
- package/en/configure/app/dev/port.md +13 -0
- package/en/configure/app/dev/progress-bar.md +13 -0
- package/en/configure/app/dev/start-url.md +13 -0
- package/en/configure/app/html/app-icon.md +13 -0
- package/en/configure/app/html/crossorigin.md +13 -0
- package/en/configure/app/html/disable-html-folder.md +13 -0
- package/en/configure/app/html/favicon-by-entries.md +13 -0
- package/en/configure/app/html/favicon.md +13 -0
- package/en/configure/app/html/inject-by-entries.md +13 -0
- package/en/configure/app/html/inject.md +13 -0
- package/en/configure/app/html/meta-by-entries.md +13 -0
- package/en/configure/app/html/meta.md +13 -0
- package/en/configure/app/html/mount-id.md +13 -0
- package/en/configure/app/html/template-by-entries.md +13 -0
- package/en/configure/app/html/template-parameters-by-entries.md +13 -0
- package/en/configure/app/html/template-parameters.md +13 -0
- package/en/configure/app/html/template.md +13 -0
- package/en/configure/app/html/title-by-entries.md +13 -0
- package/en/configure/app/html/title.md +13 -0
- package/en/configure/app/output/asset-prefix.md +13 -0
- package/en/configure/app/output/assets-retry.md +13 -0
- package/en/configure/app/output/charset.md +13 -0
- package/en/configure/app/output/clean-dist-path.md +13 -0
- package/en/configure/app/output/convert-to-rem.md +13 -0
- package/en/configure/app/output/copy.md +13 -0
- package/en/configure/app/output/css-module-local-ident-name.md +13 -0
- package/en/configure/app/output/data-uri-limit.md +13 -0
- package/en/configure/app/output/disable-css-module-extension.md +13 -0
- package/en/configure/app/output/disable-filename-hash.md +13 -0
- package/en/configure/app/output/disable-inline-runtime-chunk.md +13 -0
- package/en/configure/app/output/disable-minimize.md +13 -0
- package/en/configure/app/output/disable-source-map.md +13 -0
- package/en/configure/app/output/dist-path.md +13 -0
- package/en/configure/app/output/enable-asset-fallback.md +13 -0
- package/en/configure/app/output/enable-asset-manifest.md +13 -0
- package/en/configure/app/output/enable-css-module-tsdeclaration.md +13 -0
- package/en/configure/app/output/enable-inline-scripts.md +13 -0
- package/en/configure/app/output/enable-inline-styles.md +13 -0
- package/en/configure/app/output/enable-latest-decorators.md +13 -0
- package/en/configure/app/output/externals.md +13 -0
- package/en/configure/app/output/filename.md +13 -0
- package/en/configure/app/output/legal-comments.md +13 -0
- package/en/configure/app/output/override-browserslist.md +13 -0
- package/en/configure/app/output/polyfill.md +13 -0
- package/en/configure/app/output/svg-default-export.md +13 -0
- package/en/configure/app/performance/build-cache.md +13 -0
- package/en/configure/app/performance/bundle-analyze.md +13 -0
- package/en/configure/app/performance/chunk-split.md +13 -0
- package/en/configure/app/performance/print-file-size.md +13 -0
- package/en/configure/app/performance/profile.md +13 -0
- package/en/configure/app/performance/remove-console.md +13 -0
- package/en/configure/app/performance/remove-moment-locale.md +13 -0
- package/en/configure/app/security/sri.md +13 -0
- package/en/configure/app/source/alias.md +13 -0
- package/en/configure/app/source/compile-js-data-uri.md +13 -0
- package/en/configure/app/source/define.md +13 -0
- package/en/configure/app/source/global-vars.md +13 -0
- package/en/configure/app/source/include.md +13 -0
- package/en/configure/app/source/module-scopes.md +13 -0
- package/en/configure/app/source/pre-entry.md +13 -0
- package/en/configure/app/source/resolve-extension-prefix.md +13 -0
- package/en/configure/app/source/resolve-main-fields.md +13 -0
- package/en/configure/app/tools/autoprefixer.md +13 -0
- package/en/configure/app/tools/babel.md +13 -0
- package/en/configure/app/tools/css-extract.md +13 -0
- package/en/configure/app/tools/css-loader.md +13 -0
- package/en/configure/app/tools/dev-server.md +13 -0
- package/en/configure/app/tools/html-plugin.md +13 -0
- package/en/configure/app/tools/inspector.md +13 -0
- package/en/configure/app/tools/less.md +13 -0
- package/en/configure/app/tools/minify-css.md +13 -0
- package/en/configure/app/tools/postcss.md +13 -0
- package/en/configure/app/tools/pug.md +13 -0
- package/en/configure/app/tools/sass.md +13 -0
- package/en/configure/app/tools/style-loader.md +13 -0
- package/en/configure/app/tools/styled-components.md +13 -0
- package/en/configure/app/tools/terser.md +13 -0
- package/en/configure/app/tools/ts-checker.md +13 -0
- package/en/configure/app/tools/ts-loader.md +13 -0
- package/en/configure/app/tools/webpack-chain.md +13 -0
- package/en/configure/app/tools/webpack.md +13 -0
- package/en/tutorials/foundations/_category_.json +5 -0
- package/en/tutorials/foundations/basic.md +8 -0
- package/en/tutorials/foundations/introduction.md +43 -0
- package/package.json +30 -0
- package/scripts/gen-config.ts +60 -0
- package/scripts/sync.ts +36 -0
- package/tsconfig.json +7 -0
- package/zh/apis/app/commands/_category_.json +8 -0
- package/zh/apis/app/commands/build.md +44 -0
- package/zh/apis/app/commands/dev.md +31 -0
- package/zh/apis/app/commands/index.md +12 -0
- package/zh/apis/app/commands/inspect.md +39 -0
- package/zh/apis/app/commands/lint.md +22 -0
- package/zh/apis/app/commands/new.md +59 -0
- package/zh/apis/app/commands/start.md +32 -0
- package/zh/apis/app/commands/test.md +36 -0
- package/zh/apis/app/commands/upgrade.md +23 -0
- package/zh/apis/app/hooks/_category_.json +8 -0
- package/zh/apis/app/hooks/api/_category_.json +4 -0
- package/zh/apis/app/hooks/api/framework/_category_.json +4 -0
- package/zh/apis/app/hooks/api/framework/app.md +100 -0
- package/zh/apis/app/hooks/api/framework/lambda.md +79 -0
- package/zh/apis/app/hooks/api/functions/_category_.json +4 -0
- package/zh/apis/app/hooks/api/functions/api.md +50 -0
- package/zh/apis/app/hooks/api/functions/app.md +10 -0
- package/zh/apis/app/hooks/api/functions/common.md +10 -0
- package/zh/apis/app/hooks/api/test.md +12 -0
- package/zh/apis/app/hooks/config/_category_.json +4 -0
- package/zh/apis/app/hooks/config/html.md +10 -0
- package/zh/apis/app/hooks/config/icon.md +17 -0
- package/zh/apis/app/hooks/config/mock.md +12 -0
- package/zh/apis/app/hooks/config/public.md +30 -0
- package/zh/apis/app/hooks/config/storybook.md +14 -0
- package/zh/apis/app/hooks/config/upload.md +48 -0
- package/zh/apis/app/hooks/index.md +12 -0
- package/zh/apis/app/hooks/modern-config.md +10 -0
- package/zh/apis/app/hooks/server/_category_.json +4 -0
- package/zh/apis/app/hooks/server/index.md +14 -0
- package/zh/apis/app/hooks/server/test.md +12 -0
- package/zh/apis/app/hooks/shared.md +8 -0
- package/zh/apis/app/hooks/src/_category_.json +4 -0
- package/zh/apis/app/hooks/src/app.md +41 -0
- package/zh/apis/app/hooks/src/error.md +10 -0
- package/zh/apis/app/hooks/src/eslint.md +9 -0
- package/zh/apis/app/hooks/src/index.md +35 -0
- package/zh/apis/app/hooks/src/pages.md +183 -0
- package/zh/apis/app/hooks/src/stories.md +14 -0
- package/zh/apis/app/hooks/src/test.md +12 -0
- package/zh/apis/app/overview.md +11 -0
- package/zh/apis/app/runtime/_category_.json +9 -0
- package/zh/apis/app/runtime/app/_category_.json +4 -0
- package/zh/apis/app/runtime/app/bootstrap.md +83 -0
- package/zh/apis/app/runtime/app/create-app.md +47 -0
- package/zh/apis/app/runtime/app/define-config.md +57 -0
- package/zh/apis/app/runtime/app/head.md +43 -0
- package/zh/apis/app/runtime/app/no-ssr.md +41 -0
- package/zh/apis/app/runtime/app/pre-render.md +77 -0
- package/zh/apis/app/runtime/app/use-module-app.md +60 -0
- package/zh/apis/app/runtime/app/use-module-apps.md +64 -0
- package/zh/apis/app/runtime/app/use-runtime-context.md +39 -0
- package/zh/apis/app/runtime/bff-server/_category_.json +4 -0
- package/zh/apis/app/runtime/bff-server/after-lambda-registed.md +35 -0
- package/zh/apis/app/runtime/bff-server/hook.md +120 -0
- package/zh/apis/app/runtime/bff-server/use-context.md +70 -0
- package/zh/apis/app/runtime/container/_category_.json +4 -0
- package/zh/apis/app/runtime/container/router.md +492 -0
- package/zh/apis/app/runtime/container/use-loader.md +64 -0
- package/zh/apis/app/runtime/default-alias.md +26 -0
- package/zh/apis/app/runtime/env.md +68 -0
- package/zh/apis/app/runtime/index.md +12 -0
- package/zh/apis/app/runtime/model/Provider.md +36 -0
- package/zh/apis/app/runtime/model/_category_.json +4 -0
- package/zh/apis/app/runtime/model/auto-actions.md +121 -0
- package/zh/apis/app/runtime/model/connect.md +134 -0
- package/zh/apis/app/runtime/model/create-app.md +74 -0
- package/zh/apis/app/runtime/model/create-store.md +60 -0
- package/zh/apis/app/runtime/model/handle-effect.md +106 -0
- package/zh/apis/app/runtime/model/model_.md +199 -0
- package/zh/apis/app/runtime/model/use-local-model.md +28 -0
- package/zh/apis/app/runtime/model/use-model.md +87 -0
- package/zh/apis/app/runtime/model/use-static-model.md +47 -0
- package/zh/apis/app/runtime/model/use-store.md +48 -0
- package/zh/apis/app/runtime/plugin/_category_.json +4 -0
- package/zh/apis/app/runtime/plugin/abstract.md +26 -0
- package/zh/apis/app/runtime/plugin/hook-api.md +896 -0
- package/zh/apis/app/runtime/plugin/hook.md +170 -0
- package/zh/apis/app/runtime/plugin/plugin-api.md +117 -0
- package/zh/apis/app/runtime/testing/_category_.json +4 -0
- package/zh/apis/app/runtime/testing/act.md +34 -0
- package/zh/apis/app/runtime/testing/cleanup.md +37 -0
- package/zh/apis/app/runtime/testing/render.md +52 -0
- package/zh/apis/app/runtime/testing/renderApp.md +31 -0
- package/zh/apis/app/runtime/utility/_category_.json +4 -0
- package/zh/apis/app/runtime/utility/css-in-js.md +60 -0
- package/zh/apis/app/runtime/utility/loadable/_category_.json +4 -0
- package/zh/apis/app/runtime/utility/loadable/lazy.md +29 -0
- package/zh/apis/app/runtime/utility/loadable/loadable-component.md +61 -0
- package/zh/apis/app/runtime/utility/loadable/loadable-library.md +67 -0
- package/zh/apis/app/runtime/utility/loadable/loadable_.md +110 -0
- package/zh/apis/app/runtime/web-server/_category_.json +4 -0
- package/zh/apis/app/runtime/web-server/hook.md +121 -0
- package/zh/apis/generator/overview.md +32 -0
- package/zh/apis/generator/plugin/_category_.json +4 -0
- package/zh/apis/generator/plugin/file/_category_.json +4 -0
- package/zh/apis/generator/plugin/file/addFile.md +52 -0
- package/zh/apis/generator/plugin/file/addHelper.md +26 -0
- package/zh/apis/generator/plugin/file/addManyFile.md +55 -0
- package/zh/apis/generator/plugin/file/addPartial.md +26 -0
- package/zh/apis/generator/plugin/file/introduce.md +37 -0
- package/zh/apis/generator/plugin/file/rmDir.md +24 -0
- package/zh/apis/generator/plugin/file/rmFile.md +24 -0
- package/zh/apis/generator/plugin/file/updateJSONFile.md +52 -0
- package/zh/apis/generator/plugin/file/updateModernConfig.md +26 -0
- package/zh/apis/generator/plugin/file/updateTextRawFile.md +33 -0
- package/zh/apis/generator/plugin/git/_category_.json +4 -0
- package/zh/apis/generator/plugin/git/gitAddAndCommit.md +20 -0
- package/zh/apis/generator/plugin/git/initGitRepo.md +16 -0
- package/zh/apis/generator/plugin/git/isInGitRepo.md +16 -0
- package/zh/apis/generator/plugin/hook/_category_.json +4 -0
- package/zh/apis/generator/plugin/hook/afterForged.md +35 -0
- package/zh/apis/generator/plugin/hook/onForged.md +35 -0
- package/zh/apis/generator/plugin/info/_category_.json +4 -0
- package/zh/apis/generator/plugin/info/isFileExit.md +22 -0
- package/zh/apis/generator/plugin/info/locale.md +17 -0
- package/zh/apis/generator/plugin/info/readDir.md +22 -0
- package/zh/apis/generator/plugin/input/_category_.json +4 -0
- package/zh/apis/generator/plugin/input/addInputAfter.md +48 -0
- package/zh/apis/generator/plugin/input/addInputBefore.md +48 -0
- package/zh/apis/generator/plugin/input/addOptionAfter.md +45 -0
- package/zh/apis/generator/plugin/input/addOptionBefore.md +45 -0
- package/zh/apis/generator/plugin/input/setInput.md +42 -0
- package/zh/apis/generator/plugin/input/setInputValue.md +28 -0
- package/zh/apis/generator/plugin/input/type.md +101 -0
- package/zh/apis/generator/plugin/introduce.md +93 -0
- package/zh/apis/generator/plugin/new/_category_.json +4 -0
- package/zh/apis/generator/plugin/new/createElement.md +33 -0
- package/zh/apis/generator/plugin/new/createSubProject.md +35 -0
- package/zh/apis/generator/plugin/new/enableFunc.md +46 -0
- package/zh/apis/generator/plugin/new/introduce.md +15 -0
- package/zh/apis/generator/plugin/npm/_category_.json +4 -0
- package/zh/apis/generator/plugin/npm/install.md +16 -0
- package/zh/apis/monorepo/commands/_category_.json +8 -0
- package/zh/apis/monorepo/commands/bump.md +42 -0
- package/zh/apis/monorepo/commands/change.md +58 -0
- package/zh/apis/monorepo/commands/clear.md +27 -0
- package/zh/apis/monorepo/commands/deploy.md +39 -0
- package/zh/apis/monorepo/commands/gen-release-note.md +35 -0
- package/zh/apis/monorepo/commands/index.md +12 -0
- package/zh/apis/monorepo/commands/lint.md +21 -0
- package/zh/apis/monorepo/commands/new.md +41 -0
- package/zh/apis/monorepo/commands/pre.md +68 -0
- package/zh/apis/monorepo/commands/release.md +20 -0
- package/zh/apis/monorepo/commands/upgrade.md +23 -0
- package/zh/apis/monorepo/hooks/_category_.json +8 -0
- package/zh/apis/monorepo/hooks/apps.md +12 -0
- package/zh/apis/monorepo/hooks/code-workspace.md +10 -0
- package/zh/apis/monorepo/hooks/examples.md +14 -0
- package/zh/apis/monorepo/hooks/features.md +14 -0
- package/zh/apis/monorepo/hooks/index.md +12 -0
- package/zh/apis/monorepo/hooks/packages.md +14 -0
- package/zh/apis/monorepo/hooks/pnpm-workspace.md +10 -0
- package/zh/apis/monorepo/hooks/pnpmfile.md +10 -0
- package/zh/apis/monorepo/overview.md +11 -0
- package/zh/community/index.md +3 -0
- package/zh/components/command-tip.md +57 -0
- package/zh/components/deploy.md +60 -0
- package/zh/components/dev-ide.md +1 -0
- package/zh/components/entry-name.md +15 -0
- package/zh/components/env-prepare.md +1 -0
- package/zh/components/launch-bff-choices.md +6 -0
- package/zh/components/reduck-tip.md +5 -0
- package/zh/configure/app/bff/_category_.json +4 -0
- package/zh/configure/app/bff/fetcher.md +32 -0
- package/zh/configure/app/bff/prefix.md +38 -0
- package/zh/configure/app/bff/proxy.md +76 -0
- package/zh/configure/app/dev/_category_.json +4 -0
- package/zh/configure/app/dev/asset-prefix.md +13 -0
- package/zh/configure/app/dev/hmr.md +13 -0
- package/zh/configure/app/dev/https.md +13 -0
- package/zh/configure/app/dev/port.md +13 -0
- package/zh/configure/app/dev/progress-bar.md +13 -0
- package/zh/configure/app/dev/proxy.md +79 -0
- package/zh/configure/app/dev/start-url.md +13 -0
- package/zh/configure/app/dev/with-master-app.md +35 -0
- package/zh/configure/app/html/app-icon.md +13 -0
- package/zh/configure/app/html/crossorigin.md +13 -0
- package/zh/configure/app/html/disable-html-folder.md +13 -0
- package/zh/configure/app/html/favicon-by-entries.md +13 -0
- package/zh/configure/app/html/favicon.md +13 -0
- package/zh/configure/app/html/inject-by-entries.md +13 -0
- package/zh/configure/app/html/inject.md +13 -0
- package/zh/configure/app/html/meta-by-entries.md +13 -0
- package/zh/configure/app/html/meta.md +13 -0
- package/zh/configure/app/html/mount-id.md +13 -0
- package/zh/configure/app/html/template-by-entries.md +13 -0
- package/zh/configure/app/html/template-parameters-by-entries.md +13 -0
- package/zh/configure/app/html/template-parameters.md +13 -0
- package/zh/configure/app/html/template.md +13 -0
- package/zh/configure/app/html/title-by-entries.md +13 -0
- package/zh/configure/app/html/title.md +13 -0
- package/zh/configure/app/output/_category_.json +4 -0
- package/zh/configure/app/output/asset-prefix.md +13 -0
- package/zh/configure/app/output/assets-retry.md +13 -0
- package/zh/configure/app/output/charset.md +13 -0
- package/zh/configure/app/output/clean-dist-path.md +13 -0
- package/zh/configure/app/output/convert-to-rem.md +13 -0
- package/zh/configure/app/output/copy.md +13 -0
- package/zh/configure/app/output/css-module-local-ident-name.md +13 -0
- package/zh/configure/app/output/data-uri-limit.md +13 -0
- package/zh/configure/app/output/disable-css-module-extension.md +13 -0
- package/zh/configure/app/output/disable-filename-hash.md +13 -0
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +13 -0
- package/zh/configure/app/output/disable-minimize.md +13 -0
- package/zh/configure/app/output/disable-node-polyfill.md +24 -0
- package/zh/configure/app/output/disable-source-map.md +13 -0
- package/zh/configure/app/output/dist-path.md +13 -0
- package/zh/configure/app/output/enable-asset-fallback.md +13 -0
- package/zh/configure/app/output/enable-asset-manifest.md +13 -0
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +13 -0
- package/zh/configure/app/output/enable-inline-scripts.md +13 -0
- package/zh/configure/app/output/enable-inline-styles.md +13 -0
- package/zh/configure/app/output/enable-latest-decorators.md +13 -0
- package/zh/configure/app/output/enable-modern-mode.md +26 -0
- package/zh/configure/app/output/externals.md +13 -0
- package/zh/configure/app/output/filename.md +13 -0
- package/zh/configure/app/output/legal-comments.md +13 -0
- package/zh/configure/app/output/override-browserslist.md +13 -0
- package/zh/configure/app/output/polyfill.md +13 -0
- package/zh/configure/app/output/ssg.md +226 -0
- package/zh/configure/app/output/svg-default-export.md +13 -0
- package/zh/configure/app/performance/build-cache.md +13 -0
- package/zh/configure/app/performance/bundle-analyze.md +13 -0
- package/zh/configure/app/performance/chunk-split.md +13 -0
- package/zh/configure/app/performance/print-file-size.md +13 -0
- package/zh/configure/app/performance/profile.md +13 -0
- package/zh/configure/app/performance/remove-console.md +13 -0
- package/zh/configure/app/performance/remove-moment-locale.md +13 -0
- package/zh/configure/app/plugins.md +74 -0
- package/zh/configure/app/runtime/_category_.json +4 -0
- package/zh/configure/app/runtime/master-app.md +72 -0
- package/zh/configure/app/runtime/router.md +54 -0
- package/zh/configure/app/runtime/state.md +45 -0
- package/zh/configure/app/security/sri.md +13 -0
- package/zh/configure/app/server/_category_.json +4 -0
- package/zh/configure/app/server/base-url.md +36 -0
- package/zh/configure/app/server/port.md +21 -0
- package/zh/configure/app/server/public-routes.md +29 -0
- package/zh/configure/app/server/routes.md +92 -0
- package/zh/configure/app/server/ssr-by-entries.md +32 -0
- package/zh/configure/app/server/ssr.md +24 -0
- package/zh/configure/app/source/_category_.json +4 -0
- package/zh/configure/app/source/alias.md +13 -0
- package/zh/configure/app/source/compile-js-data-uri.md +13 -0
- package/zh/configure/app/source/config-dir.md +15 -0
- package/zh/configure/app/source/define.md +13 -0
- package/zh/configure/app/source/design-system.md +1156 -0
- package/zh/configure/app/source/disable-default-entries.md +23 -0
- package/zh/configure/app/source/enable-async-entry.md +53 -0
- package/zh/configure/app/source/entries-dir.md +42 -0
- package/zh/configure/app/source/entries.md +55 -0
- package/zh/configure/app/source/global-vars.md +13 -0
- package/zh/configure/app/source/include.md +13 -0
- package/zh/configure/app/source/module-scopes.md +13 -0
- package/zh/configure/app/source/pre-entry.md +13 -0
- package/zh/configure/app/source/resolve-extension-prefix.md +13 -0
- package/zh/configure/app/source/resolve-main-fields.md +13 -0
- package/zh/configure/app/testing/_category_.json +4 -0
- package/zh/configure/app/testing/transformer.md +17 -0
- package/zh/configure/app/tools/_category_.json +4 -0
- package/zh/configure/app/tools/autoprefixer.md +13 -0
- package/zh/configure/app/tools/babel.md +13 -0
- package/zh/configure/app/tools/css-extract.md +13 -0
- package/zh/configure/app/tools/css-loader.md +13 -0
- package/zh/configure/app/tools/dev-server.md +13 -0
- package/zh/configure/app/tools/esbuild.md +61 -0
- package/zh/configure/app/tools/html-plugin.md +13 -0
- package/zh/configure/app/tools/inspector.md +13 -0
- package/zh/configure/app/tools/jest.md +41 -0
- package/zh/configure/app/tools/less.md +13 -0
- package/zh/configure/app/tools/minify-css.md +13 -0
- package/zh/configure/app/tools/postcss.md +13 -0
- package/zh/configure/app/tools/pug.md +13 -0
- package/zh/configure/app/tools/sass.md +13 -0
- package/zh/configure/app/tools/style-loader.md +13 -0
- package/zh/configure/app/tools/styled-components.md +13 -0
- package/zh/configure/app/tools/tailwindcss.md +48 -0
- package/zh/configure/app/tools/terser.md +13 -0
- package/zh/configure/app/tools/ts-checker.md +13 -0
- package/zh/configure/app/tools/ts-loader.md +13 -0
- package/zh/configure/app/tools/webpack-chain.md +13 -0
- package/zh/configure/app/tools/webpack.md +13 -0
- package/zh/configure/app/usage.md +81 -0
- package/zh/configure/generator/introduce.md +113 -0
- package/zh/configure/generator/module.md +43 -0
- package/zh/configure/generator/monorepo.md +28 -0
- package/zh/configure/generator/mwa.md +127 -0
- package/zh/guides/advanced-features/_category_.json +9 -0
- package/zh/guides/advanced-features/bff/_category_.json +4 -0
- package/zh/guides/advanced-features/bff/bff-proxy.md +25 -0
- package/zh/guides/advanced-features/bff/bff-server.md +142 -0
- package/zh/guides/advanced-features/bff/frameworks.md +348 -0
- package/zh/guides/advanced-features/bff/function.md +236 -0
- package/zh/guides/advanced-features/code-split.md +68 -0
- package/zh/guides/advanced-features/compatibility.md +89 -0
- package/zh/guides/advanced-features/custom-app.md +4 -0
- package/zh/guides/advanced-features/eslint.md +146 -0
- package/zh/guides/advanced-features/index.md +12 -0
- package/zh/guides/advanced-features/low-level.md +44 -0
- package/zh/guides/advanced-features/ssg.md +151 -0
- package/zh/guides/advanced-features/ssr.md +186 -0
- package/zh/guides/advanced-features/testing.md +4 -0
- package/zh/guides/advanced-features/typescript.md +4 -0
- package/zh/guides/advanced-features/web-server.md +135 -0
- package/zh/guides/basic-features/_category_.json +9 -0
- package/zh/guides/basic-features/alias.md +67 -0
- package/zh/guides/basic-features/css/_category_.json +4 -0
- package/zh/guides/basic-features/css/css-in-js.md +38 -0
- package/zh/guides/basic-features/css/css-modules.md +86 -0
- package/zh/guides/basic-features/css/less-sass.md +29 -0
- package/zh/guides/basic-features/css/postcss.md +81 -0
- package/zh/guides/basic-features/css/tailwindcss.md +98 -0
- package/zh/guides/basic-features/data-fetch.md +4 -0
- package/zh/guides/basic-features/env-vars.md +83 -0
- package/zh/guides/basic-features/html.md +128 -0
- package/zh/guides/basic-features/image.md +43 -0
- package/zh/guides/basic-features/index.md +12 -0
- package/zh/guides/basic-features/mock.md +85 -0
- package/zh/guides/basic-features/proxy.md +85 -0
- package/zh/guides/basic-features/routes.md +4 -0
- package/zh/guides/concept/_category_.json +5 -0
- package/zh/guides/concept/entries.md +4 -0
- package/zh/guides/concept/integrated.md +4 -0
- package/zh/guides/concept/lifecycle.md +4 -0
- package/zh/guides/concept/solutions.md +4 -0
- package/zh/guides/get-started/_category_.json +5 -0
- package/zh/guides/get-started/quick-start.md +4 -0
- package/zh/guides/get-started/upgrade.md +4 -0
- package/zh/guides/overview.md +11 -0
- package/zh/guides/topic-detail/_category_.json +5 -0
- package/zh/guides/topic-detail/changesets/_category_.json +4 -0
- package/zh/guides/topic-detail/changesets/add.md +125 -0
- package/zh/guides/topic-detail/changesets/changelog.md +239 -0
- package/zh/guides/topic-detail/changesets/commit.md +272 -0
- package/zh/guides/topic-detail/changesets/config.md +146 -0
- package/zh/guides/topic-detail/changesets/github.md +168 -0
- package/zh/guides/topic-detail/changesets/introduce.md +57 -0
- package/zh/guides/topic-detail/changesets/release-note.md +262 -0
- package/zh/guides/topic-detail/changesets/release-pre.md +49 -0
- package/zh/guides/topic-detail/changesets/release.md +228 -0
- package/zh/guides/topic-detail/compile-speed.md +182 -0
- package/zh/guides/topic-detail/framework-plugin/_category_.json +4 -0
- package/zh/guides/topic-detail/framework-plugin/abstract.md +27 -0
- package/zh/guides/topic-detail/framework-plugin/extend.md +163 -0
- package/zh/guides/topic-detail/framework-plugin/implement.md +188 -0
- package/zh/guides/topic-detail/framework-plugin/relationship.md +119 -0
- package/zh/guides/topic-detail/generator-plugin/_category_.json +4 -0
- package/zh/guides/topic-detail/generator-plugin/abstract.md +23 -0
- package/zh/guides/topic-detail/generator-plugin/develop.md +120 -0
- package/zh/guides/topic-detail/generator-plugin/use.md +61 -0
- package/zh/guides/topic-detail/micro-frontend/_category_.json +4 -0
- package/zh/guides/topic-detail/micro-frontend/communicate.md +39 -0
- package/zh/guides/topic-detail/micro-frontend/debugging.md +168 -0
- package/zh/guides/topic-detail/micro-frontend/introduction.md +13 -0
- package/zh/guides/topic-detail/micro-frontend/mixed-stack.md +24 -0
- package/zh/guides/topic-detail/micro-frontend/route-mode.md +110 -0
- package/zh/guides/topic-detail/model/_category_.json +4 -0
- package/zh/guides/topic-detail/model/auto-actions.md +90 -0
- package/zh/guides/topic-detail/model/computed-state.md +151 -0
- package/zh/guides/topic-detail/model/define-model.md +66 -0
- package/zh/guides/topic-detail/model/faq.md +43 -0
- package/zh/guides/topic-detail/model/manage-effects.md +259 -0
- package/zh/guides/topic-detail/model/model-communicate.md +219 -0
- package/zh/guides/topic-detail/model/performance.md +173 -0
- package/zh/guides/topic-detail/model/quick-start.md +112 -0
- package/zh/guides/topic-detail/model/redux-integration.md +21 -0
- package/zh/guides/topic-detail/model/test-model.md +43 -0
- package/zh/guides/topic-detail/model/typescript-best-practice.md +71 -0
- package/zh/guides/topic-detail/model/use-model.md +244 -0
- package/zh/guides/topic-detail/model/use-out-of-modernjs.md +51 -0
- package/zh/guides/topic-detail/monorepo/_category_.json +4 -0
- package/zh/guides/topic-detail/monorepo/create-sub-project.md +64 -0
- package/zh/guides/topic-detail/monorepo/deploy.md +43 -0
- package/zh/guides/topic-detail/monorepo/intro.md +15 -0
- package/zh/guides/topic-detail/monorepo/publish.md +68 -0
- package/zh/guides/topic-detail/monorepo/sub-project-interface.md +170 -0
- package/zh/guides/troubleshooting/_category_.json +5 -0
- package/zh/guides/troubleshooting/compile.md +379 -0
- package/zh/guides/troubleshooting/dependencies.md +168 -0
- package/zh/tutorials/first-app/_category_.json +5 -0
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +25 -0
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +118 -0
- package/zh/tutorials/first-app/c01-getting-started/1.3-dev-command.md +29 -0
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +44 -0
- package/zh/tutorials/first-app/c01-getting-started/1.5-start-command.md +18 -0
- package/zh/tutorials/first-app/c01-getting-started/1.6-create-repo.md +31 -0
- package/zh/tutorials/first-app/c01-getting-started/_category_.json +3 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +87 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +28 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +21 -0
- package/zh/tutorials/first-app/c02-generator-and-studio/_category_.json +3 -0
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +55 -0
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +66 -0
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +11 -0
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +63 -0
- package/zh/tutorials/first-app/c03-ide/_category_.json +3 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +67 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +111 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.3-compatibility.md +67 -0
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/_category_.json +3 -0
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +68 -0
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +92 -0
- package/zh/tutorials/first-app/c05-component/_category_.json +3 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +110 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +148 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +84 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +83 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +77 -0
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +113 -0
- package/zh/tutorials/first-app/c06-css-and-component/_category_.json +3 -0
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +64 -0
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +104 -0
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +74 -0
- package/zh/tutorials/first-app/c07-app-entry/_category_.json +3 -0
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +153 -0
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +318 -0
- package/zh/tutorials/first-app/c08-client-side-routing/_category_.json +3 -0
- package/zh/tutorials/first-app/c09-bff/9.1-serverless.md +30 -0
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +93 -0
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +205 -0
- package/zh/tutorials/first-app/c09-bff/_category_.json +3 -0
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +23 -0
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +185 -0
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +54 -0
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +69 -0
- package/zh/tutorials/first-app/c10-model/_category_.json +3 -0
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +274 -0
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +106 -0
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +61 -0
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +56 -0
- package/zh/tutorials/first-app/c11-container/_category_.json +3 -0
- package/zh/tutorials/first-app/overview.md +11 -0
- package/zh/tutorials/foundations/_category_.json +5 -0
- package/zh/tutorials/foundations/basic.md +8 -0
- package/zh/tutorials/foundations/introduction.md +41 -0
@@ -0,0 +1,492 @@
|
|
1
|
+
---
|
2
|
+
title: router
|
3
|
+
sidebar_position: 1
|
4
|
+
---
|
5
|
+
|
6
|
+
:::info 补充信息
|
7
|
+
基于 [react-router](https://reactrouter.com/web/guides/start) 的路由解决方案。
|
8
|
+
:::
|
9
|
+
|
10
|
+
:::caution 注意
|
11
|
+
使用该 API 前,请确认没有禁用 [router 插件](#)。
|
12
|
+
:::
|
13
|
+
|
14
|
+
## hooks
|
15
|
+
|
16
|
+
### useHistory
|
17
|
+
|
18
|
+
```ts
|
19
|
+
function useHistory<HistoryLocationState = H.LocationState>(): H.History<HistoryLocationState>;
|
20
|
+
```
|
21
|
+
|
22
|
+
用于获取 `history` 实例。
|
23
|
+
|
24
|
+
```tsx
|
25
|
+
import { useHistory } from "@modern-js/runtime/router";
|
26
|
+
|
27
|
+
export function HomeButton() {
|
28
|
+
let history = useHistory();
|
29
|
+
|
30
|
+
function handleClick() {
|
31
|
+
history.push("/home");
|
32
|
+
}
|
33
|
+
|
34
|
+
return (
|
35
|
+
<button type="button" onClick={handleClick}>
|
36
|
+
Go home
|
37
|
+
</button>
|
38
|
+
);
|
39
|
+
}
|
40
|
+
```
|
41
|
+
|
42
|
+
### useLocation
|
43
|
+
|
44
|
+
```ts
|
45
|
+
function useLocation<S = H.LocationState>(): H.Location<S>;
|
46
|
+
```
|
47
|
+
|
48
|
+
`useLocation` 返回当前 url 对应的 [location](https://reactrouter.com/web/api/location) 对象。每当路由更新的时候,都会拿到一个新的 `location` 对象。
|
49
|
+
|
50
|
+
```ts
|
51
|
+
import React from "react";
|
52
|
+
import { bootstrap, createApp } from '@modern-js/runtime';
|
53
|
+
import { router } from '@modern-js/runtime/plugins';
|
54
|
+
import {
|
55
|
+
BrowserRouter as Router,
|
56
|
+
Switch,
|
57
|
+
useLocation
|
58
|
+
} from "@modern-js/runtime/router";
|
59
|
+
|
60
|
+
function usePageViews() {
|
61
|
+
let location = useLocation();
|
62
|
+
React.useEffect(() => {
|
63
|
+
ga.send(["pageview", location.pathname]);
|
64
|
+
}, [location]);
|
65
|
+
}
|
66
|
+
|
67
|
+
function App() {
|
68
|
+
usePageViews();
|
69
|
+
return <Switch>...</Switch>;
|
70
|
+
}
|
71
|
+
```
|
72
|
+
|
73
|
+
### useParams
|
74
|
+
|
75
|
+
```ts
|
76
|
+
function useParams<
|
77
|
+
Params extends {
|
78
|
+
[K in keyof Params]?: string
|
79
|
+
} = {}
|
80
|
+
>(): Params;
|
81
|
+
```
|
82
|
+
|
83
|
+
`useParams` 返回一个 key/value 的键值对表示路由中的参数信息。它等同于 `<Route >` 组件中的 `match.params` 值。
|
84
|
+
|
85
|
+
```tsx
|
86
|
+
import React from "react";
|
87
|
+
import {
|
88
|
+
Switch,
|
89
|
+
Route,
|
90
|
+
useParams
|
91
|
+
} from "@modern-js/runtime/router";
|
92
|
+
|
93
|
+
function BlogPost() {
|
94
|
+
const { slug } = useParams();
|
95
|
+
return <div>Now showing post {slug}</div>;
|
96
|
+
}
|
97
|
+
|
98
|
+
function App() {
|
99
|
+
return <Switch>
|
100
|
+
<Route exact path="/">
|
101
|
+
<div>home</div>
|
102
|
+
</Route>
|
103
|
+
<Route path="/blog/:slug">
|
104
|
+
<BlogPost />
|
105
|
+
</Route>
|
106
|
+
</Switch>
|
107
|
+
}
|
108
|
+
```
|
109
|
+
|
110
|
+
### useRouteMatch
|
111
|
+
|
112
|
+
```ts
|
113
|
+
function useRouteMatch<
|
114
|
+
Params extends { [K in keyof Params]?: string } = {}
|
115
|
+
>(): match<Params>;
|
116
|
+
|
117
|
+
function useRouteMatch<
|
118
|
+
Params extends { [K in keyof Params]?: string } = {}
|
119
|
+
>(
|
120
|
+
path: string | string[] | RouteProps,
|
121
|
+
): match<Params> | null;
|
122
|
+
```
|
123
|
+
|
124
|
+
`useRouteMatch` 和 `<Route />` 一样是对路由进行匹配,但无须去渲染 `<Route />` 组件,便能获取到当前匹配结果。
|
125
|
+
|
126
|
+
## 组件
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
### Link
|
131
|
+
|
132
|
+
```ts
|
133
|
+
interface Link<S = H.LocationState>
|
134
|
+
extends React.ForwardRefExoticComponent<
|
135
|
+
React.PropsWithoutRef<LinkProps<S>> & React.RefAttributes<HTMLAnchorElement>
|
136
|
+
> {}
|
137
|
+
```
|
138
|
+
|
139
|
+
可以使用 `Link` 组件进行路由跳转。
|
140
|
+
|
141
|
+
```ts
|
142
|
+
<Link to="/about">About</Link>
|
143
|
+
```
|
144
|
+
|
145
|
+
#### LinkProps
|
146
|
+
|
147
|
+
**to**
|
148
|
+
|
149
|
+
类型:`string | object | function`
|
150
|
+
|
151
|
+
`string`
|
152
|
+
|
153
|
+
```ts
|
154
|
+
<Link to="/courses?sort=name" />
|
155
|
+
```
|
156
|
+
|
157
|
+
`object`
|
158
|
+
|
159
|
+
```tsx
|
160
|
+
<Link
|
161
|
+
to={{
|
162
|
+
pathname: "/courses",
|
163
|
+
search: "?sort=name",
|
164
|
+
hash: "#the-hash",
|
165
|
+
state: { fromDashboard: true }
|
166
|
+
}}
|
167
|
+
/>
|
168
|
+
```
|
169
|
+
|
170
|
+
`function`
|
171
|
+
|
172
|
+
```tsx
|
173
|
+
<Link to={location => ({ ...location, pathname: "/courses" })} />
|
174
|
+
|
175
|
+
<Link to={location => `${location.pathname}?sort=name`} />
|
176
|
+
```
|
177
|
+
|
178
|
+
**replace**
|
179
|
+
|
180
|
+
类型:`boolean`
|
181
|
+
|
182
|
+
当设置为 `true` 时,在跳转的时候替换掉 history 栈中的栈顶路由,而不是添加一个新路由。
|
183
|
+
|
184
|
+
**component**
|
185
|
+
|
186
|
+
类型:`Component`
|
187
|
+
|
188
|
+
如果你想自定义你自己的路由跳转的组件,可以通过传入 `component` 来实现。
|
189
|
+
|
190
|
+
```tsx
|
191
|
+
simply do so by passing it through the component prop.const FancyLink = React.forwardRef((props, ref) => (
|
192
|
+
<a ref={ref} {...props}>💅 {props.children}</a>
|
193
|
+
))
|
194
|
+
|
195
|
+
<Link to="/" component={FancyLink} />
|
196
|
+
```
|
197
|
+
|
198
|
+
### NavLink
|
199
|
+
|
200
|
+
```ts
|
201
|
+
interface NavLink<S = H.LocationState>
|
202
|
+
extends React.ForwardRefExoticComponent<
|
203
|
+
React.PropsWithoutRef<NavLinkProps<S>> & React.RefAttributes<HTMLAnchorElement>
|
204
|
+
> {}
|
205
|
+
```
|
206
|
+
|
207
|
+
`NavLink` 是一种特殊的 [Link](#link) 组件,当 `NavLink` 对应路由匹配到当前 `url`, 会给 `NavLink` 所渲染的元素添加一些额外的样式。
|
208
|
+
|
209
|
+
|
210
|
+
#### NavLinkProps
|
211
|
+
|
212
|
+
**activeClassName**
|
213
|
+
|
214
|
+
类型:`string`
|
215
|
+
|
216
|
+
设置路由匹配时额外 class。
|
217
|
+
|
218
|
+
```tsx
|
219
|
+
<NavLink to="/faq" activeClassName="selected">
|
220
|
+
FAQs
|
221
|
+
</NavLink>
|
222
|
+
```
|
223
|
+
|
224
|
+
**activeStyle**
|
225
|
+
|
226
|
+
类型:`object`
|
227
|
+
|
228
|
+
设置路由匹配时额外的样式。
|
229
|
+
|
230
|
+
```tsx
|
231
|
+
<NavLink
|
232
|
+
to="/faq"
|
233
|
+
activeStyle={{
|
234
|
+
fontWeight: "bold",
|
235
|
+
color: "red"
|
236
|
+
}}
|
237
|
+
>
|
238
|
+
FAQs
|
239
|
+
</NavLink>
|
240
|
+
```
|
241
|
+
|
242
|
+
**exact**
|
243
|
+
|
244
|
+
类型:`boolean`
|
245
|
+
|
246
|
+
|
247
|
+
**strict**
|
248
|
+
|
249
|
+
类型:`boolean`
|
250
|
+
|
251
|
+
**isActive**
|
252
|
+
|
253
|
+
类型:`function`
|
254
|
+
|
255
|
+
如果你想自定义当前 Link 是否激活的逻辑,可以使用 `isActive`。
|
256
|
+
|
257
|
+
```tsx
|
258
|
+
<NavLink
|
259
|
+
to="/events/123"
|
260
|
+
isActive={(match, location) => {
|
261
|
+
if (!match) {
|
262
|
+
return false;
|
263
|
+
}
|
264
|
+
|
265
|
+
// only consider an event active if its event id is an odd number
|
266
|
+
const eventID = parseInt(match.params.eventID);
|
267
|
+
return !isNaN(eventID) && eventID % 2 === 1;
|
268
|
+
}}
|
269
|
+
>
|
270
|
+
Event 123
|
271
|
+
</NavLink>
|
272
|
+
```
|
273
|
+
|
274
|
+
**location**
|
275
|
+
|
276
|
+
类型:`object`
|
277
|
+
|
278
|
+
`NavLink` 默认会和当前的 `history.location` 进行匹配,判断是否处于激活状态。如果你想指定要匹配的 `location` 对象,可以使用该参数。
|
279
|
+
|
280
|
+
**area-current**
|
281
|
+
|
282
|
+
类型:`string`
|
283
|
+
|
284
|
+
参考 [aria-current](https://www.w3.org/TR/wai-aria-1.1/#aria-current)
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
### Prompt
|
289
|
+
|
290
|
+
```ts
|
291
|
+
interface PromptProps {
|
292
|
+
message: string | ((location: H.Location, action: H.Action) => string | boolean);
|
293
|
+
when?: boolean;
|
294
|
+
}
|
295
|
+
|
296
|
+
class Prompt extends React.Component<PromptProps, any> {}
|
297
|
+
```
|
298
|
+
|
299
|
+
`Prompt` 组件可用于在页面跳转前,进行二次确认是否跳转。
|
300
|
+
|
301
|
+
```tsx
|
302
|
+
<Prompt
|
303
|
+
when={formIsHalfFilledOut}
|
304
|
+
message="Are you sure you want to leave?"
|
305
|
+
/>
|
306
|
+
```
|
307
|
+
|
308
|
+
#### PromptProps
|
309
|
+
|
310
|
+
**message**
|
311
|
+
|
312
|
+
类型:`string` | `function`
|
313
|
+
|
314
|
+
在页面跳转前的二次确认提示信息,支持传入函数形式。
|
315
|
+
|
316
|
+
```tsx
|
317
|
+
<Prompt
|
318
|
+
message={(location, action) => {
|
319
|
+
if (action === 'POP') {
|
320
|
+
console.log("Backing up...")
|
321
|
+
}
|
322
|
+
|
323
|
+
return location.pathname.startsWith("/app")
|
324
|
+
? true
|
325
|
+
: `Are you sure you want to go to ${location.pathname}?`
|
326
|
+
}}
|
327
|
+
/>
|
328
|
+
```
|
329
|
+
|
330
|
+
**when**
|
331
|
+
|
332
|
+
类型:`boolean`
|
333
|
+
|
334
|
+
当 `when` 为 `true` 时,才会在页面跳转前展示二次确认提示。
|
335
|
+
|
336
|
+
|
337
|
+
### Route
|
338
|
+
|
339
|
+
```ts
|
340
|
+
interface RouteProps<
|
341
|
+
Path extends string = string,
|
342
|
+
Params extends { [K: string]: string | undefined } = ExtractRouteParams<Path, string>
|
343
|
+
> {
|
344
|
+
location?: H.Location;
|
345
|
+
component?: React.ComponentType<RouteComponentProps<any>> | React.ComponentType<any>;
|
346
|
+
render?: (props: RouteComponentProps<Params>) => React.ReactNode;
|
347
|
+
children?: ((props: RouteChildrenProps<Params>) => React.ReactNode) | React.ReactNode;
|
348
|
+
path?: Path | Path[];
|
349
|
+
exact?: boolean;
|
350
|
+
sensitive?: boolean;
|
351
|
+
strict?: boolean;
|
352
|
+
}
|
353
|
+
|
354
|
+
class Route<T extends {} = {}, Path extends string = string> extends React.Component<
|
355
|
+
RouteProps<Path> & OmitNative<T, keyof RouteProps>,
|
356
|
+
any
|
357
|
+
> {}
|
358
|
+
```
|
359
|
+
|
360
|
+
`Route` 组件用于定义路由。
|
361
|
+
|
362
|
+
#### component
|
363
|
+
|
364
|
+
类型:`React.ComponentType`
|
365
|
+
|
366
|
+
当路由匹配成功,会渲染传入 `component` 的组件。
|
367
|
+
|
368
|
+
```tsx
|
369
|
+
import React from "react";
|
370
|
+
import { Route } from "@modern-js/runtime/router";
|
371
|
+
|
372
|
+
// All route props (match, location and history) are available to User
|
373
|
+
function User(props) {
|
374
|
+
return <h1>Hello {props.match.params.username}!</h1>;
|
375
|
+
}
|
376
|
+
|
377
|
+
function App() {
|
378
|
+
return <Route path="/user/:username" component={User} />;
|
379
|
+
}
|
380
|
+
```
|
381
|
+
|
382
|
+
:::tip 提示
|
383
|
+
如果 component 是一个 inline function,如 `<Route path="/user/:username" component={() => 'hello'} />`,因为每次 rerender 的时候,component 都会是一个新的 `type`,所以 component 组件会先 unmount,再 mount。我们需要避免这种写法,或者使用 render 代替 component。
|
384
|
+
:::
|
385
|
+
|
386
|
+
#### render
|
387
|
+
|
388
|
+
类型:`(props: RouteComponentProps<Params>) => React.ReactNode`
|
389
|
+
|
390
|
+
允许使用 `inline function` 进行渲染,同时不会有 `component` remounting 的问题。
|
391
|
+
|
392
|
+
```tsx
|
393
|
+
import React from "react";
|
394
|
+
import { Route } from "@modern-js/runtime/router";
|
395
|
+
|
396
|
+
function App() {
|
397
|
+
<Route path="/home" render={() => <div>Home</div>} />
|
398
|
+
}
|
399
|
+
```
|
400
|
+
|
401
|
+
:::info 注
|
402
|
+
component 的优先级高于 render。
|
403
|
+
:::
|
404
|
+
|
405
|
+
#### children
|
406
|
+
|
407
|
+
类型:`((props: RouteChildrenProps<Params>) => React.ReactNode) | React.ReactNode`
|
408
|
+
|
409
|
+
如果在路由匹配或不匹配的情况下,都需要渲染一些内容,那么可以使用 `children` 参数。
|
410
|
+
|
411
|
+
```tsx
|
412
|
+
function ListItemLink({ to, ...rest }) {
|
413
|
+
return (
|
414
|
+
<Route
|
415
|
+
path={to}
|
416
|
+
children={({ match }) => (
|
417
|
+
<li className={match ? "active" : ""}>
|
418
|
+
<Link to={to} {...rest} />
|
419
|
+
</li>
|
420
|
+
)}
|
421
|
+
/>
|
422
|
+
);
|
423
|
+
}
|
424
|
+
|
425
|
+
function App() {
|
426
|
+
return <ul>
|
427
|
+
<ListItemLink to="/somewhere" />
|
428
|
+
<ListItemLink to="/somewhere-else" />
|
429
|
+
</ul>;
|
430
|
+
}
|
431
|
+
```
|
432
|
+
|
433
|
+
#### path
|
434
|
+
|
435
|
+
类型:`string | string[]`
|
436
|
+
|
437
|
+
符合 [path-to-regexp@^1.7.0](https://github.com/pillarjs/path-to-regexp/tree/v1.7.0) 匹配规则的 url 字符串或数组。
|
438
|
+
|
439
|
+
```tsx
|
440
|
+
<Route path="/users/:id">
|
441
|
+
<User />
|
442
|
+
</Route>
|
443
|
+
|
444
|
+
<Route path={["/users/:id", "/profile/:id"]}>
|
445
|
+
<User />
|
446
|
+
</Route>
|
447
|
+
```
|
448
|
+
|
449
|
+
#### exact
|
450
|
+
|
451
|
+
类型:`boolean`
|
452
|
+
|
453
|
+
默认值:`false`
|
454
|
+
|
455
|
+
当 `exact` 值为 `true` 时,会进行准确匹配。
|
456
|
+
|
457
|
+
| path | location.pathname | exact | matches? |
|
458
|
+
| - | - | - | - |
|
459
|
+
| /one | /one/two | true | no |
|
460
|
+
| /one | /one/two | false | yes |
|
461
|
+
|
462
|
+
|
463
|
+
#### strict
|
464
|
+
|
465
|
+
类型:`boolean`
|
466
|
+
|
467
|
+
默认值:`false`
|
468
|
+
|
469
|
+
当 `strict` 值为 `true` 时,会进行严格匹配。若 `path` 以 '/' 结尾,那么 `location.pathname` 也需要以 '/' 结尾,才能匹配。
|
470
|
+
|
471
|
+
| path | location.pathname | matches? |
|
472
|
+
| - | - | - |
|
473
|
+
| /one/ | /one | no |
|
474
|
+
| /one/ | /one/ | yes |
|
475
|
+
| /one/| /one/two | yes |
|
476
|
+
|
477
|
+
#### sensitive
|
478
|
+
|
479
|
+
类型:`boolean`
|
480
|
+
|
481
|
+
默认值:`false`
|
482
|
+
|
483
|
+
当 `sensitive` 设置为 `true`,则 path 大小写不敏感。
|
484
|
+
|
485
|
+
#### location
|
486
|
+
|
487
|
+
类型:`object`
|
488
|
+
|
489
|
+
## 更多底层 API
|
490
|
+
|
491
|
+
若想要了解更多的底层 API 信息,可至 [react-router 官网](https://reactrouter.com/web/guides/start) 查看。
|
492
|
+
|
@@ -0,0 +1,64 @@
|
|
1
|
+
---
|
2
|
+
title: useLoader
|
3
|
+
sidebar_position: 2
|
4
|
+
---
|
5
|
+
|
6
|
+
:::info 补充信息
|
7
|
+
一个同构的 API,通常会用来做异步请求。当 SSR 的时候,服务端使用 `useLoader` 预加载数据,同时浏览器端也会复用这部分数据。
|
8
|
+
|
9
|
+
```ts
|
10
|
+
import { useLoader } from "@modern-js/runtime";
|
11
|
+
```
|
12
|
+
|
13
|
+
:::
|
14
|
+
|
15
|
+
## API
|
16
|
+
|
17
|
+
`useLoader(loaderFn,[options]) => object`
|
18
|
+
|
19
|
+
### 参数
|
20
|
+
|
21
|
+
- loaderFn: `(context: any, params: Record<string, any>) => Promise`,用于加载数据的函数,返回 Promise。
|
22
|
+
- [options]: `object` ,可选配置项。
|
23
|
+
- [onSuccess]: `(data: Record<string, any>) => void`,`loaderFn` 执行成功的回调。
|
24
|
+
- [onError]: `(error: Error) => void`,`loaderFn` 执行失败的回调。
|
25
|
+
- [initialData]: `Record<string, any>`, `loaderFn` 首次执行前的初始数据,对应返回值中的 `data` 字段。
|
26
|
+
- [skip]: `boolean`,当值为 `true` 时, `loaderFn` 不执行。
|
27
|
+
- [params]: `Record<string, any>`, 当 `params` 序列化结果发生改变时,`loaderFn` 会重新执行。同时,`params` 也会作为 `loaderFn` 的第二个参数被传入。
|
28
|
+
- [static]: `boolean`,当值为 `true` 时,`useLoader` 用于 [SSG](/docs/guides/advanced-features/ssg) 编译阶段数据的获取。
|
29
|
+
|
30
|
+
### 返回值
|
31
|
+
|
32
|
+
- data: `Record<string, any>`, `loaderFn` 函数执行成功时的返回数据。
|
33
|
+
- loading: `boolean`,表示 `loaderFn` 是否处于执行过程中。
|
34
|
+
- error: `Error`,`loaderFn` 函数执行失败时的错误信息。
|
35
|
+
- reload: `(params?: Params) => Promise<any> | undefined`,调用该函数可以重新执行 `loaderFn`。
|
36
|
+
- params?: `Record<string, any> | undefined`,当 `params` 为 `undefined`,`loaderFn` 执行时将复用上次的 `params` 参数;当 `params` 有值时,则会使用新的 `params` 参数重新执行 `loaderFn`。
|
37
|
+
- reloading: `boolean`,调用 `reload` 的执行过程中, `reloading` 值为 `true`。
|
38
|
+
|
39
|
+
## 示例
|
40
|
+
|
41
|
+
### 普通使用
|
42
|
+
|
43
|
+
```ts
|
44
|
+
function Container() {
|
45
|
+
const { data, error, loading } = useLoader(
|
46
|
+
async (context, params) => {
|
47
|
+
console.log(params) // nicole
|
48
|
+
return fetch(user);
|
49
|
+
},
|
50
|
+
{
|
51
|
+
onSuccess: data => {
|
52
|
+
console.log('I did success:(', data);
|
53
|
+
},
|
54
|
+
onError: error => {
|
55
|
+
console.log('I met error:)', error);
|
56
|
+
},
|
57
|
+
initialData: { name: 'nicole', gender: 'female' },
|
58
|
+
params: 'nicole'
|
59
|
+
}
|
60
|
+
);
|
61
|
+
|
62
|
+
return ...;
|
63
|
+
}
|
64
|
+
```
|
@@ -0,0 +1,26 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
---
|
4
|
+
# 默认别名
|
5
|
+
|
6
|
+
|
7
|
+
:::tip 提示
|
8
|
+
- 除了以下默认别名,开发者可以在 `modern.config.js` 中自定义别名,详见[如何配置别名](/docs/configure/app/source/alias)。
|
9
|
+
:::
|
10
|
+
|
11
|
+
|
12
|
+
Modern.js 推荐通过别名的方式引用源码,其中包含 3 种默认别名:
|
13
|
+
- `@/`:等价于引用项目根目录 `src/*` 下的文件。
|
14
|
+
- `@api/`:等价于引用项目根目录下 `api/*` 下的文件(需要先开启 BFF 功能)。
|
15
|
+
- `@shared/`:等价于引用项目根目录下 `shared/*` 下的文件。
|
16
|
+
|
17
|
+
|
18
|
+
## 示例
|
19
|
+
下面的例子展示了如何通过默认别名引用函数。
|
20
|
+
```tsx
|
21
|
+
import { hello } from '@/common/utils';
|
22
|
+
|
23
|
+
hello();
|
24
|
+
|
25
|
+
```
|
26
|
+
引用 `@/common/utils` 相当于引用 `src/common/utils`。
|
@@ -0,0 +1,68 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 1
|
3
|
+
title: 环境变量
|
4
|
+
---
|
5
|
+
|
6
|
+
|
7
|
+
Modern.js 默认提供了下列环境变量:
|
8
|
+
|
9
|
+
- `NODE_ENV`:表示当前的执行环境。
|
10
|
+
- `PORT`:表示应用运行的端口。
|
11
|
+
|
12
|
+
## NODE_ENV
|
13
|
+
|
14
|
+
表示当前的执行环境,是**只读的**的环境变量,其值在不同的执行命令下具有不同的值:
|
15
|
+
|
16
|
+
- `production`:执行 `modern build` 命令时的默认值。
|
17
|
+
- `test`:执行 `modern test` 命令时的默认值。
|
18
|
+
- `development`:执行 `modern dev` 命令时的默认值,同时也是其他所有情况下的默认值。
|
19
|
+
|
20
|
+
## 自定义环境变量
|
21
|
+
|
22
|
+
除了上述默认提供的环境变量,还可以通过 `shell` 或 `.env` 文件自定义环境变量。
|
23
|
+
|
24
|
+
### 通过 `shell` 指定
|
25
|
+
|
26
|
+
在命令前添加自定义环境变量:
|
27
|
+
|
28
|
+
```shell
|
29
|
+
FOO=123 BAR=456 pnpm run dev
|
30
|
+
```
|
31
|
+
|
32
|
+
### 通过 `.env` 文件指定
|
33
|
+
|
34
|
+
在项目根目录创建 `.env` 文件,其中添加自定义环境变量:
|
35
|
+
|
36
|
+
```env
|
37
|
+
FOO=123
|
38
|
+
BAR=456
|
39
|
+
```
|
40
|
+
|
41
|
+
更多文件格式:
|
42
|
+
|
43
|
+
- `.env`:默认文件。
|
44
|
+
- `.env.development`:当 `NODE_ENV` 值为 `development` 时,读取该文件。
|
45
|
+
- `.env.production`:当 `NODE_ENV` 值为 `production` 时,读取该文件。
|
46
|
+
- `.env.test`:当 `NODE_ENV` 值为 `test` 时,读取该文件。
|
47
|
+
|
48
|
+
### 优先级
|
49
|
+
|
50
|
+
- 当 `.env.*` 与 `.env` 同时存在,`.env.*` 会和 `.env` 进行合并,相同名称的环境变量以 `.env.*` 为准。
|
51
|
+
- 通过 `.env` 设置的环境变量,优先级高于 `shell` 指定的环境变量。
|
52
|
+
|
53
|
+
## 使用环境变量
|
54
|
+
|
55
|
+
### JS/TS 代码内使用
|
56
|
+
|
57
|
+
通过 `process.env.*` 直接获取环境变量。
|
58
|
+
|
59
|
+
```js
|
60
|
+
console.log(process.env.NODE_ENV);
|
61
|
+
// "development"
|
62
|
+
```
|
63
|
+
|
64
|
+
### HTML 代码片段使用
|
65
|
+
|
66
|
+
```html title="config/html/head.ejs"
|
67
|
+
<meta name="env" content="<%=process.env.NODE_ENV %>" />
|
68
|
+
```
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
sidebar_position: 8
|
3
|
+
title: Provider
|
4
|
+
---
|
5
|
+
|
6
|
+
import ReduckTip from '@site/docs/components/reduck-tip.md'
|
7
|
+
|
8
|
+
<ReduckTip />
|
9
|
+
|
10
|
+
`Provider` 是一个组件,它将 Reduck 的 Store 注入到应用的组件树中,使组件树内部的组件可以访问 Model。一般情况下,`Provider` 会定义在组件树的最顶层。
|
11
|
+
|
12
|
+
## 类型
|
13
|
+
|
14
|
+
```ts
|
15
|
+
interface ProviderProps {
|
16
|
+
store?: ReduckStore;
|
17
|
+
config?: AppConfig;
|
18
|
+
}
|
19
|
+
```
|
20
|
+
|
21
|
+
## 参数
|
22
|
+
|
23
|
+
- store:可选。[`createStore`](./create-store.md) 创建的 Store 对象。
|
24
|
+
- config:可选。创建 Reduck Store 的配置,同 [`createApp`](./create-app.md) 的 `config` 参数。
|
25
|
+
|
26
|
+
## 示例
|
27
|
+
```tsx
|
28
|
+
// 应用入口文件
|
29
|
+
|
30
|
+
ReactDOM.render(
|
31
|
+
<Provider>
|
32
|
+
<App />
|
33
|
+
</Provider>,
|
34
|
+
document.getElementById('root'),
|
35
|
+
);
|
36
|
+
```
|