@modern-js/main-doc 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/index.md +0 -5
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/serve.md +2 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/framework/lambda.md +12 -12
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/api.md +13 -13
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/app.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/common.md +1 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/app.md +16 -9
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/index_.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/routes.md +5 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/server.md +6 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/stories.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/test.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/app/define-config.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/bff/hook.md +3 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +3 -6
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/create-app.md +1 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-loader.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-module-apps.md +58 -51
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/use-runtime-context.md +3 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/index.md +0 -5
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/Provider.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/connect.md +8 -5
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-store.md +1 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/handle-effect.md +3 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-model.md +0 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/router/router.md +23 -54
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/ssr/no-ssr.md +1 -8
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/ssr/pre-render.md +10 -6
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/render.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/css-in-js.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/head.md +3 -5
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/utility/loadable.md +14 -15
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/web-server/hook.md +4 -5
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/web-server/middleware.md +7 -6
- package/en/docusaurus-plugin-content-docs/current/components/command-tip.md +3 -2
- package/en/docusaurus-plugin-content-docs/current/components/debug-app.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/components/enable-bff.md +10 -14
- package/en/docusaurus-plugin-content-docs/current/components/enable-micro-frontend.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/components/global-proxy-config.md +6 -9
- package/en/docusaurus-plugin-content-docs/current/components/global-proxy.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/components/micro-master-manifest-config.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/components/micro-runtime-config.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/components/prerequisites.md +19 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-migration.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/components/reduck-tip.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/components/router-legacy-tip.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/auto-load-plugin.md +8 -9
- package/en/docusaurus-plugin-content-docs/current/configure/app/bff/prefix.md +6 -6
- package/en/docusaurus-plugin-content-docs/current/configure/app/bff/proxy.md +8 -9
- package/en/docusaurus-plugin-content-docs/current/configure/app/builder-plugins.md +6 -6
- package/en/docusaurus-plugin-content-docs/current/configure/app/deploy/microFrontend.md +11 -13
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/asset-prefix.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/hmr.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/https.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/port.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/progress-bar.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/proxy.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/start-url.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/experiments/lazy-compilation.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/app-icon.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/crossorigin.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/disable-html-folder.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon-by-entries.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject-by-entries.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta-by-entries.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/mount-id.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/tags-by-entries.md +12 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/tags.md +12 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-by-entries.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters-by-entries.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title-by-entries.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/asset-prefix.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/assets-retry.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/charset.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/clean-dist-path.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/convert-to-rem.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/copy.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/css-module-local-ident-name.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/data-uri-limit.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-module-extension.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-filename-hash.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-inline-runtime-chunk.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-minimize.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-node-polyfill.md +8 -6
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-source-map.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-ts-checker.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/dist-path.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-fallback.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-manifest.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-css-module-tsdeclaration.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-scripts.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-styles.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-latest-decorators.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/externals.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/filename.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/legal-comments.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/override-browserslist.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/polyfill.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/ssg.md +3 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/svg-default-export.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/build-cache.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/bundle-analyze.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/chunk-split.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/print-file-size.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/profile.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-console.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-moment-locale.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +6 -6
- package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/intro.md +11 -10
- package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/master-app.md +1 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/router.md +7 -7
- package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/state.md +15 -15
- package/en/docusaurus-plugin-content-docs/current/configure/app/security/sri.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/base-url.md +3 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/enable-framework-ext.md +5 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/port.md +24 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/public-routes.md +6 -6
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/routes.md +7 -7
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/ssr-by-entries.md +5 -5
- package/en/docusaurus-plugin-content-docs/current/configure/app/server/ssr.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/alias.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/compile-js-data-uri.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/config-dir.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/define.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/design-system.md +656 -634
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/disable-default-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/disable-entry-dirs.md +8 -8
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/enable-async-entry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/entries-dir.md +7 -7
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/entries.md +4 -6
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/exclude.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/global-vars.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/include.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/module-scopes.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/pre-entry.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-extension-prefix.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-main-fields.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/autoprefixer.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/babel.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-extract.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-loader.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/dev-server.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/html-plugin.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/inspector.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/jest.md +9 -9
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/less.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/minify-css.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/postcss.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/pug.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/sass.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/style-loader.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/styled-components.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/swc.md +12 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/terser.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-checker.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-loader.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack-chain.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/bff/frameworks.md +6 -6
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/bff/function.md +44 -38
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/bff/index.md +9 -9
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/bff/type.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/code-split.md +3 -4
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/compatibility.md +6 -7
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/eslint.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/index.md +0 -5
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/low-level.md +17 -19
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/ssg.md +8 -10
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/ssr.md +5 -11
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/testing.md +3 -3
- package/en/docusaurus-plugin-content-docs/current/guides/advanced-features/web-server.md +3 -4
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/alias.md +7 -11
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-in-js.md +6 -6
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/css-modules.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/less-sass.md +1 -2
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/postcss.md +43 -47
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/css/tailwindcss.md +3 -3
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/data-fetch.md +106 -192
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/env-vars.md +8 -8
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/html.md +55 -47
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/mock.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/proxy.md +4 -5
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/routes.md +90 -9
- package/en/docusaurus-plugin-content-docs/current/guides/concept/entries.md +1 -2
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/quick-start.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/guides/get-started/upgrade.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/extend.md +13 -13
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/hook-list.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/hook.md +57 -54
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/implement.md +11 -11
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/lifecycle.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/framework-plugin/plugin-api.md +4 -4
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/app.md +33 -33
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/ejs.md +3 -3
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/fs.md +3 -3
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/git.md +3 -2
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/handlebars.md +3 -4
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/json.md +9 -12
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/npm.md +2 -3
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/introduce.md +4 -3
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/run-in-js.md +4 -5
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/structure.md +13 -11
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/common.md +18 -27
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/abstract.md +1 -4
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/introduce.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +4 -5
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/onForged.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +1 -4
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +1 -3
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInput.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/type.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/introduce.md +8 -9
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/develop.md +11 -12
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/use.md +8 -8
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/project.md +1 -2
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/micro-frontend/c01-introduction.md +7 -8
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/micro-frontend/c02-development.md +18 -21
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/micro-frontend/c03-main-app.md +41 -44
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/micro-frontend/c04-communicate.md +7 -5
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/micro-frontend/c05-mixed-stack.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/auto-actions.md +0 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/computed-state.md +0 -2
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/define-model.md +3 -6
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/faq.md +2 -5
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/manage-effects.md +2 -5
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/model-communicate.md +1 -4
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/performance.md +1 -5
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/quick-start.md +0 -6
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/redux-integration.md +3 -2
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/test-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/typescript-best-practice.md +13 -14
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/use-model.md +14 -12
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/model/use-out-of-modernjs.md +4 -6
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c01-start.md +19 -19
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c02-component.md +11 -11
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c03-css.md +52 -55
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c04-routes.md +23 -23
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c05-loader.md +12 -11
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c06-model.md +28 -28
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c07-container.md +25 -26
- package/en/docusaurus-plugin-content-docs/current/tutorials/first-app/c08-entries.md +36 -38
- package/en/docusaurus-plugin-content-docs/current.json +3 -47
- package/package.json +3 -3
- package/scripts/config.ts +4 -2
- package/scripts/summary.en.json +1 -1
- package/scripts/summary.zh.json +1 -1
- package/scripts/sync.ts +1 -1
- package/zh/apis/app/commands/index.md +0 -5
- package/zh/apis/app/commands/lint.md +1 -1
- package/zh/apis/app/commands/serve.md +2 -4
- package/zh/apis/app/hooks/api/framework/lambda.md +12 -12
- package/zh/apis/app/hooks/api/functions/api.md +13 -13
- package/zh/apis/app/hooks/api/functions/app.md +0 -2
- package/zh/apis/app/hooks/api/functions/common.md +1 -1
- package/zh/apis/app/hooks/index.md +0 -5
- package/zh/apis/app/hooks/shared.md +0 -1
- package/zh/apis/app/hooks/src/app.md +16 -9
- package/zh/apis/app/hooks/src/index_.md +0 -2
- package/zh/apis/app/hooks/src/routes.md +6 -7
- package/zh/apis/app/hooks/src/server.md +6 -4
- package/zh/apis/app/hooks/src/stories.md +1 -1
- package/zh/apis/app/hooks/src/test.md +1 -1
- package/zh/apis/app/runtime/app/define-config.md +1 -2
- package/zh/apis/app/runtime/bff/hook.md +3 -3
- package/zh/apis/app/runtime/core/bootstrap.md +2 -3
- package/zh/apis/app/runtime/core/use-loader.md +2 -2
- package/zh/apis/app/runtime/core/use-module-apps.md +53 -50
- package/zh/apis/app/runtime/core/use-runtime-context.md +3 -4
- package/zh/apis/app/runtime/index.md +0 -5
- package/zh/apis/app/runtime/model/Provider.md +1 -0
- package/zh/apis/app/runtime/model/auto-actions.md +1 -1
- package/zh/apis/app/runtime/model/connect.md +9 -5
- package/zh/apis/app/runtime/model/create-app.md +3 -3
- package/zh/apis/app/runtime/model/create-store.md +2 -4
- package/zh/apis/app/runtime/model/handle-effect.md +3 -4
- package/zh/apis/app/runtime/model/model_.md +0 -3
- package/zh/apis/app/runtime/model/use-local-model.md +0 -1
- package/zh/apis/app/runtime/model/use-store.md +0 -2
- package/zh/apis/app/runtime/router/router.md +23 -53
- package/zh/apis/app/runtime/ssr/no-ssr.md +1 -5
- package/zh/apis/app/runtime/ssr/pre-render.md +10 -6
- package/zh/apis/app/runtime/testing/cleanup.md +2 -2
- package/zh/apis/app/runtime/testing/render.md +0 -2
- package/zh/apis/app/runtime/utility/css-in-js.md +2 -2
- package/zh/apis/app/runtime/utility/head.md +3 -5
- package/zh/apis/app/runtime/utility/loadable.md +14 -15
- package/zh/apis/app/runtime/web-server/hook.md +5 -4
- package/zh/apis/app/runtime/web-server/middleware.md +8 -6
- package/zh/apis/monorepo/commands/bump.md +1 -1
- package/zh/apis/monorepo/commands/change.md +3 -2
- package/zh/apis/monorepo/commands/gen-release-note.md +1 -2
- package/zh/apis/monorepo/commands/index.md +1 -6
- package/zh/apis/monorepo/commands/lint.md +1 -1
- package/zh/apis/monorepo/commands/release.md +0 -1
- package/zh/apis/monorepo/hooks/index.md +1 -6
- package/zh/components/command-tip.md +3 -2
- package/zh/components/enable-bff.md +10 -14
- package/zh/components/enable-micro-frontend.md +4 -4
- package/zh/components/global-proxy-config.md +6 -9
- package/zh/components/global-proxy.md +0 -1
- package/zh/components/init-app.md +0 -1
- package/zh/components/micro-master-manifest-config.md +2 -2
- package/zh/components/micro-runtime-config.md +1 -1
- package/zh/components/reduck-migration.md +0 -1
- package/zh/components/router-legacy-tip.md +0 -1
- package/zh/configure/app/auto-load-plugin.md +9 -10
- package/zh/configure/app/bff/prefix.md +6 -10
- package/zh/configure/app/bff/proxy.md +9 -8
- package/zh/configure/app/builder-plugins.md +6 -6
- package/zh/configure/app/deploy/microFrontend.md +11 -11
- package/zh/configure/app/dev/asset-prefix.md +2 -2
- package/zh/configure/app/dev/hmr.md +2 -2
- package/zh/configure/app/dev/https.md +2 -2
- package/zh/configure/app/dev/port.md +2 -2
- package/zh/configure/app/dev/progress-bar.md +2 -2
- package/zh/configure/app/dev/proxy.md +0 -1
- package/zh/configure/app/dev/start-url.md +2 -2
- package/zh/configure/app/experiments/lazy-compilation.md +2 -2
- package/zh/configure/app/html/app-icon.md +2 -2
- package/zh/configure/app/html/crossorigin.md +2 -2
- package/zh/configure/app/html/disable-html-folder.md +2 -2
- package/zh/configure/app/html/favicon-by-entries.md +2 -2
- package/zh/configure/app/html/favicon.md +2 -2
- package/zh/configure/app/html/inject-by-entries.md +2 -2
- package/zh/configure/app/html/inject.md +2 -2
- package/zh/configure/app/html/meta-by-entries.md +2 -2
- package/zh/configure/app/html/meta.md +2 -2
- package/zh/configure/app/html/mount-id.md +2 -2
- package/zh/configure/app/html/tags-by-entries.md +12 -0
- package/zh/configure/app/html/tags.md +12 -0
- package/zh/configure/app/html/template-by-entries.md +2 -2
- package/zh/configure/app/html/template-parameters-by-entries.md +2 -2
- package/zh/configure/app/html/template-parameters.md +2 -2
- package/zh/configure/app/html/template.md +2 -2
- package/zh/configure/app/html/title-by-entries.md +2 -2
- package/zh/configure/app/html/title.md +2 -2
- package/zh/configure/app/output/asset-prefix.md +2 -2
- package/zh/configure/app/output/assets-retry.md +2 -2
- package/zh/configure/app/output/charset.md +2 -2
- package/zh/configure/app/output/clean-dist-path.md +2 -2
- package/zh/configure/app/output/convert-to-rem.md +2 -2
- package/zh/configure/app/output/copy.md +2 -2
- package/zh/configure/app/output/css-module-local-ident-name.md +2 -2
- package/zh/configure/app/output/data-uri-limit.md +2 -2
- package/zh/configure/app/output/disable-css-extract.md +2 -2
- package/zh/configure/app/output/disable-css-module-extension.md +2 -2
- package/zh/configure/app/output/disable-filename-hash.md +2 -2
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +2 -2
- package/zh/configure/app/output/disable-minimize.md +2 -2
- package/zh/configure/app/output/disable-node-polyfill.md +8 -8
- package/zh/configure/app/output/disable-source-map.md +2 -2
- package/zh/configure/app/output/disable-ts-checker.md +2 -2
- package/zh/configure/app/output/dist-path.md +2 -2
- package/zh/configure/app/output/enable-asset-fallback.md +2 -2
- package/zh/configure/app/output/enable-asset-manifest.md +2 -2
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +2 -2
- package/zh/configure/app/output/enable-inline-scripts.md +2 -2
- package/zh/configure/app/output/enable-inline-styles.md +2 -2
- package/zh/configure/app/output/enable-latest-decorators.md +2 -2
- package/zh/configure/app/output/externals.md +2 -2
- package/zh/configure/app/output/filename.md +2 -2
- package/zh/configure/app/output/legal-comments.md +2 -2
- package/zh/configure/app/output/override-browserslist.md +2 -2
- package/zh/configure/app/output/polyfill.md +2 -2
- package/zh/configure/app/output/ssg.md +3 -2
- package/zh/configure/app/output/svg-default-export.md +2 -2
- package/zh/configure/app/performance/build-cache.md +2 -2
- package/zh/configure/app/performance/bundle-analyze.md +2 -2
- package/zh/configure/app/performance/chunk-split.md +2 -2
- package/zh/configure/app/performance/print-file-size.md +2 -2
- package/zh/configure/app/performance/profile.md +2 -2
- package/zh/configure/app/performance/remove-console.md +2 -2
- package/zh/configure/app/performance/remove-moment-locale.md +2 -2
- package/zh/configure/app/plugins.md +6 -6
- package/zh/configure/app/runtime/intro.md +39 -11
- package/zh/configure/app/runtime/master-app.md +1 -2
- package/zh/configure/app/runtime/router.md +6 -7
- package/zh/configure/app/runtime/state.md +15 -16
- package/zh/configure/app/security/sri.md +2 -2
- package/zh/configure/app/server/base-url.md +3 -6
- package/zh/configure/app/server/enable-framework-ext.md +5 -4
- package/zh/configure/app/server/port.md +24 -6
- package/zh/configure/app/server/public-routes.md +6 -8
- package/zh/configure/app/server/routes.md +6 -6
- package/zh/configure/app/server/ssr-by-entries.md +5 -8
- package/zh/configure/app/server/ssr.md +4 -5
- package/zh/configure/app/source/alias.md +2 -2
- package/zh/configure/app/source/compile-js-data-uri.md +2 -2
- package/zh/configure/app/source/config-dir.md +2 -2
- package/zh/configure/app/source/define.md +2 -2
- package/zh/configure/app/source/design-system.md +656 -630
- package/zh/configure/app/source/disable-default-entries.md +3 -3
- package/zh/configure/app/source/disable-entry-dirs.md +8 -7
- package/zh/configure/app/source/enable-async-entry.md +3 -3
- package/zh/configure/app/source/entries-dir.md +7 -7
- package/zh/configure/app/source/entries.md +5 -6
- package/zh/configure/app/source/exclude.md +2 -2
- package/zh/configure/app/source/global-vars.md +2 -2
- package/zh/configure/app/source/include.md +2 -2
- package/zh/configure/app/source/module-scopes.md +2 -2
- package/zh/configure/app/source/pre-entry.md +2 -2
- package/zh/configure/app/source/resolve-extension-prefix.md +2 -2
- package/zh/configure/app/source/resolve-main-fields.md +2 -2
- package/zh/configure/app/testing/transformer.md +2 -3
- package/zh/configure/app/tools/autoprefixer.md +2 -2
- package/zh/configure/app/tools/babel.md +2 -2
- package/zh/configure/app/tools/css-extract.md +2 -2
- package/zh/configure/app/tools/css-loader.md +2 -2
- package/zh/configure/app/tools/dev-server.md +2 -2
- package/zh/configure/app/tools/html-plugin.md +2 -2
- package/zh/configure/app/tools/inspector.md +2 -2
- package/zh/configure/app/tools/jest.md +9 -9
- package/zh/configure/app/tools/less.md +2 -2
- package/zh/configure/app/tools/minify-css.md +2 -2
- package/zh/configure/app/tools/postcss.md +2 -2
- package/zh/configure/app/tools/pug.md +2 -2
- package/zh/configure/app/tools/sass.md +2 -2
- package/zh/configure/app/tools/style-loader.md +2 -2
- package/zh/configure/app/tools/styled-components.md +2 -2
- package/zh/configure/app/tools/swc.md +12 -1
- package/zh/configure/app/tools/terser.md +2 -2
- package/zh/configure/app/tools/ts-checker.md +2 -2
- package/zh/configure/app/tools/ts-loader.md +2 -2
- package/zh/configure/app/tools/webpack-chain.md +2 -2
- package/zh/configure/app/tools/webpack.md +2 -2
- package/zh/guides/advanced-features/bff/frameworks.md +6 -6
- package/zh/guides/advanced-features/bff/function.md +49 -44
- package/zh/guides/advanced-features/bff/index.md +9 -9
- package/zh/guides/advanced-features/bff/type.md +0 -1
- package/zh/guides/advanced-features/code-split.md +3 -3
- package/zh/guides/advanced-features/compatibility.md +6 -7
- package/zh/guides/advanced-features/eslint.md +0 -1
- package/zh/guides/advanced-features/index.md +0 -5
- package/zh/guides/advanced-features/low-level.md +17 -19
- package/zh/guides/advanced-features/ssg.md +8 -9
- package/zh/guides/advanced-features/ssr.md +5 -11
- package/zh/guides/advanced-features/testing.md +3 -2
- package/zh/guides/advanced-features/web-server.md +3 -4
- package/zh/guides/basic-features/alias.md +7 -11
- package/zh/guides/basic-features/css/css-in-js.md +5 -5
- package/zh/guides/basic-features/css/css-modules.md +2 -2
- package/zh/guides/basic-features/css/postcss.md +42 -46
- package/zh/guides/basic-features/css/tailwindcss.md +5 -5
- package/zh/guides/basic-features/data-fetch.md +109 -192
- package/zh/guides/basic-features/env-vars.md +7 -6
- package/zh/guides/basic-features/html.md +54 -46
- package/zh/guides/basic-features/index.md +0 -5
- package/zh/guides/basic-features/mock.md +4 -4
- package/zh/guides/basic-features/proxy.md +4 -5
- package/zh/guides/basic-features/routes.md +105 -18
- package/zh/guides/concept/entries.md +5 -7
- package/zh/guides/get-started/quick-start.md +3 -4
- package/zh/guides/topic-detail/changesets/add.md +1 -3
- package/zh/guides/topic-detail/changesets/changelog.md +30 -31
- package/zh/guides/topic-detail/changesets/commit.md +44 -45
- package/zh/guides/topic-detail/changesets/config.md +2 -1
- package/zh/guides/topic-detail/changesets/github.md +6 -10
- package/zh/guides/topic-detail/changesets/introduce.md +0 -1
- package/zh/guides/topic-detail/changesets/release-note.md +9 -12
- package/zh/guides/topic-detail/changesets/release-pre.md +1 -1
- package/zh/guides/topic-detail/framework-plugin/extend.md +13 -13
- package/zh/guides/topic-detail/framework-plugin/hook-list.md +2 -2
- package/zh/guides/topic-detail/framework-plugin/hook.md +57 -54
- package/zh/guides/topic-detail/framework-plugin/implement.md +11 -11
- package/zh/guides/topic-detail/framework-plugin/plugin-api.md +4 -4
- package/zh/guides/topic-detail/generator/codesmith/api/app.md +36 -36
- package/zh/guides/topic-detail/generator/codesmith/api/ejs.md +2 -2
- package/zh/guides/topic-detail/generator/codesmith/api/fs.md +2 -2
- package/zh/guides/topic-detail/generator/codesmith/api/git.md +3 -2
- package/zh/guides/topic-detail/generator/codesmith/api/handlebars.md +2 -2
- package/zh/guides/topic-detail/generator/codesmith/api/json.md +9 -11
- package/zh/guides/topic-detail/generator/codesmith/api/npm.md +4 -2
- package/zh/guides/topic-detail/generator/codesmith/introduce.md +20 -7
- package/zh/guides/topic-detail/generator/codesmith/run-in-js.md +4 -5
- package/zh/guides/topic-detail/generator/codesmith/structure.md +13 -10
- package/zh/guides/topic-detail/generator/config/common.md +18 -27
- package/zh/guides/topic-detail/generator/plugin/abstract.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/introduce.md +1 -0
- package/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +4 -4
- package/zh/guides/topic-detail/generator/plugin/api/info/locale.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +3 -4
- package/zh/guides/topic-detail/generator/plugin/api/input/setInput.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/type.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/introduce.md +8 -9
- package/zh/guides/topic-detail/generator/plugin/develop.md +13 -13
- package/zh/guides/topic-detail/generator/plugin/use.md +8 -8
- package/zh/guides/topic-detail/generator/project.md +1 -1
- package/zh/guides/topic-detail/micro-frontend/c01-introduction.md +7 -8
- package/zh/guides/topic-detail/micro-frontend/c02-development.md +20 -23
- package/zh/guides/topic-detail/micro-frontend/c03-main-app.md +41 -44
- package/zh/guides/topic-detail/micro-frontend/c04-communicate.md +7 -5
- package/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.md +1 -1
- package/zh/guides/topic-detail/model/auto-actions.md +0 -1
- package/zh/guides/topic-detail/model/computed-state.md +0 -2
- package/zh/guides/topic-detail/model/define-model.md +3 -6
- package/zh/guides/topic-detail/model/faq.md +2 -5
- package/zh/guides/topic-detail/model/manage-effects.md +2 -5
- package/zh/guides/topic-detail/model/model-communicate.md +1 -4
- package/zh/guides/topic-detail/model/performance.md +1 -5
- package/zh/guides/topic-detail/model/quick-start.md +0 -6
- package/zh/guides/topic-detail/model/redux-integration.md +3 -2
- package/zh/guides/topic-detail/model/test-model.md +1 -1
- package/zh/guides/topic-detail/model/typescript-best-practice.md +13 -14
- package/zh/guides/topic-detail/model/use-model.md +14 -12
- package/zh/guides/topic-detail/model/use-out-of-modernjs.md +4 -6
- package/zh/guides/topic-detail/monorepo/intro.md +0 -1
- package/zh/guides/topic-detail/monorepo/sub-project-interface.md +14 -7
- package/zh/tutorials/first-app/c01-start.md +2 -2
- package/zh/tutorials/first-app/c03-css.md +6 -9
- package/zh/tutorials/first-app/c04-routes.md +1 -1
- package/zh/tutorials/first-app/c05-loader.md +2 -1
- package/zh/tutorials/first-app/c07-container.md +6 -7
- package/zh/tutorials/first-app/c08-entries.md +5 -7
|
@@ -10,67 +10,63 @@ sidebar_position: 3
|
|
|
10
10
|
|
|
11
11
|
1. [Autoprefixer](https://github.com/postcss/autoprefixer) 根据需要支持的浏览器范围,会自动为 CSS 规则添加需要的浏览器厂商前缀。Modern.js 默认支持的浏览器范围为:`['> 0.01%', 'not dead', 'not op_mini all']`。
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"browserslist": [
|
|
24
|
-
"last 1 version",
|
|
25
|
-
"> 1%",
|
|
26
|
-
"IE 10"
|
|
27
|
-
]
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
:::
|
|
13
|
+
:::info 注意
|
|
14
|
+
- 【支持的浏览器范围为:`> 0.01%`】是指浏览器市场份额大于 0.01%。
|
|
15
|
+
- `not dead` 是指不包含官方不再支持的浏览器和过去24个月没有更新的浏览器。
|
|
16
|
+
- `not op_mini all` 是指不包含 Opera Mini。
|
|
17
|
+
:::
|
|
18
|
+
|
|
19
|
+
:::info 补充信息
|
|
20
|
+
如果需要修改默认浏览器支持范围,可以在项目的 `package.json` 文件中配置 `browserslist`,设置规则参考 [Browserslist](https://github.com/browserslist/browserslist) 的使用,下面是一个示例:
|
|
21
|
+
`json title="package.json" { "browserslist": [ "last 1 version", "> 1%", "IE 10" ] } `
|
|
22
|
+
:::
|
|
31
23
|
|
|
32
24
|
2. 提供 [CSS custom properties](https://www.w3.org/TR/css-variables-1/) 支持,可以在 CSS 中定义和使用自定义变量,如:
|
|
33
25
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
```css
|
|
27
|
+
:root {
|
|
28
|
+
--main-bg-color: pink;
|
|
29
|
+
}
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
body {
|
|
32
|
+
background-color: var(--main-bg-color);
|
|
33
|
+
}
|
|
34
|
+
```
|
|
43
35
|
|
|
44
36
|
3. 提供 [CSS Nesting](https://drafts.csswg.org/css-nesting-1/) 支持,可以在 CSS 中使用嵌套写法,如:
|
|
45
37
|
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
```css
|
|
39
|
+
table.colortable td {
|
|
40
|
+
text-align: center;
|
|
41
|
+
}
|
|
42
|
+
table.colortable td.c {
|
|
43
|
+
text-transform: uppercase;
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
也可以改写成 CSS 嵌套写法:
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
table.colortable {
|
|
51
|
+
& td {
|
|
48
52
|
text-align: center;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
text-transform: uppercase;
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
也可以改写成 CSS 嵌套写法:
|
|
55
|
-
```css
|
|
56
|
-
table.colortable {
|
|
57
|
-
& td {
|
|
58
|
-
text-align: center;
|
|
59
|
-
&.c { text-transform: uppercase }
|
|
53
|
+
&.c {
|
|
54
|
+
text-transform: uppercase;
|
|
60
55
|
}
|
|
61
56
|
}
|
|
62
|
-
|
|
57
|
+
}
|
|
58
|
+
```
|
|
63
59
|
|
|
64
60
|
4. 修复已知的 [Flexbugs](https://github.com/philipwalton/flexbugs) 。
|
|
65
61
|
5. 对以下 CSS 特性提供兼容:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
- [`initial` 属性值](https://developer.mozilla.org/en-US/docs/Web/CSS/initial_value)
|
|
63
|
+
- [`break-` 属性](https://developer.mozilla.org/en-US/docs/Web/CSS/break-after)
|
|
64
|
+
- [`font-variant`](https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant)
|
|
65
|
+
- [Media Query Ranges](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#syntax_improvements_in_level_4)
|
|
70
66
|
|
|
71
|
-
|
|
67
|
+
当需要修改 PostCSS 配置时,可以通过底层配置 [`tools.postcss`](/docs/configure/app/tools/postcss) 来实现,下面是一个示例:
|
|
72
68
|
|
|
73
|
-
```
|
|
69
|
+
```ts title="modern.config.ts"
|
|
74
70
|
export default defineConfig({
|
|
75
71
|
tools: {
|
|
76
72
|
postcss: {
|
|
@@ -16,11 +16,11 @@ sidebar_position: 2
|
|
|
16
16
|
在 `modern.config.ts` 中注册 Tailwind 插件:
|
|
17
17
|
|
|
18
18
|
```ts title="modern.config.ts"
|
|
19
|
-
import
|
|
19
|
+
import tailwindcssPlugin from '@modern-js/plugin-tailwindcss';
|
|
20
|
+
|
|
20
21
|
// https://modernjs.dev/docs/apis/app/config
|
|
21
22
|
export default defineConfig({
|
|
22
|
-
...,
|
|
23
|
-
plugins: [..., TailwindCSSPlugin()],
|
|
23
|
+
plugins: [..., tailwindcssPlugin()],
|
|
24
24
|
});
|
|
25
25
|
```
|
|
26
26
|
|
|
@@ -68,7 +68,7 @@ Tailwind CSS v2 和 v3 均不支持 IE 11 浏览器,相关背景请参考:
|
|
|
68
68
|
|
|
69
69
|
当需要自定义 Tailwind CSS 的 [theme](https://tailwindcss.com/docs/theme) 配置的时候,可以在配置 [`source.designSystem`](/docs/configure/app/source/design-system) 中修改,例如,颜色主题中增加一个 `primary`:
|
|
70
70
|
|
|
71
|
-
```
|
|
71
|
+
```ts title="modern.config.ts"
|
|
72
72
|
export default defineConfig({
|
|
73
73
|
source: {
|
|
74
74
|
designSystem: {
|
|
@@ -84,7 +84,7 @@ export default defineConfig({
|
|
|
84
84
|
|
|
85
85
|
当需要对 Tailwind CSS 做 [theme](https://tailwindcss.com/docs/theme) 以外的其他特殊配置时,可以在 [`tools.tailwindcss`](/docs/configure/app/tools/tailwindcss) 中配置,例如设置 `variants`:
|
|
86
86
|
|
|
87
|
-
```
|
|
87
|
+
```ts title="modern.config.ts"
|
|
88
88
|
export default defineConfig({
|
|
89
89
|
tools: {
|
|
90
90
|
tailwindcss: {
|
|
@@ -9,7 +9,7 @@ Modern.js 中提供了开箱即用的数据获取能力,开发者可以通过
|
|
|
9
9
|
|
|
10
10
|
## Data Loader(推荐)
|
|
11
11
|
|
|
12
|
-
Modern.js 推荐使用约定式路由做路由的管理,通过 Modern.js 的[约定式(嵌套)路由](/docs/guides/basic-features/routes#约定式路由),每个路由组件(`layout.ts` 或 `page.ts`)
|
|
12
|
+
Modern.js 推荐使用约定式路由做路由的管理,通过 Modern.js 的[约定式(嵌套)路由](/docs/guides/basic-features/routes#约定式路由),每个路由组件(`layout.ts` 或 `page.ts`)可以有一个同名的 `loader` 文件,该 `loader` 文件需要导出一个函数,函数会在组件渲染之前执行,为路由组件提供数据。
|
|
13
13
|
|
|
14
14
|
:::info
|
|
15
15
|
Modern.js v1 支持通过 [useLoader](#useloader旧版) 获取数据,这已经不是我们推荐的用法,除迁移过程外,不推荐两者混用。
|
|
@@ -17,36 +17,7 @@ Modern.js v1 支持通过 [useLoader](#useloader旧版) 获取数据,这已经
|
|
|
17
17
|
|
|
18
18
|
### 基础示例
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
// routes/user/page.tsx
|
|
24
|
-
import { useLoaderData } from '@modern-js/runtime/router';
|
|
25
|
-
|
|
26
|
-
export const loader = async(): ProfileData => {
|
|
27
|
-
const res = await fetch('https://api/user/profile');
|
|
28
|
-
return await res.json();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default function UserPage() {
|
|
32
|
-
const profileData = useLoaderData() as ProfileData;
|
|
33
|
-
return <div>{profileData}</div>;
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
在 CSR 环境下,`loader` 函数会在客户端执行,`loader` 函数内可以使用浏览器的 API(但通常不需要,也不推荐)。
|
|
38
|
-
|
|
39
|
-
在 SSR 环境下,不管是首屏,还是在客户端的导航,`loader` 函数只会在服务端执行,这里可以调用任意的 Node.js API,同时这里使用的任何依赖和代码都不会包含在客户端的 bundle 中。
|
|
40
|
-
|
|
41
|
-
:::info
|
|
42
|
-
在以后的版本中,Modern.js 可能会支持在 CSR 环境下,`loader` 函数也在服务端运行,以提高性能和安全性,所以这里建议尽可能地保证 loader 的纯粹,只做数据获取的场景。
|
|
43
|
-
:::
|
|
44
|
-
|
|
45
|
-
当在客户端导航时,基于 Modern.js 的[约定式路由](/docs/guides/basic-features/routes),所有的 loader 函数会并行执行(请求),即当访问 `/user/profile` 时,`/user` 和 `/user/profile` 下的 loader 函数都会并行执行(请求),以提高客户端的性能。
|
|
46
|
-
|
|
47
|
-
### Loader 放在单独文件中
|
|
48
|
-
|
|
49
|
-
除了支持 `loader` 函数从前端组件中导出,Modern.js 也支持将 `loader` 函数放在单独的文件中, 将 `loader` 函数放在单独的文件中,可以无需留意[副作用](#副作用处理)相关注意事项,但可以要注意的是,路由组件如 `layout.ts` 和 loader 文件 `layout.loader.ts` 不能引入彼此的代码,如果需要相关类型可以使用 `import type`,可以见下面的示例:
|
|
20
|
+
路由组件如 `layout.ts` 或 `page.ts`,可以定义同名的 `loader` 文件,`loader` 文件中导出一个函数,该函数提供组件所需的数据,然后在路由组件中通过 `useLoaderData` 函数获取数据,如下面示例:
|
|
50
21
|
|
|
51
22
|
```
|
|
52
23
|
.
|
|
@@ -59,20 +30,11 @@ export default function UserPage() {
|
|
|
59
30
|
└── page.loader.ts
|
|
60
31
|
```
|
|
61
32
|
|
|
62
|
-
|
|
63
|
-
```tsx
|
|
64
|
-
// routes/user/page.loader.tsx
|
|
65
|
-
type ProfileData = { /* some type declarations */ }
|
|
66
|
-
|
|
67
|
-
export const loader = async(): ProfileData => {
|
|
68
|
-
const res = await fetch('https://api/user/profile');
|
|
69
|
-
return await res.json();
|
|
70
|
-
}
|
|
33
|
+
在文件中定义以下代码:
|
|
71
34
|
|
|
72
|
-
|
|
35
|
+
```ts title="routes/user/page.tsx"
|
|
73
36
|
import { useLoaderData } from '@modern-js/runtime/router';
|
|
74
|
-
|
|
75
|
-
import type { ProfileData } from './page.loader';
|
|
37
|
+
import type { ProfileData } from './page.loader.ts';
|
|
76
38
|
|
|
77
39
|
export default function UserPage() {
|
|
78
40
|
const profileData = useLoaderData() as ProfileData;
|
|
@@ -80,24 +42,48 @@ export default function UserPage() {
|
|
|
80
42
|
}
|
|
81
43
|
```
|
|
82
44
|
|
|
45
|
+
```ts title="routes/user/page.loader.ts"
|
|
46
|
+
export type ProfileData = {
|
|
47
|
+
/* some types */
|
|
48
|
+
};
|
|
83
49
|
|
|
84
|
-
|
|
50
|
+
export default async (): Promise<ProfileData> => {
|
|
51
|
+
const res = await fetch('https://api/user/profile');
|
|
52
|
+
return await res.json();
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
:::caution
|
|
57
|
+
这里路由组件和 `loader` 文件共享类型,要使用 `import type` 语法。
|
|
58
|
+
:::
|
|
59
|
+
|
|
60
|
+
在 CSR 环境下,`loader` 函数会在客户端执行,`loader` 函数内可以使用浏览器的 API(但通常不需要,也不推荐)。
|
|
85
61
|
|
|
62
|
+
在 SSR 环境下,不管是首屏,还是在客户端的导航,`loader` 函数只会在服务端执行,这里可以调用任意的 Node.js API,同时这里使用的任何依赖和代码都不会包含在客户端的 bundle 中。
|
|
63
|
+
|
|
64
|
+
:::info
|
|
65
|
+
在以后的版本中,Modern.js 可能会支持在 CSR 环境下,`loader` 函数也在服务端运行,以提高性能和安全性,所以这里建议尽可能地保证 loader 的纯粹,只做数据获取的场景。
|
|
66
|
+
:::
|
|
67
|
+
|
|
68
|
+
当在客户端导航时,基于 Modern.js 的[约定式路由](/docs/guides/basic-features/routes),所有的 loader 函数会并行执行(请求),即当访问 `/user/profile` 时,`/user` 和 `/user/profile` 下的 loader 函数都会并行执行(请求),以提高客户端的性能。
|
|
69
|
+
|
|
70
|
+
### `loader` 函数
|
|
86
71
|
|
|
87
72
|
`loader` 函数有两个入参:
|
|
73
|
+
|
|
88
74
|
#### `Params`
|
|
89
75
|
|
|
90
76
|
当路由文件通过 `[]` 时,会作为[动态路由](/docs/guides/basic-features/routes#动态路由),动态路由片段会作为参数传入 loader 函数:
|
|
91
77
|
|
|
92
78
|
```tsx
|
|
93
|
-
// routes/user/[id]/page.
|
|
79
|
+
// routes/user/[id]/page.loader.ts
|
|
94
80
|
import { LoaderArgs } from '@modern-js/runtime/router';
|
|
95
81
|
|
|
96
|
-
export
|
|
82
|
+
export default async ({ params }: LoaderArgs) => {
|
|
97
83
|
const { id } = params;
|
|
98
84
|
const res = await fetch(`https://api/user/${id}`);
|
|
99
85
|
return res.json();
|
|
100
|
-
}
|
|
86
|
+
};
|
|
101
87
|
```
|
|
102
88
|
|
|
103
89
|
当访问 `/user/123` 时,`loader` 函数的参数为 `{ params: { id: '123' } }`。
|
|
@@ -107,15 +93,16 @@ export const loader = async({ params }: LoaderArgs) => {
|
|
|
107
93
|
`request` 是一个 [Fetch Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) 实例。
|
|
108
94
|
|
|
109
95
|
一个常见的使用场景是通过 `request` 获取查询参数:
|
|
96
|
+
|
|
110
97
|
```tsx
|
|
111
|
-
// routes/user/[id]/page.
|
|
98
|
+
// routes/user/[id]/page.loader.ts
|
|
112
99
|
import { LoaderArgs } from '@modern-js/runtime/router';
|
|
113
100
|
|
|
114
|
-
export
|
|
101
|
+
export default async ({ request }: LoaderArgs) => {
|
|
115
102
|
const url = new URL(request.url);
|
|
116
|
-
const userId = url.searchParams.get(
|
|
103
|
+
const userId = url.searchParams.get('id');
|
|
117
104
|
return queryUser(userId);
|
|
118
|
-
}
|
|
105
|
+
};
|
|
119
106
|
```
|
|
120
107
|
|
|
121
108
|
#### 返回值
|
|
@@ -123,44 +110,47 @@ export const loader = async({ request }: LoaderArgs) => {
|
|
|
123
110
|
`loader` 函数的返回值可以是任何可序列化的内容,也可以是一个 [Fetch Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) 实例:
|
|
124
111
|
|
|
125
112
|
```tsx
|
|
126
|
-
|
|
113
|
+
const loader = async (): Promise<ProfileData> => {
|
|
127
114
|
return {
|
|
128
115
|
message: 'hello world',
|
|
129
|
-
}
|
|
130
|
-
}
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export default loader;
|
|
131
119
|
```
|
|
132
120
|
|
|
133
121
|
默认情况下,`loader` 返回的响应 `Content-type` 是 `application/json`,`status` 为 200,你可以通过自定义 `Response` 来设置:
|
|
122
|
+
|
|
134
123
|
```tsx
|
|
135
|
-
|
|
136
|
-
const data = {message: 'hello world'};
|
|
124
|
+
const loader = async (): Promise<ProfileData> => {
|
|
125
|
+
const data = { message: 'hello world' };
|
|
137
126
|
return new Response(JSON.stringify(data), {
|
|
138
127
|
status: 200,
|
|
139
128
|
headers: {
|
|
140
|
-
|
|
129
|
+
'Content-Type': 'application/json; utf-8',
|
|
141
130
|
},
|
|
142
131
|
});
|
|
143
|
-
}
|
|
132
|
+
};
|
|
144
133
|
```
|
|
145
134
|
|
|
146
135
|
### 请求 API
|
|
147
136
|
|
|
148
137
|
Modern.js 对 `fetch` API 做了 polyfill, 用于发起请求,该 API 与浏览器的 `fetch` API 一致,但是在服务端也能使用该 API 发起请求,这意味着不管是 CSR 还是 SSR,都可以使用统一的 `fetch` API 进行数据获取:
|
|
138
|
+
|
|
149
139
|
```tsx
|
|
150
|
-
|
|
140
|
+
async function loader() {
|
|
151
141
|
const res = await fetch('https://api/user/profile');
|
|
152
142
|
}
|
|
153
143
|
```
|
|
154
144
|
|
|
155
|
-
|
|
156
145
|
### 错误处理
|
|
157
146
|
|
|
158
147
|
在 `loader` 函数中,可以通过 `throw error` 或者 `throw response` 的方式处理错误,当 `loader` 函数中有错误被抛出时,Modern.js 会停止执行当前 loader 中的代码,并将前端 UI 切换到定义的 [`ErrorBoundary`](/docs/guides/basic-features/routes#错误处理) 组件:
|
|
148
|
+
|
|
159
149
|
```tsx
|
|
160
|
-
// routes/user/profile/page.
|
|
161
|
-
export async function loader(){
|
|
150
|
+
// routes/user/profile/page.loader.ts
|
|
151
|
+
export default async function loader() {
|
|
162
152
|
const res = await fetch('https://api/user/profile');
|
|
163
|
-
if(!res.ok){
|
|
153
|
+
if (!res.ok) {
|
|
164
154
|
throw res;
|
|
165
155
|
}
|
|
166
156
|
return res.json();
|
|
@@ -184,12 +174,13 @@ export default ErrorBoundary;
|
|
|
184
174
|
### 获取上层组件的数据
|
|
185
175
|
|
|
186
176
|
很多场景下,子组件需要获取到祖先组件 loader 中的数据,你可以通过 `useRouteLoaderData` 方便地获取到祖先组件的数据:
|
|
177
|
+
|
|
187
178
|
```tsx
|
|
188
179
|
// routes/user/profile/page.tsx
|
|
189
180
|
import { useRouteLoaderData } from '@modern-js/runtime/router';
|
|
190
181
|
|
|
191
182
|
export default function UserLayout() {
|
|
192
|
-
// 获取 routes/user/layout.
|
|
183
|
+
// 获取 routes/user/layout.loader.ts 中 loader 返回的数据
|
|
193
184
|
const data = useRouteLoaderData('user/layout');
|
|
194
185
|
return (
|
|
195
186
|
<div>
|
|
@@ -203,17 +194,19 @@ export default function UserLayout() {
|
|
|
203
194
|
`userRouteLoaderData` 接受一个参数 `routeId`,在使用约定式路由时,Modern.js 会为你自动生成`routeId`,`routeId` 的值是对应组件相对于 `src/routes` 的路径,如上面的例子中,子组件想要获取 `routes/user/layout.tsx` 中 loader 返回的数据,`routeId` 的值就是 `user/layout`。
|
|
204
195
|
|
|
205
196
|
在多 entry(MPA) 场景下,`routeId` 的值需要加上对应 entry 的 name,entry name 非指定情况下一般是 entry 目录名,如以下目录结构:
|
|
197
|
+
|
|
206
198
|
```bash
|
|
207
199
|
.
|
|
208
200
|
└── src
|
|
209
201
|
├── entry1
|
|
210
|
-
│
|
|
202
|
+
│ └── routes
|
|
203
|
+
│ └── layout.tsx
|
|
211
204
|
└── entry2
|
|
212
|
-
|
|
205
|
+
└── routes
|
|
206
|
+
└── layout.tsx
|
|
213
207
|
```
|
|
214
208
|
|
|
215
|
-
如果想获取 `entry1/layout.tsx` 中 loader 返回的数据,`routeId` 的值就是 `entry1_layout`。
|
|
216
|
-
|
|
209
|
+
如果想获取 `entry1/routes/layout.tsx` 中 loader 返回的数据,`routeId` 的值就是 `entry1_layout`。
|
|
217
210
|
|
|
218
211
|
### (WIP)Loading UI
|
|
219
212
|
|
|
@@ -222,34 +215,8 @@ export default function UserLayout() {
|
|
|
222
215
|
目前仅支持 CSR,敬请期待 Streaming SSR。
|
|
223
216
|
:::
|
|
224
217
|
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
.
|
|
228
|
-
└── routes
|
|
229
|
-
├── layout.tsx
|
|
230
|
-
└── user
|
|
231
|
-
├── layout.tsx
|
|
232
|
-
└── page.ts
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
我们在 `user/layout.tsx` 中获取用户的详细数据,在获取数据之前,希望展示一个 Loading UI。
|
|
236
|
-
|
|
237
|
-
首先,在项目中在 `routes` 目录下增加一个 `loading.tsx` 组件,该 `loading` 组件会对子目录下的所有路由生效(如 user):
|
|
238
|
-
```bash
|
|
239
|
-
.
|
|
240
|
-
└── routes
|
|
241
|
-
├── layout.tsx
|
|
242
|
-
├── loading.tsx
|
|
243
|
-
└── user
|
|
244
|
-
├── layout.tsx
|
|
245
|
-
└── page.ts
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
:::info
|
|
249
|
-
loading 组件的具体用法,请查看[loading](/docs/guides/basic-features/routes#loading)
|
|
250
|
-
:::
|
|
218
|
+
在 `user/layout.tsx` 中添加以下代码:
|
|
251
219
|
|
|
252
|
-
然后,在 `user/layout.tsx` 中添加以下代码:
|
|
253
220
|
```tsx title="routes/user/layout.tsx"
|
|
254
221
|
import {
|
|
255
222
|
Await,
|
|
@@ -269,14 +236,18 @@ export default function UserLayout() {
|
|
|
269
236
|
const { userInfo } = useLoaderData() as {userInfo: Promise<UserInfo>};
|
|
270
237
|
return (
|
|
271
238
|
<div>
|
|
272
|
-
<
|
|
273
|
-
<
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
<
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
239
|
+
<React.Suspense
|
|
240
|
+
fallback={<p>Loading...</p>}
|
|
241
|
+
>
|
|
242
|
+
<Await resolve={userInfo} children={userInfo => (
|
|
243
|
+
<div>
|
|
244
|
+
<span>{userInfo.name}</span>
|
|
245
|
+
<span>{userInfo.age}</span>
|
|
246
|
+
<Outlet>
|
|
247
|
+
</div>
|
|
248
|
+
)}>
|
|
249
|
+
</Await>
|
|
250
|
+
</React.Suspense>
|
|
280
251
|
</div>
|
|
281
252
|
);
|
|
282
253
|
}
|
|
@@ -288,87 +259,8 @@ Await 组件的具体用法请查看 [Await](https://reactrouter.com/en/main/com
|
|
|
288
259
|
defer 的具体用法请查看 [defer](https://reactrouter.com/en/main/guides/deferred)
|
|
289
260
|
:::
|
|
290
261
|
|
|
291
|
-
|
|
292
262
|
<!-- TODO 缓存相关 -->
|
|
293
263
|
|
|
294
|
-
### 副作用处理
|
|
295
|
-
|
|
296
|
-
如上面所述,Modern.js 会将服务端代码 `loader` 从客户端 bundle 中移除,有一些你需要注意的事项,如果不想受副作用的影响,可以使用[单独文件](#单独文件) 的方式定义 `loader`。
|
|
297
|
-
|
|
298
|
-
:::info
|
|
299
|
-
在 CSR 场景下,通常副作用对项目影响较小,但依然希望你能遵循以下约定。
|
|
300
|
-
:::
|
|
301
|
-
|
|
302
|
-
模块的副作用可以认为是在模块被加载时执行的代码,比如:
|
|
303
|
-
```tsx
|
|
304
|
-
// routes/user/page.tsx
|
|
305
|
-
import { useLoaderData } from '@modern-js/runtime/router';
|
|
306
|
-
// highlight-next-line
|
|
307
|
-
import { transformProfile } from "./utils";
|
|
308
|
-
// highlight-next-line
|
|
309
|
-
console.log(transformProfile);
|
|
310
|
-
|
|
311
|
-
export const loader = async(): ProfileData => {
|
|
312
|
-
const res = await fetch('https://api/user/profile');
|
|
313
|
-
const data = await res.json();
|
|
314
|
-
return transformProfile(data);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
export default function UserPage() {
|
|
318
|
-
const profileData = useLoaderData() as ProfileData;
|
|
319
|
-
return <div>{profileData}</div>;
|
|
320
|
-
}
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
因为 `console.log` 在 `routes/user/page.tsx` 加载时,就会被执行,编译器不会移除它,`transformProfile` 就会打包到客户端的 bundle 中。
|
|
324
|
-
|
|
325
|
-
所以我们不推荐有任何代码在模块加载时执行,包括项目代码和使用的第三方模块,以下是一些我们不推荐的写法:
|
|
326
|
-
|
|
327
|
-
```tsx
|
|
328
|
-
// routes/user/page.tsx
|
|
329
|
-
export default function UserPage() {
|
|
330
|
-
return <div>profile</div>;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
UserPage.config = {}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
```tsx
|
|
337
|
-
// routes/init.ts
|
|
338
|
-
document.title = 'Modern.js';
|
|
339
|
-
|
|
340
|
-
// routes/layout.tsx
|
|
341
|
-
import "./init.ts";
|
|
342
|
-
|
|
343
|
-
export default function Layout() {
|
|
344
|
-
return <></>
|
|
345
|
-
}
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
在 SSR 场景,通常你需要在 `loader` 函数中使用 Node.js 核心包和依赖,对于非 Node.js 核心包,需要使用一个特殊约定的文件做重新导出,如使用 `fs-extra`:
|
|
349
|
-
|
|
350
|
-
```tsx
|
|
351
|
-
// routes/user/avatar.tsx
|
|
352
|
-
import { useLoaderData } from '@modern-js/runtime/router';
|
|
353
|
-
import { readFile } from './utils.server';
|
|
354
|
-
|
|
355
|
-
type ProfileData = { /* some type declarations */ }
|
|
356
|
-
|
|
357
|
-
export const loader = async(): ProfileData => {
|
|
358
|
-
const profile = await readFile('profile.json');
|
|
359
|
-
return profile;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
export default function UserPage() {
|
|
363
|
-
const profileData = useLoaderData() as ProfileData;
|
|
364
|
-
return <div>{profileData}</div>;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
// routes/user/utils.server.ts
|
|
368
|
-
export * from 'fs-extra';
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
|
|
372
264
|
### 错误用法
|
|
373
265
|
|
|
374
266
|
1. `loader` 中只能返回可序列化的数据,在 SSR 环境下,`loader` 函数的返回值会被序列化为 JSON 字符串,然后在客户端被反序列化为对象。因此,`loader` 函数中不能返回不可序列化的数据(如函数)。
|
|
@@ -379,31 +271,57 @@ export * from 'fs-extra';
|
|
|
379
271
|
|
|
380
272
|
```ts
|
|
381
273
|
// This won't work!
|
|
382
|
-
export
|
|
274
|
+
export default () => {
|
|
383
275
|
return {
|
|
384
276
|
user: {},
|
|
385
|
-
method: () => {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
}
|
|
389
|
-
}
|
|
277
|
+
method: () => {},
|
|
278
|
+
};
|
|
279
|
+
};
|
|
390
280
|
```
|
|
391
281
|
|
|
392
282
|
2. Modern.js 会帮你调用 `loader` 函数,你不应该自己调用 `loader` 函数:
|
|
283
|
+
|
|
393
284
|
```ts
|
|
394
285
|
// This won't work!
|
|
395
|
-
export
|
|
286
|
+
export default async () => {
|
|
396
287
|
const res = fetch('https://api/user/profile');
|
|
397
288
|
return res.json();
|
|
398
289
|
};
|
|
399
290
|
|
|
291
|
+
import loader from './page.loader.ts';
|
|
400
292
|
export default function RouteComp() {
|
|
401
293
|
const data = loader();
|
|
402
294
|
}
|
|
403
295
|
```
|
|
404
296
|
|
|
405
|
-
3.
|
|
297
|
+
3. 不能从路由组件中引入 `loader` 文件,也不能从 `loader` 文件引入路由组件中的变量,如果需要共享类型的话,应该使用 `import type`
|
|
298
|
+
|
|
299
|
+
```ts
|
|
300
|
+
// Not allowed
|
|
301
|
+
// routes/layout.tsx
|
|
302
|
+
import { useLoaderData } from '@modern-js/runtime/router';
|
|
303
|
+
import { ProfileData } from './page.loader.ts'; // should use "import type" instead
|
|
304
|
+
|
|
305
|
+
export const fetch = wrapFetch(fetch);
|
|
306
|
+
|
|
307
|
+
export default function UserPage() {
|
|
308
|
+
const profileData = useLoaderData() as ProfileData;
|
|
309
|
+
return <div>{profileData}</div>;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// routes/layout.loader.ts
|
|
313
|
+
import { fetch } from './layout.tsx'; // should not be imported from the routing component
|
|
314
|
+
export type ProfileData = {
|
|
315
|
+
/* some types */
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
export default async (): Promise<ProfileData> => {
|
|
319
|
+
const res = await fetch('https://api/user/profile');
|
|
320
|
+
return await res.json();
|
|
321
|
+
};
|
|
322
|
+
```
|
|
406
323
|
|
|
324
|
+
4. 在服务端运行时,`loader` 函数会被打包为一个统一的 bundle,所以我们不推荐服务端的代码使用 `__filename` 和 `__dirname`。
|
|
407
325
|
|
|
408
326
|
## useLoader(旧版)
|
|
409
327
|
|
|
@@ -439,7 +357,7 @@ export default () => {
|
|
|
439
357
|
|
|
440
358
|
```html
|
|
441
359
|
<script>
|
|
442
|
-
window._SSR_DATA = {};
|
|
360
|
+
window._SSR_DATA = {};
|
|
443
361
|
</script>
|
|
444
362
|
```
|
|
445
363
|
|
|
@@ -456,4 +374,3 @@ Modern.js 在新版本中,设计了全新的 Loader 方案。新方案解决
|
|
|
456
374
|
:::note
|
|
457
375
|
详细 API 可以查看 [useLoader](/docs/apis/app/runtime/core/use-loader)。
|
|
458
376
|
:::
|
|
459
|
-
|
|
@@ -31,15 +31,16 @@ MODERN_ENV 的优先级高于 NODE_ENV。
|
|
|
31
31
|
function App() {
|
|
32
32
|
if (process.env.MODERN_TARGET === 'browser') {
|
|
33
33
|
console.log(window.innerHeight);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
开发环境打包后,可以看到 SSR 产物和 CSR 产物如下:
|
|
39
39
|
|
|
40
40
|
```js title="dist/bundles/main.js"
|
|
41
41
|
function App() {
|
|
42
|
-
if (false) {
|
|
42
|
+
if (false) {
|
|
43
|
+
}
|
|
43
44
|
}
|
|
44
45
|
```
|
|
45
46
|
|
|
@@ -80,8 +81,8 @@ BAR=456
|
|
|
80
81
|
|
|
81
82
|
`.env` 文件遵循以下规则加载规则:
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
- `.env`:默认加载。
|
|
85
|
+
- `.env.{ MODERN_ENV | NODE_ENV }`:针对具体环境设置环境变量,会覆盖 `.env` 中的设置。
|
|
85
86
|
|
|
86
87
|
当需要根据环境使用不同的配置时,可以把环境变量定义到对应环境名称的 `.env` 文件中,并在启动项目时手动设置执行环境。例如使用以下命令启动项目时,将会加载 `.env` 和 `.env.staging`:
|
|
87
88
|
|
|
@@ -121,7 +122,7 @@ if (true) {
|
|
|
121
122
|
|
|
122
123
|
如果需要在代码中使用任意名称的环境变量,可以在 [`source.globalVars`](/docs/configure/app/source/global-vars) 配置指定, 例如:
|
|
123
124
|
|
|
124
|
-
```
|
|
125
|
+
```ts title="modern.config.ts"
|
|
125
126
|
export default defineConfig({
|
|
126
127
|
source: {
|
|
127
128
|
globalVars: {
|