@modern-js/main-doc 2.0.0-beta.1 → 2.0.0-beta.3
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/build.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +1 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/test.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/overview.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/core/bootstrap.md +17 -3
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/auto-actions.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/connect.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +2 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-store.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/handle-effect.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-local-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-static-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +1 -23
- package/en/docusaurus-plugin-content-docs/current/components/command-tip.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-migration.md +1 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-tip.md +5 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/hmr.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/https.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/port.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/progress-bar.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/dev/start-url.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/experiments/lazy-compilation.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/app-icon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/crossorigin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/disable-html-folder.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/favicon.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/inject.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/meta.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/mount-id.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template-parameters.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/template.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title-by-entries.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/html/title.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/asset-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/assets-retry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/charset.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/clean-dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/convert-to-rem.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/copy.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/css-module-local-ident-name.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/data-uri-limit.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +12 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-module-extension.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-filename-hash.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-minimize.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-source-map.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/dist-path.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-fallback.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-asset-manifest.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-scripts.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-inline-styles.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/enable-latest-decorators.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/externals.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/filename.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/legal-comments.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/override-browserslist.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/polyfill.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/svg-default-export.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/build-cache.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/bundle-analyze.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/chunk-split.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/print-file-size.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/profile.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-console.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/performance/remove-moment-locale.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/plugins.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/router.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/security/sri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/alias.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/compile-js-data-uri.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/define.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/exclude.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/global-vars.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/include.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/module-scopes.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/pre-entry.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-extension-prefix.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/source/resolve-main-fields.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/autoprefixer.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/babel.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-extract.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/css-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/dev-server.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/html-plugin.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/inspector.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/less.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/minify-css.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/postcss.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/pug.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/sass.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/style-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/styled-components.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/swc.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/terser.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-checker.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/ts-loader.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack-chain.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/configure/app/tools/webpack.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/basic-features/builder.md +46 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/app.md +152 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/git.md +49 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/handlebars.md +58 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/json.md +59 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/npm.md +49 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/develop.md +52 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/introduce.md +46 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/structure.md +87 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/common.md +106 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/module.md +39 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/monorepo.md +28 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/mwa.md +89 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/abstract.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addFile.md +52 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addHelper.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addManyFile.md +58 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addPartial.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/introduce.md +38 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmDir.md +24 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmFile.md +24 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +54 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +33 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.md +20 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/initGitRepo.md +16 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/isInGitRepo.md +16 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/afterForged.md +35 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/onForged.md +36 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/isFileExit.md +22 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/locale.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/readDir.md +22 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +57 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInput.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInputValue.md +30 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/type.md +65 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/introduce.md +91 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createElement.md +33 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createSubProject.md +35 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/enableFunc.md +44 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/introduce.md +15 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/install.md +18 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/develop.md +125 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/use.md +61 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/project.md +118 -0
- package/en/docusaurus-plugin-content-docs/current.json +57 -21
- package/package.json +3 -3
- package/scripts/config.ts +2 -2
- package/scripts/summary.en.json +1 -1
- package/scripts/summary.zh.json +1 -1
- package/zh/apis/app/commands/new.md +0 -3
- package/zh/apis/app/hooks/server/test.md +2 -2
- package/zh/apis/app/runtime/app/_category_.json +1 -1
- package/zh/apis/app/runtime/bff/_category_.json +1 -1
- package/zh/apis/app/runtime/core/_category_.json +1 -1
- package/zh/apis/app/runtime/core/bootstrap.md +17 -3
- package/zh/apis/app/runtime/model/_category_.json +1 -1
- package/zh/apis/app/runtime/model/create-app.md +1 -1
- package/zh/apis/app/runtime/model/use-store.md +1 -23
- package/zh/apis/app/runtime/router/_category_.json +1 -1
- package/zh/apis/app/runtime/ssr/_category_.json +1 -1
- package/zh/apis/app/runtime/testing/_category_.json +1 -1
- package/zh/apis/app/runtime/utility/_category_.json +1 -1
- package/zh/apis/app/runtime/web-server/_category_.json +1 -1
- package/zh/apis/app/runtime/web-server/hook.md +4 -4
- package/zh/apis/app/runtime/web-server/middleware.md +4 -4
- package/zh/components/reduck-migration.md +1 -0
- package/zh/configure/app/dev/asset-prefix.md +1 -1
- package/zh/configure/app/dev/hmr.md +1 -1
- package/zh/configure/app/dev/https.md +1 -1
- package/zh/configure/app/dev/port.md +1 -1
- package/zh/configure/app/dev/progress-bar.md +1 -1
- package/zh/configure/app/dev/start-url.md +1 -1
- package/zh/configure/app/experiments/_category_.json +4 -0
- package/zh/configure/app/experiments/lazy-compilation.md +1 -1
- package/zh/configure/app/html/_category_.json +4 -0
- package/zh/configure/app/html/app-icon.md +1 -1
- package/zh/configure/app/html/crossorigin.md +1 -1
- package/zh/configure/app/html/disable-html-folder.md +1 -1
- package/zh/configure/app/html/favicon-by-entries.md +1 -1
- package/zh/configure/app/html/favicon.md +1 -1
- package/zh/configure/app/html/inject-by-entries.md +1 -1
- package/zh/configure/app/html/inject.md +1 -1
- package/zh/configure/app/html/meta-by-entries.md +1 -1
- package/zh/configure/app/html/meta.md +1 -1
- package/zh/configure/app/html/mount-id.md +1 -1
- package/zh/configure/app/html/template-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters-by-entries.md +1 -1
- package/zh/configure/app/html/template-parameters.md +1 -1
- package/zh/configure/app/html/template.md +1 -1
- package/zh/configure/app/html/title-by-entries.md +1 -1
- package/zh/configure/app/html/title.md +1 -1
- package/zh/configure/app/output/asset-prefix.md +1 -1
- package/zh/configure/app/output/assets-retry.md +1 -1
- package/zh/configure/app/output/charset.md +1 -1
- package/zh/configure/app/output/clean-dist-path.md +1 -1
- package/zh/configure/app/output/convert-to-rem.md +1 -1
- package/zh/configure/app/output/copy.md +1 -1
- package/zh/configure/app/output/css-module-local-ident-name.md +1 -1
- package/zh/configure/app/output/data-uri-limit.md +1 -1
- package/zh/configure/app/output/disable-css-extract.md +12 -0
- package/zh/configure/app/output/disable-css-module-extension.md +1 -1
- package/zh/configure/app/output/disable-filename-hash.md +1 -1
- package/zh/configure/app/output/disable-inline-runtime-chunk.md +1 -1
- package/zh/configure/app/output/disable-minimize.md +1 -1
- package/zh/configure/app/output/disable-source-map.md +1 -1
- package/zh/configure/app/output/disable-ts-checker.md +1 -1
- package/zh/configure/app/output/dist-path.md +1 -1
- package/zh/configure/app/output/enable-asset-fallback.md +1 -1
- package/zh/configure/app/output/enable-asset-manifest.md +1 -1
- package/zh/configure/app/output/enable-css-module-tsdeclaration.md +1 -1
- package/zh/configure/app/output/enable-inline-scripts.md +1 -1
- package/zh/configure/app/output/enable-inline-styles.md +1 -1
- package/zh/configure/app/output/enable-latest-decorators.md +1 -1
- package/zh/configure/app/output/externals.md +1 -1
- package/zh/configure/app/output/filename.md +1 -1
- package/zh/configure/app/output/legal-comments.md +1 -1
- package/zh/configure/app/output/override-browserslist.md +1 -1
- package/zh/configure/app/output/polyfill.md +1 -1
- package/zh/configure/app/output/ssg.md +118 -114
- package/zh/configure/app/output/svg-default-export.md +1 -1
- package/zh/configure/app/performance/_category_.json +4 -0
- package/zh/configure/app/performance/build-cache.md +1 -1
- package/zh/configure/app/performance/bundle-analyze.md +1 -1
- package/zh/configure/app/performance/chunk-split.md +1 -1
- package/zh/configure/app/performance/print-file-size.md +1 -1
- package/zh/configure/app/performance/profile.md +1 -1
- package/zh/configure/app/performance/remove-console.md +1 -1
- package/zh/configure/app/performance/remove-moment-locale.md +1 -1
- package/zh/configure/app/plugins.md +1 -1
- package/zh/configure/app/runtime/state.md +13 -0
- package/zh/configure/app/security/_category_.json +4 -0
- package/zh/configure/app/security/sri.md +1 -1
- package/zh/configure/app/server/ssr.md +0 -2
- package/zh/configure/app/source/alias.md +1 -1
- package/zh/configure/app/source/compile-js-data-uri.md +1 -1
- package/zh/configure/app/source/define.md +1 -1
- package/zh/configure/app/source/exclude.md +1 -1
- package/zh/configure/app/source/global-vars.md +1 -1
- package/zh/configure/app/source/include.md +1 -1
- package/zh/configure/app/source/module-scopes.md +1 -1
- package/zh/configure/app/source/pre-entry.md +1 -1
- package/zh/configure/app/source/resolve-extension-prefix.md +1 -1
- package/zh/configure/app/source/resolve-main-fields.md +1 -1
- package/zh/configure/app/tools/autoprefixer.md +1 -1
- package/zh/configure/app/tools/babel.md +1 -1
- package/zh/configure/app/tools/css-extract.md +1 -1
- package/zh/configure/app/tools/css-loader.md +1 -1
- package/zh/configure/app/tools/dev-server.md +1 -1
- package/zh/configure/app/tools/html-plugin.md +1 -1
- package/zh/configure/app/tools/inspector.md +1 -1
- package/zh/configure/app/tools/less.md +1 -1
- package/zh/configure/app/tools/minify-css.md +1 -1
- package/zh/configure/app/tools/postcss.md +1 -1
- package/zh/configure/app/tools/pug.md +1 -1
- package/zh/configure/app/tools/sass.md +1 -1
- package/zh/configure/app/tools/style-loader.md +1 -1
- package/zh/configure/app/tools/styled-components.md +1 -1
- package/zh/configure/app/tools/swc.md +42 -0
- package/zh/configure/app/tools/terser.md +1 -1
- package/zh/configure/app/tools/ts-checker.md +1 -1
- package/zh/configure/app/tools/ts-loader.md +1 -1
- package/zh/configure/app/tools/webpack-chain.md +1 -1
- package/zh/configure/app/tools/webpack.md +1 -1
- package/zh/guides/advanced-features/bff/_category_.json +5 -1
- package/zh/guides/advanced-features/bff/bff-proxy.md +5 -3
- package/zh/guides/advanced-features/bff/frameworks.md +72 -51
- package/zh/guides/advanced-features/bff/function.md +16 -30
- package/zh/guides/advanced-features/bff/index.md +20 -0
- package/zh/guides/advanced-features/bff/type.md +43 -0
- package/zh/guides/advanced-features/custom-app.md +69 -1
- package/zh/guides/advanced-features/ssg.md +74 -63
- package/zh/guides/advanced-features/ssr.md +74 -11
- package/zh/guides/advanced-features/web-server.md +21 -110
- package/zh/guides/basic-features/builder.md +46 -0
- package/zh/guides/basic-features/css/_category_.json +1 -1
- package/zh/guides/basic-features/css/less-sass.md +1 -14
- package/zh/guides/basic-features/data-fetch.md +62 -1
- package/zh/guides/basic-features/env-vars.md +122 -41
- package/zh/guides/basic-features/routes.md +264 -0
- package/zh/guides/concept/entries.md +112 -0
- package/zh/guides/concept/lifecycle.md +10 -0
- package/zh/guides/get-started/quick-start.md +199 -1
- package/zh/guides/get-started/upgrade.md +75 -1
- package/zh/guides/topic-detail/framework-plugin/extend.md +3 -4
- package/zh/{apis/app/runtime/plugin/hook-api.md → guides/topic-detail/framework-plugin/hook-list.md} +42 -135
- package/zh/{apis/app/runtime/plugin → guides/topic-detail/framework-plugin}/hook.md +2 -3
- package/zh/guides/topic-detail/framework-plugin/implement.md +21 -10
- package/zh/guides/topic-detail/framework-plugin/introduction.md +49 -0
- package/{en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin → zh/guides/topic-detail/framework-plugin}/plugin-api.md +3 -4
- package/zh/guides/topic-detail/framework-plugin/relationship.md +2 -3
- package/zh/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
- package/zh/guides/topic-detail/generator/codesmith/api/app.md +152 -0
- package/zh/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
- package/zh/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
- package/zh/guides/topic-detail/generator/codesmith/api/git.md +48 -0
- package/zh/guides/topic-detail/generator/codesmith/api/handlebars.md +56 -0
- package/zh/guides/topic-detail/generator/codesmith/api/json.md +58 -0
- package/zh/guides/topic-detail/generator/codesmith/api/npm.md +45 -0
- package/zh/guides/topic-detail/generator/codesmith/develop.md +52 -0
- package/zh/guides/topic-detail/generator/codesmith/introduce.md +42 -1
- package/zh/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
- package/zh/guides/topic-detail/generator/codesmith/structure.md +86 -0
- package/zh/guides/topic-detail/generator/config/mwa.md +4 -8
- package/zh/guides/topic-detail/generator/plugin/api/file/addFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/addHelper.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/addPartial.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/introduce.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/rmDir.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/rmFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +3 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.md +3 -3
- package/zh/guides/topic-detail/generator/plugin/api/hook/onForged.md +3 -3
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/type.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/createElement.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/npm/install.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/develop.md +11 -7
- package/zh/guides/topic-detail/model/quick-start.md +4 -0
- package/zh/guides/topic-detail/monorepo/sub-project-interface.md +0 -2
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +2 -2
- package/zh/tutorials/first-app/c01-getting-started/1.2-minimal-mwa.md +2 -2
- package/zh/tutorials/first-app/c01-getting-started/1.4-enable-ssr.md +5 -2
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -8
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +12 -6
- package/zh/tutorials/first-app/c02-generator-and-studio/2.3-configuration.md +2 -4
- package/zh/tutorials/first-app/c03-ide/3.1-setting-up.md +1 -1
- package/zh/tutorials/first-app/c03-ide/3.2-hints-in-ide.md +44 -50
- package/zh/tutorials/first-app/c03-ide/3.3-autofix-in-ide.md +1 -1
- package/zh/tutorials/first-app/c03-ide/3.4-autofix-in-cli.md +4 -4
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.1-use-es6-plus.md +8 -21
- package/zh/tutorials/first-app/c04-es6-plus-and-ts/4.2-use-typescript.md +37 -13
- package/zh/tutorials/first-app/c05-component/5.1-use-ui-library.md +3 -13
- package/zh/tutorials/first-app/c05-component/5.2-use-standalone-component.md +1 -21
- package/zh/tutorials/first-app/c06-css-and-component/6.1-css-in-js.md +9 -9
- package/zh/tutorials/first-app/c06-css-and-component/6.2-utility-class.md +9 -14
- package/zh/tutorials/first-app/c06-css-and-component/6.3-postcss.md +7 -7
- package/zh/tutorials/first-app/c06-css-and-component/6.4-design-system.md +1 -1
- package/zh/tutorials/first-app/c06-css-and-component/6.5-storybook.md +2 -2
- package/zh/tutorials/first-app/c06-css-and-component/6.6-testing.md +8 -17
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +24 -19
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +31 -35
- package/zh/tutorials/first-app/c07-app-entry/7.3-manage-entries-by-hand.md +4 -9
- package/zh/tutorials/first-app/c08-client-side-routing/8.1-code-based-routing.md +66 -63
- package/zh/tutorials/first-app/c09-bff/9.2-enable-bff.md +35 -33
- package/zh/tutorials/first-app/c09-bff/9.3-fetch-bff.md +28 -102
- package/zh/tutorials/first-app/c10-model/10.1-application-architecture.md +4 -6
- package/zh/tutorials/first-app/c10-model/10.2-add-model.md +3 -3
- package/zh/tutorials/first-app/c10-model/10.3-use-model.md +21 -20
- package/zh/tutorials/first-app/c10-model/10.4-testing.md +2 -2
- package/zh/tutorials/first-app/c11-container/11.1-use-model-with-app-state.md +34 -68
- package/zh/tutorials/first-app/c11-container/11.2-add-container.md +40 -37
- package/zh/tutorials/first-app/c11-container/11.3-use-loader.md +6 -4
- package/zh/tutorials/first-app/c11-container/11.4-testing.md +2 -2
- package/zh/tutorials/foundations/introduction.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/default-alias.md +0 -25
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/env.md +0 -72
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/_category_.json +0 -4
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/abstract.md +0 -26
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook-api.md +0 -896
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/plugin/hook.md +0 -170
- package/zh/apis/app/runtime/default-alias.md +0 -23
- package/zh/apis/app/runtime/env.md +0 -70
- package/zh/apis/app/runtime/plugin/_category_.json +0 -4
- package/zh/apis/app/runtime/plugin/abstract.md +0 -26
- package/zh/apis/app/runtime/plugin/plugin-api.md +0 -117
- package/zh/components/deploy.md +0 -60
- package/zh/components/dev-ide.md +0 -1
- package/zh/components/entry-name.md +0 -15
- package/zh/components/env-prepare.md +0 -1
- package/zh/components/launch-bff-choices.md +0 -6
- package/zh/guides/advanced-features/bff/bff-server.md +0 -142
- package/zh/guides/advanced-features/typescript.md +0 -4
- package/zh/guides/basic-features/image.md +0 -43
- package/zh/guides/concept/integrated.md +0 -4
- package/zh/guides/concept/solutions.md +0 -4
- package/zh/guides/topic-detail/compile-speed.md +0 -182
- package/zh/guides/topic-detail/framework-plugin/abstract.md +0 -27
- package/zh/guides/troubleshooting/compile.md +0 -379
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -318
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 2
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Hook 模型
|
|
6
|
-
|
|
7
|
-
首先介绍一下 Modern.js 的基础的插件系统中的一些内容,包括 Hook 模型的工作方式、各个 Hook 模型的运行模式、Manager 的工作模式。
|
|
8
|
-
|
|
9
|
-
每种 Hook 模型都是独立的,可以独立管理运行函数。
|
|
10
|
-
|
|
11
|
-
## 基础工作方式
|
|
12
|
-
|
|
13
|
-
先以 Pipeline 为例,简单介绍一下 Hook 模型的工作方式。先看一个简单的例子:
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
import { createPipeline } from '@modern-js/plugin'
|
|
17
|
-
|
|
18
|
-
// 1. 创建
|
|
19
|
-
const pipeline = createPipeline<number, number>()
|
|
20
|
-
|
|
21
|
-
// 2. 添加函数
|
|
22
|
-
pipeline.use((count, next) => {
|
|
23
|
-
return next(count + 1)
|
|
24
|
-
})
|
|
25
|
-
pipeline.use((count, next) => {
|
|
26
|
-
return count * 2
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
// 3. 执行
|
|
30
|
-
pipeline.run(1) // 4
|
|
31
|
-
pipeline.run(5) // 12
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
在这个例子中,创建了一个 `Pipeline<number, number>` 类型的 Pipeline(L3),这意味着运行它的时候,你需要传入一个 `number`,然后你会得到一个 `number`,而这个模型管理的函数的类型是:
|
|
35
|
-
|
|
36
|
-
```ts
|
|
37
|
-
(count: number, next: (nextCount: number) => number) => number
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
这里全是 `number`,是因为我们创建的是 `Pipeline<number, number>` ,如果创建的是 `Pipeline<number, string>` 则运行它入参是 `number`,返回值是 `string`,对应管理的函数的类型会是:
|
|
41
|
-
|
|
42
|
-
```ts
|
|
43
|
-
(count: number, next: (nextCount: number) => string) => string
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
创建好 Pipeline 之后,可以通过 `use` 添加函数(L5、L8),需要注意的是,添加的顺序就是他们默认的运行顺序,在这些函数中,你可以对 `count` 进行处理、返回一个值,如果你调用了 `next` 函数,则会运行后面的函数,即如果你添加了三个函数: `A`、`B`、`C`,如果你在 `A` 中调用 `next` 那么就会运行 `B`,同样的,如果你在 `B` 中调用 `next` 那么就会运行 `C`,而在上面的例子中,添加的第一个函数(L5)就运行了 `next`,所以这里就会运行第二个函数(L8),并且运行的返回值就是 第二个函数的返回值,如果在第一个函数中没有调用 `next`,直接返回,例如:
|
|
48
|
-
|
|
49
|
-
```ts
|
|
50
|
-
import { createPipeline } from '@modern-js/plugin'
|
|
51
|
-
|
|
52
|
-
// 1. 创建
|
|
53
|
-
const pipeline = createPipeline<number, number>()
|
|
54
|
-
|
|
55
|
-
// 2. 添加函数
|
|
56
|
-
pipeline.use((count, next) => {
|
|
57
|
-
return count + 1
|
|
58
|
-
})
|
|
59
|
-
pipeline.use((count, next) => {
|
|
60
|
-
return count * 2
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
// 3. 执行
|
|
64
|
-
pipeline.run(1) // 2
|
|
65
|
-
pipeline.run(5) // 6
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
则在运行 Pipeline 的时候就不会运行第二个函数,那么 Pipeline 的运行结果则就是第一个函数的返回值。
|
|
69
|
-
|
|
70
|
-
最后,运行 Pipeline 的方式也显而易见就是调用 `pipeline.run` 。
|
|
71
|
-
|
|
72
|
-
## 不同 Hook 模型的区别
|
|
73
|
-
|
|
74
|
-
上面这部分就是 Pipeline 整体的一个工作模式的描述,其他的 Hook 模型的工作模式基本也是这样,主要的区别点,是函数类型、执行顺序,参数。
|
|
75
|
-
|
|
76
|
-
### Pipeline
|
|
77
|
-
|
|
78
|
-
上面的例子就是以 Pipeline 为例描述的,这里就不赘述了,在 Pipeline 这个大类中,提供了两个小类: Sync 和 Async,顾名思义,它们的区别就是管理的函数的类型是 Sync 的还是 Async 的。
|
|
79
|
-
|
|
80
|
-
:::info
|
|
81
|
-
当 Pipeline 中没有函数或者所有函数都调用了 `next` 函数,则就需要在运行的时候提供:
|
|
82
|
-
|
|
83
|
-
```ts
|
|
84
|
-
pipeline({}, {
|
|
85
|
-
onLast: () => {
|
|
86
|
-
// do something
|
|
87
|
-
}
|
|
88
|
-
})
|
|
89
|
-
```
|
|
90
|
-
:::
|
|
91
|
-
|
|
92
|
-
### Waterfall
|
|
93
|
-
|
|
94
|
-
这种模型顾名思义,他的特点就是参数的顺序递交,即前面一个函数的返回值,将会成为下一个函数的入参,我们也用一个例子来看一下:
|
|
95
|
-
|
|
96
|
-
```ts
|
|
97
|
-
import { createWaterfall } from '@modern-js/plugin'
|
|
98
|
-
|
|
99
|
-
// 1. 创建
|
|
100
|
-
const waterfall = createWaterfall<number>()
|
|
101
|
-
|
|
102
|
-
// 2. 添加函数
|
|
103
|
-
waterfall.use((count) => {
|
|
104
|
-
return count + 1
|
|
105
|
-
})
|
|
106
|
-
waterfall.use((count) => {
|
|
107
|
-
return count * 2
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
// 3. 执行
|
|
111
|
-
waterfall.run(1) // 4
|
|
112
|
-
waterfall.run(5) // 12
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
这个例子中,创建了一个类型为 `Waterfall<number> `,即这个模型执行的入参和返回值是一样的,这个例子中都是 `number`,而它管理的函数的类型是:
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
(count: number) => number
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
可能简单看这个例子感觉和上面的 Pipeline 功能一样,那需要注意的是,首先这里 Waterfall 管理的函数没有next 函数作为第二个参数,所以它无法在函数内部通过调用 next 来先运行之后添加的函数,从而修改运行的顺序,其次这里的运行的入参的类型和返回值的类型必须是一样的(而 Pipeline 可以不一样)。
|
|
122
|
-
|
|
123
|
-
同样的,在 Waterfall 这个大类中,也提供了 Sync 和 Async 的小类,分别对应 Sync 和 Async 的函数。
|
|
124
|
-
|
|
125
|
-
### Workflow
|
|
126
|
-
|
|
127
|
-
这种 Hook 模型与上面两种 Hook 模型的区别是,没有那么强的前后参数返回值递交的概念,在这个模型中,每个函数都是基于同样的入参,相对独立运行的,通过一个例子简单看一下:
|
|
128
|
-
|
|
129
|
-
```ts
|
|
130
|
-
import { createWorkflow } from '@modern-js/plugin'
|
|
131
|
-
|
|
132
|
-
// 1. 创建
|
|
133
|
-
const workflow = createWorkflow <number, number>()
|
|
134
|
-
|
|
135
|
-
// 2. 添加函数
|
|
136
|
-
workflow.use((count) => {
|
|
137
|
-
return count + 1
|
|
138
|
-
})
|
|
139
|
-
workflow.use((count) => {
|
|
140
|
-
return count * 2
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
// 3. 执行
|
|
144
|
-
workflow.run(1) // [2, 2]
|
|
145
|
-
workflow.run(5) // [6, 10]
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
在这个例子中,添加了两个函数,所以运行的结果就是这两个函数运行的结果形成的一个数组。
|
|
149
|
-
|
|
150
|
-
虽然这种模型中没有那么强的前后参数返回值递交的概念,但依旧有执行顺序的区别,在 Workflow 这个大类中,提供了三个小类: Sync、Async、Parallel。他们之间的区别就是函数的执行顺序,当然默认的都是按照添加顺序执行,而在 Sync、Async 则是强制按照添加顺序执行,而 Parallel 则是 Async 模式的一个变体,即它使用的是 `Promise.all` 来执行所有函数,而 Async 则会 `await` 前面的函数运行结束。
|
|
151
|
-
|
|
152
|
-
## Hook 模型对比
|
|
153
|
-
|
|
154
|
-
<div style={{ width: "100%", overflowX: "scroll" }}>
|
|
155
|
-
<div style={{ width: "150%" }}>
|
|
156
|
-
|
|
157
|
-
||函数类型|执行顺序|函数参数来源|执行返回值来源|倾向处理的任务类型|函数 TS 类型|
|
|
158
|
-
|-----|-----|-----|-----|----|----|----|
|
|
159
|
-
|Pipeline|Sync|默认执行第一个添加的函数,可以通过 next 调用之后添加的函数|第一个函数的参数来源是运行的参数,之后的函数的参数来源是,前一个函数向 next 函数传递的参数|第一个函数的返回值|<ul><li>需要修改初始参数</li><li>需要修改函数执行顺序</li></ul>|`(input: I, next: Next<I, O>) => O`|
|
|
160
|
-
|AsyncPipeline|Sync/Async|默认执行第一个添加的函数,可以通过 next 调用之后添加的函数|第一个函数的参数来源是运行的参数,之后的函数的参数来源是,前一个函数向 next 函数传递的参数|第一个函数的返回值|<ul><li>需要修改初始参数</li><li>需要修改函数执行顺序</li></ul>|`(input: I, next: AsyncNext<I, O>) => O | Promise<O>`|
|
|
161
|
-
|WaterFall|Sync|一直顺序执行|第一个函数的参数来源是运行的参数,之后的函数的参数来源是,前一个函数的返回值|最后一个函数的返回值|<ul><li>需要修改初始参数</li><li>不需要修改函数执行顺序</li></ul>|`(I: I) => I`|
|
|
162
|
-
|AsyncWaterFall|Sync/Async|一直顺序执行|第一个函数的参数来源是运行的参数,之后的函数的参数来源是,前一个函数的返回值|最后一个函数的返回值|<ul><li>需要修改初始参数</li><li>不需要修改函数执行顺序</li></ul>|`(I: I) => I | Promise<I>`|
|
|
163
|
-
|Workflow|Sync|一直顺序执行|所有函数的入参都是运行的参数|所有函数返回值形成的数组|<ul><li>不需要修改初始参数</li><li>不需要修改函数执行顺序</li></ul>|`(I: I) => O`|
|
|
164
|
-
|AsyncWorkflow|Sync/Async|一直顺序执行|所有函数的入参都是运行的参数|所有函数返回值形成的数组|<ul><li>不需要修改初始参数</li><li>不需要修改函数执行顺序</li></ul>|`(I: I) => O | Promise<O>`|
|
|
165
|
-
|ParallelWorkFlow|Sync/Async|异步执行|所有函数的入参都是运行的参数|所有函数返回值形成的数组|<ul><li>不需要修改初始参数</li><li>不关心执行顺序</li></ul>|`(I: I) => O | Promise<O>`|
|
|
166
|
-
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
|
-
|
|
170
|
-
Workflow、Waterfall 其实都是 Pipeline 的变体,Pipeline 可以通过特定的写法来实现 Workflow、Waterfall ,但都较为麻烦,有许多隐形的约定,为了方便使用,提供了这两种变体来满足这种特殊场景。
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 1
|
|
3
|
-
title: 默认别名
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Modern.js 推荐通过别名的方式引用源码,其中包含 3 种默认别名:
|
|
7
|
-
- `@/`:等价于引用项目根目录 `src/*` 下的文件。
|
|
8
|
-
- `@api/`:等价于引用项目根目录下 `api/*` 下的文件(需要先开启 BFF 功能)。
|
|
9
|
-
- `@shared/`:等价于引用项目根目录下 `shared/*` 下的文件。
|
|
10
|
-
|
|
11
|
-
:::tip 提示
|
|
12
|
-
- 除了以下默认别名,开发者可以在 `modern.config.js` 中自定义别名,详见[如何配置别名](/docs/configure/app/source/alias)。
|
|
13
|
-
:::
|
|
14
|
-
|
|
15
|
-
## 示例
|
|
16
|
-
下面的例子展示了如何通过默认别名引用函数。
|
|
17
|
-
```tsx
|
|
18
|
-
import { hello } from '@/common/utils';
|
|
19
|
-
|
|
20
|
-
hello();
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
引用 `@/common/utils` 相当于引用 `src/common/utils`。
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 1
|
|
3
|
-
title: 环境变量
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
Modern.js 内置了对环境变量的支持,包含内置的环境变量和自定义的环境变量。
|
|
7
|
-
|
|
8
|
-
## 内置的环境变量
|
|
9
|
-
|
|
10
|
-
### NODE_ENV
|
|
11
|
-
|
|
12
|
-
表示当前的执行环境,是**只读的**的环境变量,其值在不同的执行命令下具有不同的值:
|
|
13
|
-
|
|
14
|
-
- `production`:执行 `modern build`、`modern preview` 命令时的默认值。
|
|
15
|
-
- `test`:执行 `modern test` 命令时的默认值。
|
|
16
|
-
- `development`:执行 `modern dev` 命令时的默认值,同时也是其他所有情况下的默认值。
|
|
17
|
-
|
|
18
|
-
### MODERN_ENV
|
|
19
|
-
|
|
20
|
-
用于设置当前的执行环境,除了上述 NODE_ENV 对应的值之外,这里支持自定义环境名称,比如 `staging`、`boe` 等,Modern.js 会根据该环境变量对应的加载 env.{process.env.MODERN_ENV} 文件中设置的环境变量值。
|
|
21
|
-
|
|
22
|
-
当需要通过环境名称使用不同的配置时,可以把环境变量定义到对应的环境名称的 env 文件中。
|
|
23
|
-
|
|
24
|
-
MODERN_ENV 的优先级高于 NODE_ENV。
|
|
25
|
-
|
|
26
|
-
## 自定义环境变量
|
|
27
|
-
|
|
28
|
-
Modern.js 支持自定义的环境变量,以 `MODERN_` 开头的环境变量可以在代码中直接使用。
|
|
29
|
-
|
|
30
|
-
如果需要自动以任意名称的环境变量,需要在 [`source.define`](/docs/configure/app/source/define) 配置中声明后使用。
|
|
31
|
-
|
|
32
|
-
## 定义环境变量
|
|
33
|
-
|
|
34
|
-
环境变量支持通过 `shell` 和 `.env` 文件两种方式指定。
|
|
35
|
-
|
|
36
|
-
### 通过 `shell` 指定
|
|
37
|
-
|
|
38
|
-
在命令前添加自定义环境变量:
|
|
39
|
-
|
|
40
|
-
```shell
|
|
41
|
-
REACT_APP_FOO=123 BAR=456 pnpm run dev
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### 通过 `.env` 文件指定
|
|
45
|
-
|
|
46
|
-
在项目根目录创建 `.env` 文件,其中添加自定义环境变量:
|
|
47
|
-
|
|
48
|
-
```env
|
|
49
|
-
REACT_APP_FOO=123
|
|
50
|
-
BAR=456
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
.env 文件支持后缀名后 NODE_ENV 或 MODERN_ENV 定义的环境名称,如 `.env.development`,可根据项目需求进行定义。Modern.js 会根据环境名称变量值读取对应的 env 文件。
|
|
54
|
-
|
|
55
|
-
## 使用环境变量
|
|
56
|
-
|
|
57
|
-
### JS/TS 代码内使用
|
|
58
|
-
|
|
59
|
-
通过 `process.env.*` 直接获取环境变量。
|
|
60
|
-
|
|
61
|
-
```js
|
|
62
|
-
console.log(process.env.NODE_ENV);
|
|
63
|
-
// "development"
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### HTML 代码片段使用
|
|
67
|
-
|
|
68
|
-
```html title="config/html/head.ejs"
|
|
69
|
-
<meta name="env" content="<%=process.env.NODE_ENV %>" />
|
|
70
|
-
```
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 1
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# 概览
|
|
6
|
-
|
|
7
|
-
Modern.js 的基础的插件系统中主要分为三个部分:Hook 模型(Pipeline、Workflow、Waterfall)、 Hook 模型的管理器(Manager),上下文共享机制。
|
|
8
|
-
|
|
9
|
-
其中的 Hook 模型是用于管理运行一系列相同模型(形状)函数的管理工具,目前提供了三个大类,7个小类:
|
|
10
|
-
|
|
11
|
-
- Pipeline
|
|
12
|
-
- Sync
|
|
13
|
-
- Async
|
|
14
|
-
- Waterfall
|
|
15
|
-
- Sync
|
|
16
|
-
- Async
|
|
17
|
-
- Workflow
|
|
18
|
-
- Sync
|
|
19
|
-
- Async
|
|
20
|
-
- Parallel(Async)
|
|
21
|
-
|
|
22
|
-
它们之间的区别是他们所管理的函数的运行模式的不同。不同的地方会在下面具体分析介绍。
|
|
23
|
-
|
|
24
|
-
Hook 模型的管理器(Manager),顾名思义就是用来管理上面提到的那些 Hook 模型,添加至同一个 Manager 可以使用同一个 Runner 对象(包含所有 Hook 的执行函数)来运行,也共享同一个上下文环境。而 Modern.js 的基础插件系统中的插件就是针对 Manager 来说的,是一个拥有属性、插件 Hook 函数的对象。
|
|
25
|
-
|
|
26
|
-
基于上面的工具(Hook 模型 + Manager),在 Modern.js 中主要构建了三套插件模型:CLI、Runtime、Server。其中 CLI 是 Modern.js 中主要的运行流程控制模型,Modern.js 中的各种工程方案(应用工程方案、模块工程方案、Monorepo 工程方案)都是主要通过这一套模型运行的。而 Runtime 则主要负责的是 React 路由组件和元素的处理(Component 和 Element)和渲染(包括服务器端渲染和客户端渲染)。而 Server 则是针对 Server 运行时的这个阶段的生命周期运行和特殊信息收集。其中 Runtime 和 Server 的运行都是在 CLI 中触发的。
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 5
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Plugin API
|
|
6
|
-
|
|
7
|
-
插件的 setup 函数会接收一个 api 入参,你可以调用 api 上提供的一些方法来获取到配置、应用上下文等信息。
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
import type { CliPlugin } from '@modern-js/core';
|
|
11
|
-
|
|
12
|
-
export default (): CliPlugin => ({
|
|
13
|
-
name: 'my-plugin',
|
|
14
|
-
|
|
15
|
-
setup(api) {
|
|
16
|
-
// 获取应用原始配置
|
|
17
|
-
const config = api.useConfigContext();
|
|
18
|
-
// 获取应用运行上下文
|
|
19
|
-
const appContext = api.useAppContext();
|
|
20
|
-
// 获取解析之后的最终配置
|
|
21
|
-
const resolvedConfig = api.useResolvedConfigContext();
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## API
|
|
27
|
-
|
|
28
|
-
### useConfigContext
|
|
29
|
-
|
|
30
|
-
用于获取应用原始配置。
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
const useConfigContext: () => UserConfig
|
|
34
|
-
|
|
35
|
-
interface UserConfig {
|
|
36
|
-
source?: SourceConfig;
|
|
37
|
-
output?: OutputConfig;
|
|
38
|
-
server?: ServerConfig;
|
|
39
|
-
dev?: DevConfig;
|
|
40
|
-
deploy?: DeployConfig;
|
|
41
|
-
tools?: ToolsConfig;
|
|
42
|
-
plugins?: PluginConfig;
|
|
43
|
-
runtime?: RuntimeConfig;
|
|
44
|
-
runtimeByEntries?: RuntimeByEntriesConfig;
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
具体配置字段的意义请参考【[配置](/docs/configure/app/source/alias)】。
|
|
49
|
-
|
|
50
|
-
### useAppContext
|
|
51
|
-
|
|
52
|
-
用于获取应用运行上下文。
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
const useAppContext: () => IAppContext
|
|
56
|
-
|
|
57
|
-
interface IAppContext {
|
|
58
|
-
appDirectory: string;
|
|
59
|
-
configFile: string | false;
|
|
60
|
-
ip?: string;
|
|
61
|
-
port?: number;
|
|
62
|
-
distDirectory: string;
|
|
63
|
-
packageName: string;
|
|
64
|
-
srcDirectory: string;
|
|
65
|
-
sharedDirectory: string;
|
|
66
|
-
nodeModulesDirectory: string;
|
|
67
|
-
internalDirectory: string;
|
|
68
|
-
plugins: {
|
|
69
|
-
cli?: any;
|
|
70
|
-
server?: any;
|
|
71
|
-
}[];
|
|
72
|
-
entrypoints: Entrypoint[];
|
|
73
|
-
serverRoutes: ServerRoute[];
|
|
74
|
-
htmlTemplates: HtmlTemplates;
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### useResolvedConfigContext
|
|
79
|
-
|
|
80
|
-
用于获取解析之后的最终配置。
|
|
81
|
-
|
|
82
|
-
```ts
|
|
83
|
-
const useResolvedConfigContext: () => NormalizedConfig
|
|
84
|
-
|
|
85
|
-
interface NormalizedConfig {
|
|
86
|
-
source: NormalizedSourceConfig;
|
|
87
|
-
output: OutputConfig;
|
|
88
|
-
server: ServerConfig;
|
|
89
|
-
dev: DevConfig;
|
|
90
|
-
deploy: DeployConfig;
|
|
91
|
-
tools: NormalizedToolsConfig;
|
|
92
|
-
plugins: PluginConfig;
|
|
93
|
-
runtime: RuntimeConfig;
|
|
94
|
-
runtimeByEntries?: RuntimeByEntriesConfig;
|
|
95
|
-
_raw: UserConfig
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
具体配置字段的意义请参考【[配置](/docs/configure/app/source/alias)】。
|
|
100
|
-
|
|
101
|
-
### useHookRunners
|
|
102
|
-
|
|
103
|
-
用于获取 Hooks 的执行器,并触发特定的 Hook 执行。
|
|
104
|
-
|
|
105
|
-
```ts
|
|
106
|
-
import type { CliPlugin } from '@modern-js/core';
|
|
107
|
-
|
|
108
|
-
export default (): CliPlugin => ({
|
|
109
|
-
name: 'my-plugin',
|
|
110
|
-
|
|
111
|
-
async setup(api) {
|
|
112
|
-
const hookRunners = api.useHookRunners();
|
|
113
|
-
// 触发 afterBuild Hook
|
|
114
|
-
await hookRunners.afterBuild();
|
|
115
|
-
},
|
|
116
|
-
});
|
|
117
|
-
```
|
package/zh/components/deploy.md
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
Modern.js 支持通过云平台一键部署应用。
|
|
2
|
-
|
|
3
|
-
使用云平台部署应用,我们需要先开启部署功能。在项目根目录下执行 `pnpm run new`,进行如下选择:
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
? 请选择你想要的操作:启用可选功能
|
|
7
|
-
? 启用可选功能:启用「部署」功能
|
|
8
|
-
? 默认使用框架自带的专业 Web 服务器,是否调整:否
|
|
9
|
-
? 请选择 CDN 平台:阿里云 OSS
|
|
10
|
-
? 请选择云函数平台:阿里云 FC
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
安装依赖后,可以看到 package.json 中新增了两项依赖:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
+ "@modern-js/plugin-lambda-fc": "^1"
|
|
17
|
-
+ "@modern-js/plugin-cdn-fc": "^1"
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
我们可以在项目根目录下的 `.env` 中添加云平台必要的账号信息,以阿里云为例,包括 `accountId`、`secretId` 和 `secretKey`。使用 CDN 上传还需要配置 `bucketName`。
|
|
21
|
-
|
|
22
|
-
部分**可暴露的、可以进入代码仓库**的环境变量可以放在项目的 `.env` 文件中,例如:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# 阿里云账号 ID
|
|
26
|
-
CLOUD_ACCOUNT_ID
|
|
27
|
-
# 阿里云 OSS Bucket 名称
|
|
28
|
-
CLOUD_BUCKET_NAME
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
鉴权相关信息**必须在平台上配置,不能进入代码仓库**。为了方便本地测试,我们临时的在 `.env` 中添加:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# 阿里云访问 AK
|
|
35
|
-
CLOUD_SECRET_ID
|
|
36
|
-
# 阿里云访问 SK
|
|
37
|
-
CLOUD_SECRET_KEY
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
:::warning 警告
|
|
41
|
-
此处仅仅是用于本地测试,SecretID/SecretKey 必须从代码中移除,避免信息泄露。
|
|
42
|
-
:::
|
|
43
|
-
|
|
44
|
-
1. AccountID 在[阿里云账号中心页](https://account.console.aliyun.com/v2/#/basic-info/index)获取。
|
|
45
|
-
|
|
46
|
-
2. SecretID(AccessKey ID),SecretKey(AccessKey Secret),在[用户信息管理页](https://usercenter.console.aliyun.com/#/manage/ak)获取。
|
|
47
|
-
|
|
48
|
-
3. Bucket 信息可以从阿里云 OSS 的 [Bucket 列表](https://oss.console.aliyun.com/bucket)中获取。
|
|
49
|
-
|
|
50
|
-
我们可以根据 OSS 的 Bucket 名称和 Region 名称拼接出 OSS 的临时域名,并设置为[静态资源域名前缀](/docs/configure/app/output/asset-prefix):
|
|
51
|
-
|
|
52
|
-
```js
|
|
53
|
-
export default defineConfig({
|
|
54
|
-
output: {
|
|
55
|
-
assetPrefix: "https://{bucketName}.oss-{bucketRegion}.aliyuncs.com/"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
执行 `pnpm run deploy` 命令后,应用将会先执行构建,将静态资源上传到 OSS 以及将应用部署到阿里云 FC 中。
|
package/zh/components/dev-ide.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Modern.js 对 VS Code 等主流 IDE 提供了开箱即用的支持,具备 Lint 问题自动检测、自动修复,代码提交前的准入检查等功能特性,可以让代码开发更加高效和智能。详细介绍请参考【[确认编程环境](/docs/tutorials/first-app/c03-ide/3.1-setting-up)】。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
## 入口名称
|
|
2
|
-
|
|
3
|
-
默认情况下,「入口名称」为页面入口所在目录的名称。
|
|
4
|
-
|
|
5
|
-
例如,项目的目录结构如下时,入口名称为 `page-a` 和 `page-b`。
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
└── src
|
|
9
|
-
├── page-a
|
|
10
|
-
│ └── App.jsx
|
|
11
|
-
└── page-b
|
|
12
|
-
└── App.jsx
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
如果使用 [source.entries](/docs/configure/app/source/entries) 自定义了页面入口,则「入口名称」为 `source.entries` 对象的 `key`。
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
开始之前,请参考【[环境准备](/docs/tutorials/first-app/c01-getting-started/1.1-prerequisites)】部分,确保本地环境正常。
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 3
|
|
3
|
-
title: 定制 BFF Server
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
BFF Server 与应用一体,共同开发、调试、部署,开发者通常只需要写函数即可。但有时,应用中会存在一些 BFF 函数的通用前置逻辑,例如权限校验。
|
|
7
|
-
|
|
8
|
-
在[一体化 Web 专题](/docs/guides/advanced-features/web-server)中提到过,Modern.js 支持定制 Web Server。同样,Modern.js 也为 BFF Server 提供了扩展能力。
|
|
9
|
-
|
|
10
|
-
Modern.js 允许开发者创建 `api/_app.ts` 文件,在该文件中对定制自己的 BFF Server。
|
|
11
|
-
|
|
12
|
-
和 Web Server 相同,默认支持了 4 种主流的 Node.js Server 框架:Express、Koa、Egg、Nest,开发者可以根据自身偏好,选择合适的框架来编写 `api/_app.ts`。
|
|
13
|
-
|
|
14
|
-
这里先以 Express 为例来展示一下用法,下一章节会详细介绍各个框架扩展的写法。
|
|
15
|
-
|
|
16
|
-
首先创建项目,并[开启 BFF 功能](/docs/tutorials/first-app/c09-bff/9.2-enable-bff),这时项目的目录结构是:
|
|
17
|
-
|
|
18
|
-
```md
|
|
19
|
-
.
|
|
20
|
-
├── README.md
|
|
21
|
-
├── api
|
|
22
|
-
│ ├── _app.ts
|
|
23
|
-
│ ├── index.ts
|
|
24
|
-
│ └── info
|
|
25
|
-
│ └── [type].ts
|
|
26
|
-
├── modern.config.ts
|
|
27
|
-
├── package.json
|
|
28
|
-
├── pnpm-lock.yaml
|
|
29
|
-
├── src
|
|
30
|
-
│ ├── App.css
|
|
31
|
-
│ ├── App.tsx
|
|
32
|
-
│ ├── index.test.ts
|
|
33
|
-
│ └── modern-app-env.d.ts
|
|
34
|
-
└── tsconfig.json
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
创建一个 `api/login.ts` 文件用于实现登录:
|
|
38
|
-
|
|
39
|
-
```ts
|
|
40
|
-
import { useContext } from '@modern-js/runtime/server';
|
|
41
|
-
|
|
42
|
-
export const post = async () => {
|
|
43
|
-
const ctx = useContext();
|
|
44
|
-
ctx.res.cookie('sid', Math.random());
|
|
45
|
-
|
|
46
|
-
return { code: 0, message: 'OK' };
|
|
47
|
-
};
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
:::info 补充信息
|
|
51
|
-
`useContext` API 用于获取请求上下文,具体用法可以看 [API 文档](/docs/apis/app/runtime/bff/use-context)。
|
|
52
|
-
:::
|
|
53
|
-
|
|
54
|
-
接下来修改 `api/_app.ts`,手写一个中间件用于权限校验:
|
|
55
|
-
|
|
56
|
-
```ts
|
|
57
|
-
import { hook } from '@modern-js/runtime/server';
|
|
58
|
-
import { Request, Response, NextFunction } from 'express';
|
|
59
|
-
|
|
60
|
-
export default hook(({ addMiddleware }) => {
|
|
61
|
-
addMiddleware(async (req: Request, res: Response, next: NextFunction) => {
|
|
62
|
-
if (req.url !== '/api/login') {
|
|
63
|
-
const sid = req?.cookies?.sid;
|
|
64
|
-
if (!sid) {
|
|
65
|
-
res.status(400);
|
|
66
|
-
res.json({ code: -1, message: 'need login' });
|
|
67
|
-
} else {
|
|
68
|
-
next();
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
next();
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
然后添加一个普通的接口函数文件 `/api/hello.ts`:
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
export default async () => {
|
|
81
|
-
return 'Hello Modern.js';
|
|
82
|
-
};
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
最后在前端 `/src/App.tsx` 添加接口的访问代码,直接使用一体化调用的方式:
|
|
86
|
-
|
|
87
|
-
```ts
|
|
88
|
-
import { useState, useEffect } from 'react';
|
|
89
|
-
import { get as hello } from '@api/hello';
|
|
90
|
-
|
|
91
|
-
export default () => {
|
|
92
|
-
const [text, setText] = useState('');
|
|
93
|
-
|
|
94
|
-
useEffect(() => {
|
|
95
|
-
async function fetchMyApi() {
|
|
96
|
-
const { message } = await hello();
|
|
97
|
-
setText(message);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
fetchMyApi();
|
|
101
|
-
}, []);
|
|
102
|
-
|
|
103
|
-
return <p>{text}</p>;
|
|
104
|
-
};
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
然后 `pnpm run dev` 启动项目,访问 [http://localhost:8080/](http://localhost:8080/) 会发现 `/api/hello` 的请求被拦截了:
|
|
108
|
-
|
|
109
|
-

|
|
110
|
-
|
|
111
|
-
我们再修改前端代码 `src/App.tsx`,在访问 `/api/hello` 前先调用登录接口:
|
|
112
|
-
|
|
113
|
-
```ts
|
|
114
|
-
import { useState, useEffect } from 'react';
|
|
115
|
-
import { get as hello } from '@api/hello';
|
|
116
|
-
import { post as login } from '@api/login';
|
|
117
|
-
|
|
118
|
-
export default () => {
|
|
119
|
-
const [text, setText] = useState('');
|
|
120
|
-
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
async function fetchAfterLogin() {
|
|
123
|
-
const { code } = await login();
|
|
124
|
-
if (code === 0) {
|
|
125
|
-
const { message } = await hello();
|
|
126
|
-
setText(message);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
fetchAfterLogin();
|
|
130
|
-
}, []);
|
|
131
|
-
|
|
132
|
-
return <p>{text}</p>;
|
|
133
|
-
};
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
刷新页面,可以看到 `/api/hello` 访问成功:
|
|
137
|
-
|
|
138
|
-

|
|
139
|
-
|
|
140
|
-
以上代码模拟了在 `/api/_app.ts` 中添加中间件的方式,实现了简易的登录功能。
|
|
141
|
-
|
|
142
|
-
同样,可以在这个钩子文件中实现其他功能来扩展 BFF Server。
|