@modern-js/main-doc 2.69.4 → 3.0.0-alpha.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/docs/en/{_meta.json → _nav.json} +5 -1
- package/docs/en/apis/app/commands.mdx +2 -3
- package/docs/en/apis/app/hooks/src/entry.mdx +1 -5
- package/docs/en/apis/app/hooks/src/entry.server.mdx +4 -5
- package/docs/en/apis/app/hooks/src/routes.mdx +2 -2
- package/docs/en/apis/app/runtime/_meta.json +0 -18
- package/docs/en/apis/app/runtime/bff/use-hono-context.mdx +2 -2
- package/docs/en/apis/app/runtime/router/router.mdx +1 -1
- package/docs/en/apis/app/runtime/utility/css-in-js.mdx +3 -2
- package/docs/en/community/blog/v2-release-note.mdx +0 -2
- package/docs/en/community/contributing-guide.mdx +10 -12
- package/docs/en/components/bff-upload.mdx +16 -12
- package/docs/en/components/build-output.mdx +45 -0
- package/docs/en/components/debug-app.mdx +1 -1
- package/docs/en/components/enable-bff-caution.mdx +2 -2
- package/docs/en/components/enable-bff.mdx +38 -8
- package/docs/en/components/enable-ssg.mdx +48 -0
- package/docs/en/components/entry-scan-logic.mdx +7 -0
- package/docs/en/components/init-app.mdx +40 -17
- package/docs/en/components/international/install-command.mdx +9 -0
- package/docs/en/components/international/introduce.mdx +2 -0
- package/docs/en/components/module-federation.mdx +4 -4
- package/docs/en/components/new-entry-tooltip.mdx +0 -0
- package/docs/en/components/nodeVersion.mdx +2 -6
- package/docs/en/components/prerequisites.mdx +1 -1
- package/docs/en/components/ua-polyfill.mdx +16 -12
- package/docs/en/components/upgrade-browserslist.mdx +0 -0
- package/docs/en/configure/_meta.json +7 -8
- package/docs/en/configure/app/bff/cross-project.mdx +24 -0
- package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
- package/docs/en/configure/app/dev/server.mdx +103 -0
- package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
- package/docs/en/configure/app/html/app-icon.mdx +1 -23
- package/docs/en/configure/app/output/inline-scripts.mdx +1 -1
- package/docs/en/configure/app/output/override-browserslist.mdx +6 -4
- package/docs/en/configure/app/output/source-map.mdx +6 -3
- package/docs/en/configure/app/output/ssg.mdx +12 -43
- package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
- package/docs/en/configure/app/performance/build-cache.mdx +0 -4
- package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
- package/docs/en/configure/app/resolve/alias.mdx +13 -0
- package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
- package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
- package/docs/en/configure/app/resolve/extensions.mdx +18 -0
- package/docs/en/configure/app/runtime/0-intro.mdx +2 -51
- package/docs/en/configure/app/security/check-syntax.mdx +1 -1
- package/docs/en/configure/app/server/port.mdx +1 -21
- package/docs/en/configure/app/server/rsc.mdx +30 -0
- package/docs/en/configure/app/server/ssr.mdx +20 -9
- package/docs/en/configure/app/source/decorators.mdx +4 -2
- package/docs/en/configure/app/source/entries.mdx +0 -2
- package/docs/en/configure/app/source/main-entry-name.mdx +4 -4
- package/docs/en/configure/app/source/transform-import.mdx +1 -59
- package/docs/en/configure/app/tools/bundler-chain.mdx +5 -5
- package/docs/en/configure/app/tools/css-extract.mdx +1 -1
- package/docs/en/configure/app/tools/dev-server.mdx +14 -248
- package/docs/en/configure/app/tools/html-plugin.mdx +3 -3
- package/docs/en/configure/app/tools/lightningcss-loader.mdx +0 -1
- package/docs/en/configure/app/tools/swc.mdx +1 -43
- package/docs/en/configure/app/usage.mdx +7 -17
- package/docs/en/guides/_meta.json +1 -2
- package/docs/en/guides/advanced-features/_meta.json +6 -0
- package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -7
- package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
- package/docs/en/guides/advanced-features/bff/frameworks.mdx +1 -1
- package/docs/en/guides/advanced-features/bff/function.mdx +2 -6
- package/docs/en/guides/advanced-features/bff/sdk.mdx +3 -3
- package/docs/en/guides/advanced-features/build-performance.mdx +23 -26
- package/docs/en/guides/advanced-features/compatibility.mdx +53 -9
- package/docs/en/guides/advanced-features/international/_meta.json +11 -0
- package/docs/en/guides/advanced-features/international/advanced.mdx +193 -0
- package/docs/en/guides/advanced-features/international/api.mdx +400 -0
- package/docs/en/guides/advanced-features/international/basic.mdx +417 -0
- package/docs/en/guides/advanced-features/international/best-practices.mdx +135 -0
- package/docs/en/guides/advanced-features/international/configuration.mdx +437 -0
- package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
- package/docs/en/guides/advanced-features/international/quick-start.mdx +154 -0
- package/docs/en/guides/advanced-features/international/resource-loading.mdx +417 -0
- package/docs/en/guides/advanced-features/international/routing.mdx +212 -0
- package/docs/en/guides/advanced-features/international.mdx +37 -0
- package/docs/en/guides/advanced-features/low-level.mdx +21 -16
- package/docs/en/guides/advanced-features/page-performance/code-split.mdx +4 -4
- package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
- package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
- package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
- package/docs/en/guides/advanced-features/rspack-start.mdx +2 -22
- package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
- package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -34
- package/docs/en/guides/advanced-features/web-server.mdx +82 -299
- package/docs/en/guides/basic-features/_meta.json +6 -1
- package/docs/en/guides/basic-features/css/css-in-js.mdx +46 -11
- package/docs/en/guides/basic-features/css/css-modules.mdx +5 -17
- package/docs/en/guides/basic-features/css/css.mdx +3 -3
- package/docs/en/guides/basic-features/css/tailwindcss.mdx +5 -89
- package/docs/en/guides/basic-features/data/data-cache.mdx +5 -1
- package/docs/en/guides/basic-features/data/data-fetch.mdx +4 -4
- package/docs/en/guides/basic-features/data/data-write.mdx +2 -2
- package/docs/en/guides/basic-features/debug/mock.mdx +4 -1
- package/docs/en/guides/basic-features/debug/proxy.mdx +0 -8
- package/docs/en/guides/basic-features/debug/rsdoctor.mdx +5 -5
- package/docs/en/guides/basic-features/deploy.mdx +25 -18
- package/docs/en/guides/basic-features/env-vars.mdx +1 -1
- package/docs/en/guides/basic-features/html.mdx +1 -1
- package/docs/en/guides/basic-features/output-files.mdx +3 -3
- package/docs/en/guides/basic-features/render/_meta.json +1 -1
- package/docs/en/guides/basic-features/render/before-render.mdx +16 -23
- package/docs/en/guides/basic-features/render/overview.mdx +51 -0
- package/docs/en/guides/basic-features/render/rsc.mdx +394 -0
- package/docs/en/guides/basic-features/render/ssg.mdx +26 -62
- package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -6
- package/docs/en/guides/basic-features/render/ssr.mdx +31 -31
- package/docs/en/guides/basic-features/render/streaming-ssr.mdx +29 -9
- package/docs/en/guides/basic-features/routes/_meta.json +1 -0
- package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
- package/docs/en/guides/basic-features/{routes.mdx → routes/routes.mdx} +7 -110
- package/docs/en/guides/basic-features/static-assets/json-files.mdx +21 -3
- package/docs/en/guides/basic-features/static-assets.mdx +2 -2
- package/docs/en/guides/concept/builder.mdx +24 -9
- package/docs/en/guides/concept/entries.mdx +139 -147
- package/docs/en/guides/get-started/glossary.mdx +0 -18
- package/docs/en/guides/get-started/introduction.mdx +1 -4
- package/docs/en/guides/get-started/quick-start.mdx +8 -73
- package/docs/en/guides/get-started/tech-stack.mdx +7 -25
- package/docs/en/guides/get-started/upgrade.mdx +30 -23
- package/docs/en/guides/topic-detail/_meta.json +0 -12
- package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -1
- package/docs/en/guides/topic-detail/module-federation/application.mdx +16 -15
- package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
- package/docs/en/guides/topic-detail/module-federation/introduce.mdx +5 -4
- package/docs/en/guides/topic-detail/module-federation/ssr.mdx +50 -2
- package/docs/en/guides/topic-detail/module-federation/usage.mdx +10 -30
- package/docs/en/guides/troubleshooting/builder.mdx +3 -82
- package/docs/en/guides/troubleshooting/cli.mdx +6 -30
- package/docs/en/guides/troubleshooting/dependencies.mdx +22 -22
- package/docs/en/plugin/cli-plugins/api.mdx +4 -5
- package/docs/en/plugin/cli-plugins/migration.mdx +33 -48
- package/docs/en/plugin/introduction.mdx +39 -27
- package/docs/en/plugin/official/_meta.json +0 -5
- package/docs/en/plugin/official/cli-plugins/_meta.json +1 -1
- package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
- package/docs/en/plugin/official/cli-plugins.mdx +0 -2
- package/docs/en/plugin/plugin-system.mdx +68 -61
- package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
- package/docs/en/plugin/runtime-plugins/migration.mdx +29 -20
- package/docs/en/tutorials/_meta.json +0 -10
- package/docs/en/tutorials/examples/csr-auth.mdx +1 -1
- package/docs/en/tutorials/foundations/introduction.mdx +9 -25
- package/docs/zh/{_meta.json → _nav.json} +10 -6
- package/docs/zh/apis/app/commands.mdx +2 -3
- package/docs/zh/apis/app/hooks/src/entry.mdx +1 -5
- package/docs/zh/apis/app/hooks/src/entry.server.mdx +4 -5
- package/docs/zh/apis/app/hooks/src/routes.mdx +2 -2
- package/docs/zh/apis/app/runtime/_meta.json +0 -18
- package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +2 -2
- package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +3 -2
- package/docs/zh/community/blog/v2-release-note.mdx +0 -2
- package/docs/zh/community/contributing-guide.mdx +10 -12
- package/docs/zh/components/auto-upgrade.mdx +0 -0
- package/docs/zh/components/bff-upload.mdx +8 -5
- package/docs/zh/components/build-output.mdx +45 -0
- package/docs/zh/components/debug-app.mdx +1 -1
- package/docs/zh/components/enable-bff-caution.mdx +1 -1
- package/docs/zh/components/enable-bff.mdx +37 -8
- package/docs/zh/components/enable-ssg.mdx +47 -0
- package/docs/zh/components/entry-scan-logic.mdx +7 -0
- package/docs/zh/components/init-app.mdx +40 -18
- package/docs/zh/components/international/install-command.mdx +8 -0
- package/docs/zh/components/international/introduce.mdx +2 -0
- package/docs/zh/components/international/platform-support.mdx +0 -0
- package/docs/zh/components/module-federation.mdx +4 -4
- package/docs/zh/components/new-entry-tooltip.mdx +0 -0
- package/docs/zh/components/nodeVersion.mdx +3 -7
- package/docs/zh/components/prerequisites.mdx +1 -1
- package/docs/zh/components/self-route-example.mdx +3 -3
- package/docs/zh/components/ua-polyfill.mdx +11 -6
- package/docs/zh/components/upgrade-browserslist.mdx +0 -0
- package/docs/zh/configure/_meta.json +7 -8
- package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
- package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
- package/docs/zh/configure/app/dev/server.mdx +104 -0
- package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
- package/docs/zh/configure/app/html/app-icon.mdx +1 -23
- package/docs/zh/configure/app/output/inline-scripts.mdx +1 -1
- package/docs/zh/configure/app/output/override-browserslist.mdx +3 -3
- package/docs/zh/configure/app/output/source-map.mdx +10 -3
- package/docs/zh/configure/app/output/ssg.mdx +13 -45
- package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
- package/docs/zh/configure/app/performance/build-cache.mdx +0 -4
- package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
- package/docs/zh/configure/app/resolve/alias.mdx +13 -0
- package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
- package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
- package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
- package/docs/zh/configure/app/runtime/0-intro.mdx +2 -53
- package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
- package/docs/zh/configure/app/server/port.mdx +2 -21
- package/docs/zh/configure/app/server/rsc.mdx +30 -0
- package/docs/zh/configure/app/server/ssr.mdx +21 -11
- package/docs/zh/configure/app/source/decorators.mdx +4 -4
- package/docs/zh/configure/app/source/entries.mdx +0 -2
- package/docs/zh/configure/app/source/main-entry-name.mdx +4 -4
- package/docs/zh/configure/app/source/transform-import.mdx +1 -59
- package/docs/zh/configure/app/tools/bundler-chain.mdx +6 -6
- package/docs/zh/configure/app/tools/css-extract.mdx +1 -1
- package/docs/zh/configure/app/tools/dev-server.mdx +14 -248
- package/docs/zh/configure/app/tools/html-plugin.mdx +3 -2
- package/docs/zh/configure/app/tools/lightningcss-loader.mdx +0 -1
- package/docs/zh/configure/app/tools/swc.mdx +1 -43
- package/docs/zh/configure/app/usage.mdx +8 -18
- package/docs/zh/guides/_meta.json +5 -1
- package/docs/zh/guides/advanced-features/_meta.json +6 -1
- package/docs/zh/guides/advanced-features/bff/cross-project.mdx +8 -16
- package/docs/zh/guides/advanced-features/bff/extend-server.mdx +25 -8
- package/docs/zh/guides/advanced-features/bff/frameworks.mdx +1 -1
- package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
- package/docs/zh/guides/advanced-features/bff/sdk.mdx +4 -4
- package/docs/zh/guides/advanced-features/build-performance.mdx +23 -30
- package/docs/zh/guides/advanced-features/compatibility.mdx +44 -0
- package/docs/zh/guides/advanced-features/international/_meta.json +11 -0
- package/docs/zh/guides/advanced-features/international/advanced.mdx +193 -0
- package/docs/zh/guides/advanced-features/international/api.mdx +400 -0
- package/docs/zh/guides/advanced-features/international/basic.mdx +416 -0
- package/docs/zh/guides/advanced-features/international/best-practices.mdx +135 -0
- package/docs/zh/guides/advanced-features/international/configuration.mdx +441 -0
- package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
- package/docs/zh/guides/advanced-features/international/quick-start.mdx +149 -0
- package/docs/zh/guides/advanced-features/international/resource-loading.mdx +417 -0
- package/docs/zh/guides/advanced-features/international/routing.mdx +212 -0
- package/docs/zh/guides/advanced-features/international.mdx +36 -0
- package/docs/zh/guides/advanced-features/low-level.mdx +21 -16
- package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +3 -3
- package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
- package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
- package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
- package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
- package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +63 -35
- package/docs/zh/guides/advanced-features/web-server.mdx +79 -300
- package/docs/zh/guides/basic-features/_meta.json +6 -1
- package/docs/zh/guides/basic-features/css/css-in-js.mdx +40 -5
- package/docs/zh/guides/basic-features/css/css-modules.mdx +6 -17
- package/docs/zh/guides/basic-features/css/css.mdx +2 -2
- package/docs/zh/guides/basic-features/css/tailwindcss.mdx +6 -90
- package/docs/zh/guides/basic-features/data/data-cache.mdx +8 -5
- package/docs/zh/guides/basic-features/data/data-fetch.mdx +6 -5
- package/docs/zh/guides/basic-features/data/data-write.mdx +4 -4
- package/docs/zh/guides/basic-features/debug/mock.mdx +4 -1
- package/docs/zh/guides/basic-features/debug/proxy.mdx +0 -8
- package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +6 -6
- package/docs/zh/guides/basic-features/deploy.mdx +24 -20
- package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
- package/docs/zh/guides/basic-features/html.mdx +2 -2
- package/docs/zh/guides/basic-features/output-files.mdx +3 -3
- package/docs/zh/guides/basic-features/render/_meta.json +1 -1
- package/docs/zh/guides/basic-features/render/before-render.mdx +17 -24
- package/docs/zh/guides/basic-features/render/overview.mdx +52 -0
- package/docs/zh/guides/basic-features/render/rsc.mdx +413 -0
- package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
- package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -5
- package/docs/zh/guides/basic-features/render/ssr.mdx +34 -31
- package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +34 -14
- package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
- package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
- package/docs/zh/guides/basic-features/{routes.mdx → routes/routes.mdx} +8 -114
- package/docs/zh/guides/basic-features/static-assets/json-files.mdx +21 -3
- package/docs/zh/guides/basic-features/static-assets.mdx +2 -2
- package/docs/zh/guides/basic-features/testing/cypress.mdx +5 -5
- package/docs/zh/guides/basic-features/testing/jest.mdx +12 -12
- package/docs/zh/guides/concept/builder.mdx +24 -9
- package/docs/zh/guides/concept/entries.mdx +95 -92
- package/docs/zh/guides/get-started/glossary.mdx +0 -18
- package/docs/zh/guides/get-started/introduction.mdx +1 -5
- package/docs/zh/guides/get-started/quick-start.mdx +5 -72
- package/docs/zh/guides/get-started/tech-stack.mdx +8 -26
- package/docs/zh/guides/get-started/upgrade.mdx +30 -23
- package/docs/zh/guides/topic-detail/_meta.json +0 -12
- package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -1
- package/docs/zh/guides/topic-detail/module-federation/application.mdx +18 -16
- package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
- package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +4 -4
- package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +51 -5
- package/docs/zh/guides/topic-detail/module-federation/usage.mdx +11 -32
- package/docs/zh/guides/troubleshooting/builder.mdx +3 -84
- package/docs/zh/guides/troubleshooting/cli.mdx +6 -30
- package/docs/zh/guides/troubleshooting/dependencies.mdx +23 -23
- package/docs/zh/guides/upgrade/_meta.json +1 -0
- package/docs/zh/guides/upgrade/config.mdx +809 -0
- package/docs/zh/guides/upgrade/entry.mdx +463 -0
- package/docs/zh/guides/upgrade/other.md +90 -0
- package/docs/zh/guides/upgrade/overview.mdx +36 -0
- package/docs/zh/guides/upgrade/tailwindcss.mdx +130 -0
- package/docs/zh/guides/upgrade/web-server.md +93 -0
- package/docs/zh/plugin/cli-plugins/api.mdx +4 -5
- package/docs/zh/plugin/cli-plugins/migration.mdx +30 -45
- package/docs/zh/plugin/introduction.mdx +36 -24
- package/docs/zh/plugin/official/_meta.json +0 -5
- package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -1
- package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
- package/docs/zh/plugin/official/cli-plugins.mdx +0 -2
- package/docs/zh/plugin/plugin-system.mdx +45 -42
- package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
- package/docs/zh/plugin/runtime-plugins/migration.mdx +26 -17
- package/docs/zh/tutorials/_meta.json +0 -10
- package/docs/zh/tutorials/examples/csr-auth.mdx +1 -1
- package/docs/zh/tutorials/foundations/introduction.mdx +8 -25
- package/i18n.json +0 -16
- package/package.json +12 -12
- package/rspress.config.ts +5 -8
- package/src/components/ContentCard/index.module.scss +11 -7
- package/src/components/ContentCard/index.tsx +1 -1
- package/src/components/FeatureLayout/index.module.css +1 -1
- package/src/components/Footer/index.tsx +2 -14
- package/src/components/Footer/styles.module.scss +5 -5
- package/src/components/ListCard/index.tsx +1 -1
- package/src/components/RandomMemberList/index.tsx +1 -1
- package/src/components/RsbuildLink/index.tsx +1 -1
- package/src/components/Sandpack/index.tsx +1 -1
- package/src/custom.scss +15 -0
- package/src/i18n/enUS.ts +2 -4
- package/src/i18n/index.ts +1 -1
- package/src/i18n/zhCN.ts +2 -4
- package/src/index.ts +2 -1
- package/src/pages/index.module.scss +59 -41
- package/src/pages/index.tsx +9 -24
- package/docs/en/apis/app/hooks/server/index_.mdx +0 -10
- package/docs/en/apis/app/hooks/src/index_.mdx +0 -38
- package/docs/en/apis/app/hooks/src/stories.mdx +0 -16
- package/docs/en/apis/app/runtime/app/define-config.mdx +0 -67
- package/docs/en/apis/app/runtime/core/bootstrap.mdx +0 -74
- package/docs/en/apis/app/runtime/core/create-app.mdx +0 -49
- package/docs/en/apis/app/runtime/core/use-loader.mdx +0 -89
- package/docs/en/apis/app/runtime/core/use-module-apps.mdx +0 -140
- package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +0 -116
- package/docs/en/apis/app/runtime/model/Provider.mdx +0 -36
- package/docs/en/apis/app/runtime/model/auto-actions.mdx +0 -122
- package/docs/en/apis/app/runtime/model/connect.mdx +0 -146
- package/docs/en/apis/app/runtime/model/create-app.mdx +0 -75
- package/docs/en/apis/app/runtime/model/create-store.mdx +0 -61
- package/docs/en/apis/app/runtime/model/handle-effect.mdx +0 -107
- package/docs/en/apis/app/runtime/model/model_.mdx +0 -198
- package/docs/en/apis/app/runtime/model/use-local-model.mdx +0 -29
- package/docs/en/apis/app/runtime/model/use-model.mdx +0 -89
- package/docs/en/apis/app/runtime/model/use-static-model.mdx +0 -51
- package/docs/en/apis/app/runtime/model/use-store.mdx +0 -26
- package/docs/en/apis/app/runtime/ssr/pre-render.mdx +0 -96
- package/docs/en/apis/app/runtime/web-server/hook.mdx +0 -134
- package/docs/en/apis/app/runtime/web-server/middleware.mdx +0 -113
- package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +0 -167
- package/docs/en/components/bff-proxy-path-rewrite.mdx +0 -16
- package/docs/en/components/bff-proxy-principle.mdx +0 -1
- package/docs/en/components/builder.mdx +0 -3
- package/docs/en/components/create-bff-api-app.mdx +0 -25
- package/docs/en/components/custom-router-micro-frontend.mdx +0 -40
- package/docs/en/components/enable-micro-frontend.mdx +0 -30
- package/docs/en/components/enableSwc.mdx +0 -17
- package/docs/en/components/global-proxy-config.mdx +0 -85
- package/docs/en/components/global-proxy.mdx +0 -29
- package/docs/en/components/package-manager.mdx +0 -11
- package/docs/en/components/reduck-notify.mdx +0 -27
- package/docs/en/components/reduck-tip.mdx +0 -8
- package/docs/en/configure/app/auto-load-plugin.mdx +0 -66
- package/docs/en/configure/app/deploy/microFrontend.mdx +0 -53
- package/docs/en/configure/app/dev/port.mdx +0 -25
- package/docs/en/configure/app/dev/proxy.mdx +0 -9
- package/docs/en/configure/app/experiments/lazy-compilation.mdx +0 -106
- package/docs/en/configure/app/html/disable-html-folder.mdx +0 -46
- package/docs/en/configure/app/html/favicon-by-entries.mdx +0 -36
- package/docs/en/configure/app/html/inject-by-entries.mdx +0 -36
- package/docs/en/configure/app/html/meta-by-entries.mdx +0 -48
- package/docs/en/configure/app/html/tags-by-entries.mdx +0 -44
- package/docs/en/configure/app/html/template-by-entries.mdx +0 -33
- package/docs/en/configure/app/html/template-parameters-by-entries.mdx +0 -35
- package/docs/en/configure/app/html/title-by-entries.mdx +0 -37
- package/docs/en/configure/app/output/css-module-local-ident-name.mdx +0 -21
- package/docs/en/configure/app/output/disable-css-extract.mdx +0 -16
- package/docs/en/configure/app/output/disable-filename-hash.mdx +0 -16
- package/docs/en/configure/app/output/disable-minimize.mdx +0 -14
- package/docs/en/configure/app/output/disable-node-polyfill.mdx +0 -22
- package/docs/en/configure/app/output/disable-source-map.mdx +0 -31
- package/docs/en/configure/app/output/enable-asset-fallback.mdx +0 -36
- package/docs/en/configure/app/output/enable-inline-scripts.mdx +0 -22
- package/docs/en/configure/app/output/enable-inline-styles.mdx +0 -22
- package/docs/en/configure/app/output/enable-latest-decorators.mdx +0 -14
- package/docs/en/configure/app/performance/transform-lodash.mdx +0 -52
- package/docs/en/configure/app/runtime/master-app.mdx +0 -36
- package/docs/en/configure/app/runtime/state.mdx +0 -52
- package/docs/en/configure/app/source/disable-entry-dirs.mdx +0 -38
- package/docs/en/configure/app/source/enable-custom-entry.mdx +0 -68
- package/docs/en/configure/app/source/module-scopes.mdx +0 -72
- package/docs/en/configure/app/source/resolve-extension-prefix.mdx +0 -55
- package/docs/en/configure/app/source/resolve-main-fields.mdx +0 -46
- package/docs/en/configure/app/tools/esbuild.mdx +0 -44
- package/docs/en/configure/app/tools/pug.mdx +0 -54
- package/docs/en/configure/app/tools/styled-components.mdx +0 -55
- package/docs/en/configure/app/tools/tailwindcss.mdx +0 -98
- package/docs/en/configure/app/tools/terser.mdx +0 -58
- package/docs/en/configure/app/tools/ts-loader.mdx +0 -76
- package/docs/en/configure/app/tools/webpack-chain.mdx +0 -249
- package/docs/en/configure/app/tools/webpack.mdx +0 -305
- package/docs/en/guides/deprecated.md +0 -17
- package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -27
- package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +0 -290
- package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -298
- package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
- package/docs/en/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -26
- package/docs/en/guides/topic-detail/model/_meta.json +0 -14
- package/docs/en/guides/topic-detail/model/auto-actions.mdx +0 -85
- package/docs/en/guides/topic-detail/model/computed-state.mdx +0 -148
- package/docs/en/guides/topic-detail/model/define-model.mdx +0 -62
- package/docs/en/guides/topic-detail/model/faq.mdx +0 -35
- package/docs/en/guides/topic-detail/model/manage-effects.mdx +0 -247
- package/docs/en/guides/topic-detail/model/model-communicate.mdx +0 -217
- package/docs/en/guides/topic-detail/model/performance.mdx +0 -167
- package/docs/en/guides/topic-detail/model/quick-start.mdx +0 -117
- package/docs/en/guides/topic-detail/model/redux-integration.mdx +0 -20
- package/docs/en/guides/topic-detail/model/typescript-best-practice.mdx +0 -68
- package/docs/en/guides/topic-detail/model/use-model.mdx +0 -243
- package/docs/en/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
- package/docs/en/plugin/official/cli-plugins/plugin-swc.mdx +0 -363
- package/docs/en/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
- package/docs/en/plugin/official/rsbuild-plugins/_meta.json +0 -1
- package/docs/en/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -205
- package/docs/en/plugin/official/rsbuild-plugins.mdx +0 -3
- package/docs/en/tutorials/first-app/c01-start.mdx +0 -99
- package/docs/en/tutorials/first-app/c02-component.mdx +0 -60
- package/docs/en/tutorials/first-app/c03-css.mdx +0 -324
- package/docs/en/tutorials/first-app/c04-routes.mdx +0 -172
- package/docs/en/tutorials/first-app/c05-loader.mdx +0 -87
- package/docs/en/tutorials/first-app/c06-model.mdx +0 -278
- package/docs/en/tutorials/first-app/c07-container.mdx +0 -281
- package/docs/en/tutorials/first-app/c08-entries.mdx +0 -135
- package/docs/zh/apis/app/hooks/server/index_.mdx +0 -10
- package/docs/zh/apis/app/hooks/src/index_.mdx +0 -39
- package/docs/zh/apis/app/hooks/src/stories.mdx +0 -16
- package/docs/zh/apis/app/runtime/app/define-config.mdx +0 -67
- package/docs/zh/apis/app/runtime/core/bootstrap.mdx +0 -74
- package/docs/zh/apis/app/runtime/core/create-app.mdx +0 -35
- package/docs/zh/apis/app/runtime/core/use-loader.mdx +0 -89
- package/docs/zh/apis/app/runtime/core/use-module-apps.mdx +0 -179
- package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +0 -116
- package/docs/zh/apis/app/runtime/model/Provider.mdx +0 -36
- package/docs/zh/apis/app/runtime/model/auto-actions.mdx +0 -122
- package/docs/zh/apis/app/runtime/model/connect.mdx +0 -143
- package/docs/zh/apis/app/runtime/model/create-app.mdx +0 -75
- package/docs/zh/apis/app/runtime/model/create-store.mdx +0 -61
- package/docs/zh/apis/app/runtime/model/handle-effect.mdx +0 -108
- package/docs/zh/apis/app/runtime/model/model_.mdx +0 -201
- package/docs/zh/apis/app/runtime/model/use-local-model.mdx +0 -29
- package/docs/zh/apis/app/runtime/model/use-model.mdx +0 -89
- package/docs/zh/apis/app/runtime/model/use-static-model.mdx +0 -49
- package/docs/zh/apis/app/runtime/model/use-store.mdx +0 -26
- package/docs/zh/apis/app/runtime/ssr/pre-render.mdx +0 -96
- package/docs/zh/apis/app/runtime/web-server/hook.mdx +0 -136
- package/docs/zh/apis/app/runtime/web-server/middleware.mdx +0 -114
- package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +0 -165
- package/docs/zh/components/bff-proxy-path-rewrite.mdx +0 -16
- package/docs/zh/components/bff-proxy-principle.mdx +0 -1
- package/docs/zh/components/builder.mdx +0 -3
- package/docs/zh/components/create-bff-api-app.mdx +0 -25
- package/docs/zh/components/custom-router-micro-frontend.mdx +0 -40
- package/docs/zh/components/enable-micro-frontend.mdx +0 -30
- package/docs/zh/components/enableSwc.mdx +0 -17
- package/docs/zh/components/global-proxy-config.mdx +0 -85
- package/docs/zh/components/global-proxy.mdx +0 -29
- package/docs/zh/components/package-manager.mdx +0 -11
- package/docs/zh/components/reduck-notify.mdx +0 -27
- package/docs/zh/components/reduck-tip.mdx +0 -8
- package/docs/zh/configure/app/auto-load-plugin.mdx +0 -66
- package/docs/zh/configure/app/deploy/microFrontend.mdx +0 -55
- package/docs/zh/configure/app/dev/port.mdx +0 -25
- package/docs/zh/configure/app/dev/proxy.mdx +0 -9
- package/docs/zh/configure/app/experiments/lazy-compilation.mdx +0 -105
- package/docs/zh/configure/app/html/disable-html-folder.mdx +0 -45
- package/docs/zh/configure/app/html/favicon-by-entries.mdx +0 -37
- package/docs/zh/configure/app/html/inject-by-entries.mdx +0 -37
- package/docs/zh/configure/app/html/meta-by-entries.mdx +0 -48
- package/docs/zh/configure/app/html/tags-by-entries.mdx +0 -44
- package/docs/zh/configure/app/html/template-by-entries.mdx +0 -33
- package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +0 -36
- package/docs/zh/configure/app/html/title-by-entries.mdx +0 -37
- package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +0 -21
- package/docs/zh/configure/app/output/disable-css-extract.mdx +0 -16
- package/docs/zh/configure/app/output/disable-filename-hash.mdx +0 -16
- package/docs/zh/configure/app/output/disable-minimize.mdx +0 -14
- package/docs/zh/configure/app/output/disable-node-polyfill.mdx +0 -22
- package/docs/zh/configure/app/output/disable-source-map.mdx +0 -31
- package/docs/zh/configure/app/output/enable-asset-fallback.mdx +0 -36
- package/docs/zh/configure/app/output/enable-inline-scripts.mdx +0 -22
- package/docs/zh/configure/app/output/enable-inline-styles.mdx +0 -22
- package/docs/zh/configure/app/output/enable-latest-decorators.mdx +0 -14
- package/docs/zh/configure/app/performance/transform-lodash.mdx +0 -52
- package/docs/zh/configure/app/runtime/master-app.mdx +0 -38
- package/docs/zh/configure/app/runtime/state.mdx +0 -52
- package/docs/zh/configure/app/source/disable-entry-dirs.mdx +0 -38
- package/docs/zh/configure/app/source/enable-custom-entry.mdx +0 -67
- package/docs/zh/configure/app/source/module-scopes.mdx +0 -72
- package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +0 -57
- package/docs/zh/configure/app/source/resolve-main-fields.mdx +0 -46
- package/docs/zh/configure/app/tools/esbuild.mdx +0 -44
- package/docs/zh/configure/app/tools/pug.mdx +0 -54
- package/docs/zh/configure/app/tools/styled-components.mdx +0 -54
- package/docs/zh/configure/app/tools/tailwindcss.mdx +0 -98
- package/docs/zh/configure/app/tools/terser.mdx +0 -58
- package/docs/zh/configure/app/tools/ts-loader.mdx +0 -76
- package/docs/zh/configure/app/tools/webpack-chain.mdx +0 -253
- package/docs/zh/configure/app/tools/webpack.mdx +0 -305
- package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -154
- package/docs/zh/guides/deprecated.md +0 -19
- package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -26
- package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +0 -332
- package/docs/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -296
- package/docs/zh/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
- package/docs/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -27
- package/docs/zh/guides/topic-detail/model/_meta.json +0 -14
- package/docs/zh/guides/topic-detail/model/auto-actions.mdx +0 -88
- package/docs/zh/guides/topic-detail/model/computed-state.mdx +0 -147
- package/docs/zh/guides/topic-detail/model/define-model.mdx +0 -63
- package/docs/zh/guides/topic-detail/model/faq.mdx +0 -36
- package/docs/zh/guides/topic-detail/model/manage-effects.mdx +0 -256
- package/docs/zh/guides/topic-detail/model/model-communicate.mdx +0 -217
- package/docs/zh/guides/topic-detail/model/performance.mdx +0 -167
- package/docs/zh/guides/topic-detail/model/quick-start.mdx +0 -117
- package/docs/zh/guides/topic-detail/model/redux-integration.mdx +0 -20
- package/docs/zh/guides/topic-detail/model/typescript-best-practice.mdx +0 -67
- package/docs/zh/guides/topic-detail/model/use-model.mdx +0 -248
- package/docs/zh/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
- package/docs/zh/plugin/official/cli-plugins/plugin-swc.mdx +0 -351
- package/docs/zh/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
- package/docs/zh/plugin/official/rsbuild-plugins/_meta.json +0 -1
- package/docs/zh/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -201
- package/docs/zh/plugin/official/rsbuild-plugins.mdx +0 -3
- package/docs/zh/tutorials/first-app/c01-start.mdx +0 -99
- package/docs/zh/tutorials/first-app/c02-component.mdx +0 -60
- package/docs/zh/tutorials/first-app/c03-css.mdx +0 -323
- package/docs/zh/tutorials/first-app/c04-routes.mdx +0 -172
- package/docs/zh/tutorials/first-app/c05-loader.mdx +0 -89
- package/docs/zh/tutorials/first-app/c06-model.mdx +0 -274
- package/docs/zh/tutorials/first-app/c07-container.mdx +0 -281
- package/docs/zh/tutorials/first-app/c08-entries.mdx +0 -135
- /package/docs/en/components/{reduck-migration.mdx → auto-upgrade.mdx} +0 -0
- /package/docs/{zh/components/reduck-migration.mdx → en/components/international/platform-support.mdx} +0 -0
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_position: 3
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Esbuild Plugin
|
|
6
|
-
|
|
7
|
-
:::warning
|
|
8
|
-
**The esbuild feature in the current document is no longer maintained**, we recommend using the Rspack + SWC solution, because Rspack + SWC provide better build performance, richer features, and better compatibility.
|
|
9
|
-
|
|
10
|
-
Please refer to [「Use Rspack」](guides/advanced-features/rspack-start) for more information.
|
|
11
|
-
|
|
12
|
-
:::
|
|
13
|
-
|
|
14
|
-
import Esbuild from '@site-docs-en/components/esbuild.mdx';
|
|
15
|
-
|
|
16
|
-
<Esbuild />
|
|
17
|
-
|
|
18
|
-
## Quick Start
|
|
19
|
-
|
|
20
|
-
### Used in Modern.js framework
|
|
21
|
-
|
|
22
|
-
The Modern.js framework integrates the esbuild plugin by default, so you don't need to manually install and register the plugin, just use the [tools.esbuild](https://modernjs.dev/en/configure/app/tools/esbuild.html) configuration:
|
|
23
|
-
|
|
24
|
-
```js
|
|
25
|
-
export default defineConfig({
|
|
26
|
-
tools: {
|
|
27
|
-
esbuild: {
|
|
28
|
-
loader: {
|
|
29
|
-
target: 'chrome61',
|
|
30
|
-
},
|
|
31
|
-
minimize: {
|
|
32
|
-
target: 'chrome61',
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Config
|
|
40
|
-
|
|
41
|
-
The plugin will enable code transformation and minification by default. You can also customize the behavior of the plugin through configuration.
|
|
42
|
-
|
|
43
|
-
### loader
|
|
44
|
-
|
|
45
|
-
- **Type:**
|
|
46
|
-
|
|
47
|
-
```ts
|
|
48
|
-
type LoaderOptions = EsbuildLoaderOptions | false | undefined;
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
- **Default:**
|
|
52
|
-
|
|
53
|
-
```ts
|
|
54
|
-
const defaultOptions = {
|
|
55
|
-
target: 'es2015',
|
|
56
|
-
charset: builderConfig.output.charset,
|
|
57
|
-
};
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
This config is used to enable JavaScript/TypeScript transformation, which will replace babel-loader and ts-loader with esbuild-loader.
|
|
61
|
-
|
|
62
|
-
If you want to modify the options, you can check the [esbuild-loader documentation](https://github.com/privatenumber/esbuild-loader#loader).
|
|
63
|
-
|
|
64
|
-
#### Set JSX Format
|
|
65
|
-
|
|
66
|
-
When using esbuild for transformation, esbuild will read the `compilerOptions.jsx` field in `tsconfig.json` to determine which JSX syntax to use.
|
|
67
|
-
|
|
68
|
-
Therefore, you need to set the correct JSX syntax in `tsconfig.json`.
|
|
69
|
-
|
|
70
|
-
For example, React projects need to set `compilerOptions.jsx` to `react-jsx`:
|
|
71
|
-
|
|
72
|
-
```json
|
|
73
|
-
{
|
|
74
|
-
"compilerOptions": {
|
|
75
|
-
"jsx": "react-jsx"
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
#### Set the target environment
|
|
81
|
-
|
|
82
|
-
Use the `target` option to set the target environment for transformation. `target` can be set directly to the JavaScript language version, such as `es6`, `es2020`; it can also be set to several target environments, each target environment is an environment name followed by a version number, such as `['chrome58', 'edge16' ,'firefox57']`. For a detailed introduction of the `target` option, please refer to [esbuild - target](https://esbuild.github.io/api/#target).
|
|
83
|
-
|
|
84
|
-
target supports setting to the following environments:
|
|
85
|
-
|
|
86
|
-
- chrome
|
|
87
|
-
- edge
|
|
88
|
-
- firefox
|
|
89
|
-
- ie
|
|
90
|
-
- ios
|
|
91
|
-
- node
|
|
92
|
-
- opera
|
|
93
|
-
- safari
|
|
94
|
-
|
|
95
|
-
```ts
|
|
96
|
-
builderPluginEsbuild({
|
|
97
|
-
loader: {
|
|
98
|
-
target: 'chrome61',
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
#### Disable transformation
|
|
104
|
-
|
|
105
|
-
Set `loader` to `false` to disable esbuild transformation, and Modern.js will continue to use Babel to transform the code.
|
|
106
|
-
|
|
107
|
-
```ts
|
|
108
|
-
builderPluginEsbuild({
|
|
109
|
-
loader: false,
|
|
110
|
-
});
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### minimize
|
|
114
|
-
|
|
115
|
-
- **Type:**
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
type MinimizeOptions = EsbuildMinifyOptions | false | undefined;
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
- **Default:**
|
|
122
|
-
|
|
123
|
-
```ts
|
|
124
|
-
const defaultOptions = {
|
|
125
|
-
css: true,
|
|
126
|
-
target: 'es2015',
|
|
127
|
-
format: builderTarget === 'web' ? 'iife' : undefined,
|
|
128
|
-
};
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
This option is used to enable minification for JavaScript and CSS.
|
|
132
|
-
|
|
133
|
-
If you want to modify the options, you can check the [esbuild-loader documentation](https://github.com/privatenumber/esbuild-loader#minifyplugin).
|
|
134
|
-
|
|
135
|
-
#### Set the target environment
|
|
136
|
-
|
|
137
|
-
Use the `target` option to set the target environment for minification.
|
|
138
|
-
|
|
139
|
-
```ts
|
|
140
|
-
builderPluginEsbuild({
|
|
141
|
-
minimize: {
|
|
142
|
-
target: 'chrome61',
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
#### Disable minification
|
|
148
|
-
|
|
149
|
-
Set `minimize` to `false` to disable esbuild minification, and Modern.js will continue to use Terser to minify the code.
|
|
150
|
-
|
|
151
|
-
```ts
|
|
152
|
-
builderPluginEsbuild({
|
|
153
|
-
minimize: false,
|
|
154
|
-
});
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Limitations
|
|
158
|
-
|
|
159
|
-
Although esbuild can significantly improve the build performance of existing webpack projects, it still has certain limitations that require special attention.
|
|
160
|
-
|
|
161
|
-
### Compatibility
|
|
162
|
-
|
|
163
|
-
As a compiler (i.e. `loader` capability), esbuild usually supports at least ES2015 (that is, ES6) syntax, and does not have the ability to automatically inject Polyfill.. If the production environment needs to downgrade to ES5 and below syntax, it is recommended to use SWC compilation.
|
|
164
|
-
|
|
165
|
-
You can specify the target syntax version by following config:
|
|
166
|
-
|
|
167
|
-
```ts
|
|
168
|
-
builderPluginEsbuild({
|
|
169
|
-
loader: {
|
|
170
|
-
target: 'es2015',
|
|
171
|
-
},
|
|
172
|
-
});
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
As a code minify tool (i.e. `minimize` capability), esbuild can minify the code in production environment, and usually supports ES2015 syntax at least.
|
|
176
|
-
|
|
177
|
-
If you set the compressed `target` to `es5`, you need to ensure that all codes have been compiled to ES5 codes, otherwise it will cause esbuild compilation error: `Transforming 'xxx' to the configured target environment ("es5") is not supported yet `.
|
|
178
|
-
|
|
179
|
-
Therefore, for projects that need to be compatible with ES5 and below syntax in the production environment, please be careful to enable the minimize capability, and it is recommended to use SWC compression.
|
|
180
|
-
|
|
181
|
-
You can specify the target syntax version by following config:
|
|
182
|
-
|
|
183
|
-
```js
|
|
184
|
-
builderPluginEsbuild({
|
|
185
|
-
minimize: {
|
|
186
|
-
target: 'es2015',
|
|
187
|
-
},
|
|
188
|
-
});
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
:::danger Caution
|
|
192
|
-
Projects that need to be compatible with ES5 and below syntax in the production environment need to be careful to turn on the minimize config.
|
|
193
|
-
:::
|
|
194
|
-
|
|
195
|
-
### Not support Babel plugins
|
|
196
|
-
|
|
197
|
-
As a compiler, the syntax transformation function of the original Babel plugins such as `babel-plugin-import` is not available after esbuild is turned on. And since the bottom layer of the plugin uses esbuild's `Transform API`, it does not support esbuild plugins to customize the compilation process.
|
|
198
|
-
|
|
199
|
-
If you have requirements related to Babel plugins such as `babel-plugin-import`, you can use the SWC plugin.
|
|
200
|
-
|
|
201
|
-
### Bundle Size
|
|
202
|
-
|
|
203
|
-
Although the compression speed of esbuild is faster, the compression ratio of esbuild is lower than that of terser, so the bundle size will increase, please use it according to the scenes. Generally speaking, esbuild is more suitable for scenes that are not sensitive to bundle size.
|
|
204
|
-
|
|
205
|
-
You can refer to [minification-benchmarks](https://github.com/privatenumber/minification-benchmarks) for a detailed comparison between minimizers.
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Create Project
|
|
3
|
-
---
|
|
4
|
-
# Create Project
|
|
5
|
-
|
|
6
|
-
Starting from this chapter, we will enter the practical tutorial section. In the practical tutorial, we will start with environment preparation, starting from simple to complex, building a real project step by step.
|
|
7
|
-
|
|
8
|
-
## Environment preparation
|
|
9
|
-
|
|
10
|
-
import Prerequisites from "@site-docs-en/components/prerequisites"
|
|
11
|
-
|
|
12
|
-
<Prerequisites />
|
|
13
|
-
|
|
14
|
-
## Initialization project
|
|
15
|
-
|
|
16
|
-
We create a new directory and initialize the project via the command line tool:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
mkdir myapp && cd myapp
|
|
20
|
-
npx @modern-js/create@latest
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
import InitApp from "@site-docs-en/components/init-app"
|
|
24
|
-
|
|
25
|
-
<InitApp />
|
|
26
|
-
|
|
27
|
-
## Debug Project
|
|
28
|
-
|
|
29
|
-
import DebugApp from "@site-docs-en/components/debug-app"
|
|
30
|
-
|
|
31
|
-
<DebugApp />
|
|
32
|
-
|
|
33
|
-
## Modify the code
|
|
34
|
-
|
|
35
|
-
We delete the original sample code and replace it with a simple point of contact list:
|
|
36
|
-
|
|
37
|
-
```tsx title="src/routes/page.tsx"
|
|
38
|
-
const getAvatar = (users: Array<{ name: string; email: string }>) =>
|
|
39
|
-
users.map(user => ({
|
|
40
|
-
...user,
|
|
41
|
-
avatar: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${user.name}`,
|
|
42
|
-
}));
|
|
43
|
-
|
|
44
|
-
const mockData = getAvatar([
|
|
45
|
-
{ name: 'Thomas', email: 'w.kccip@bllmfbgv.dm' },
|
|
46
|
-
{ name: 'Chow', email: 'f.lfqljnlk@ywoefljhc.af' },
|
|
47
|
-
{ name: 'Bradley', email: 'd.wfovsqyo@gpkcjwjgb.fr' },
|
|
48
|
-
{ name: 'Davis', email: '"t.kqkoj@utlkwnpwk.nu' },
|
|
49
|
-
]);
|
|
50
|
-
|
|
51
|
-
function App() {
|
|
52
|
-
return (
|
|
53
|
-
<ul>
|
|
54
|
-
{mockData.map(({ name, avatar, email }) => (
|
|
55
|
-
<li key={name}>
|
|
56
|
-
<img src={avatar} width={60} height={60} /> ---
|
|
57
|
-
<span>{name}</span> ---
|
|
58
|
-
<span>{email}</span>
|
|
59
|
-
</li>
|
|
60
|
-
))}
|
|
61
|
-
</ul>
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export default App;
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Remove redundant css files and keep the directory free of redundant files:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
rm src/routes/index.css
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Since the framework supports [HMR](https://webpack.js.org/concepts/hot-module-replacement/) by default, you can see that the content in http://localhost:8080/ is automatically updated to:
|
|
75
|
-
|
|
76
|
-

|
|
77
|
-
|
|
78
|
-
The page has no styles at the moment. The next chapter will expand on this section.
|
|
79
|
-
|
|
80
|
-
## Enable SSR
|
|
81
|
-
|
|
82
|
-
Next, we modify the `modern.config.ts` in the project to enable the SSR capability:
|
|
83
|
-
|
|
84
|
-
```ts
|
|
85
|
-
import { appTools, defineConfig } from '@modern-js/app-tools';
|
|
86
|
-
|
|
87
|
-
export default defineConfig({
|
|
88
|
-
runtime: {
|
|
89
|
-
router: true,
|
|
90
|
-
state: true,
|
|
91
|
-
},
|
|
92
|
-
server: {
|
|
93
|
-
ssr: true,
|
|
94
|
-
},
|
|
95
|
-
plugins: [appTools()],
|
|
96
|
-
});
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Re-execute `pnpm run dev` to find that the project has completed page rendering at the server level.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Add UI Components
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Add UI Components
|
|
6
|
-
|
|
7
|
-
In the previous chapter, we learned how to initialize a project and use configuration to modify the default behavior of Modern.js.
|
|
8
|
-
|
|
9
|
-
In this chapter, we continue to use the project code of the previous chapter and continue to improve the point of contact list.
|
|
10
|
-
|
|
11
|
-
In order to do better UI display and interaction, we introduce the component library [Antd](https://ant.design/index-cn) to develop, and use the `<List>` component instead of the primitive list. Add dependency first:
|
|
12
|
-
|
|
13
|
-
import { PackageManagerTabs } from '@theme';
|
|
14
|
-
|
|
15
|
-
<PackageManagerTabs command="add antd" />
|
|
16
|
-
|
|
17
|
-
Modify `src/routes/page.tsx` to import components at the top:
|
|
18
|
-
|
|
19
|
-
```ts
|
|
20
|
-
import { List } from 'antd';
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Modify the implementation of the `<App>` component:
|
|
24
|
-
|
|
25
|
-
```tsx
|
|
26
|
-
function App() {
|
|
27
|
-
return (
|
|
28
|
-
<div>
|
|
29
|
-
<List
|
|
30
|
-
dataSource={mockData}
|
|
31
|
-
renderItem={({ name, email, avatar }) => (
|
|
32
|
-
<List.Item key={name}>
|
|
33
|
-
<List.Item.Meta
|
|
34
|
-
avatar={<img alt="avatar" src={avatar} width={60} height={60} />}
|
|
35
|
-
title={name}
|
|
36
|
-
description={email}
|
|
37
|
-
/>
|
|
38
|
-
</List.Item>
|
|
39
|
-
)}
|
|
40
|
-
/>
|
|
41
|
-
</div>
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Execute `pnpm run dev` to see the running results:
|
|
47
|
-
|
|
48
|
-

|
|
49
|
-
|
|
50
|
-
You can see that the components exported by Ant Design already have complete styles.
|
|
51
|
-
|
|
52
|
-
:::info note
|
|
53
|
-
Modern.js [Automatically import CSS required by Ant Design component on demand](https://github.com/ant-design/babel-plugin-import).
|
|
54
|
-
|
|
55
|
-
:::
|
|
56
|
-
|
|
57
|
-
:::note
|
|
58
|
-
We can also use other component libraries to implement the same functionality, such as [Arco Design](https://arco.design/).
|
|
59
|
-
|
|
60
|
-
:::
|
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Add Style
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Add Style
|
|
6
|
-
|
|
7
|
-
import { Tabs, Tab as TabItem } from '@theme';
|
|
8
|
-
|
|
9
|
-
In the previous chapter, we learned how to use components from the third-party library.
|
|
10
|
-
|
|
11
|
-
In this chapter, we will learn how to implement UI components.
|
|
12
|
-
|
|
13
|
-
## JS components using CSS
|
|
14
|
-
|
|
15
|
-
First of all, we want to control the display of contact avatars by ourselves, and implement this design draft:
|
|
16
|
-
|
|
17
|
-

|
|
18
|
-
|
|
19
|
-
Hypothesis has no ready-made components to implement, so you need to write some CSS yourself. Here we use [styled-components](https://styled-components.com/) to implement similar requirements. Modern.js out of the box supports styled-components, which requires neither dependency nor configuration.
|
|
20
|
-
|
|
21
|
-
Style-components avoids many problems of traditional CSS writing through modularization. For example, writing styles directly on the style attribute of elements, the visual details of UI will also be mixed with the details of UI structure and business logic. Or classname needs to avoid global space renaming, which requires the use of naming conventions.
|
|
22
|
-
|
|
23
|
-
Modify the code at the top in `src/routes/page.tsx`:
|
|
24
|
-
|
|
25
|
-
```js
|
|
26
|
-
import styled from '@modern-js/runtime/styled';
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Add the following code:
|
|
30
|
-
|
|
31
|
-
```js
|
|
32
|
-
const Avatar = styled.img`
|
|
33
|
-
width: 50px;
|
|
34
|
-
height: 50px;
|
|
35
|
-
border: 4px solid #0ef;
|
|
36
|
-
border-radius: 50%;
|
|
37
|
-
`;
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Modify the code of `List.Item.Meta`:
|
|
41
|
-
|
|
42
|
-
```tsx
|
|
43
|
-
<List.Item.Meta
|
|
44
|
-
avatar={<Avatar src={avatar} />}
|
|
45
|
-
title={name}
|
|
46
|
-
description={email}
|
|
47
|
-
/>
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Execute `pnpm run dev` to see the expected running result:
|
|
51
|
-
|
|
52
|
-

|
|
53
|
-
|
|
54
|
-
Next we do a little refactoring. To enhance legibility and make the code easier to maintain, we can split the Avatar component. We execute the following command at the end point to create a new file:
|
|
55
|
-
|
|
56
|
-
<Tabs>
|
|
57
|
-
<TabItem value="macOS" label="macOS" default>
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
mkdir -p src/components/Avatar
|
|
61
|
-
touch src/components/Avatar/index.tsx
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
</TabItem>
|
|
65
|
-
<TabItem value="Windows" label="Windows">
|
|
66
|
-
|
|
67
|
-
```powershell
|
|
68
|
-
mkdir -p src/components/Avatar
|
|
69
|
-
ni src/components/Avatar/index.tsx
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
</TabItem>
|
|
73
|
-
</Tabs>
|
|
74
|
-
|
|
75
|
-
Delete the `<Avatar>` implementation in `src/routes/page.tsx` and change it to:
|
|
76
|
-
|
|
77
|
-
```ts
|
|
78
|
-
import Avatar from '../components/Avatar';
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
The content of `src/components/Avatar/index.tsx` is modified to:
|
|
82
|
-
|
|
83
|
-
```ts
|
|
84
|
-
import styled from '@modern-js/runtime/styled';
|
|
85
|
-
|
|
86
|
-
const Avatar = styled.img`
|
|
87
|
-
width: 50px;
|
|
88
|
-
height: 50px;
|
|
89
|
-
border: 4px solid #0ef;
|
|
90
|
-
border-radius: 50%;
|
|
91
|
-
`;
|
|
92
|
-
|
|
93
|
-
export default Avatar;
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Execute `pnpm run dev`, the result should be the same.
|
|
97
|
-
|
|
98
|
-
:::info note
|
|
99
|
-
The reason for using the directory form `Avatar/index.tsx` instead of the single-file form `Avatar.tsx` is that you can easily add sub-files inside the directory later, including dedicated resources (pictures, etc.), dedicated sub-components, CSS files, etc.
|
|
100
|
-
|
|
101
|
-
:::
|
|
102
|
-
|
|
103
|
-
## Utility
|
|
104
|
-
|
|
105
|
-
We have used the style-components implementation `<Avatar>` component, but the current UI is still unsatisfactory and lacks professionalism, such as the list item inhouse layout is a bit rough and misaligned in many places.
|
|
106
|
-
|
|
107
|
-
Now, let's implement a better `Item` component ourselves, implementing a design draft like this:
|
|
108
|
-
|
|
109
|
-

|
|
110
|
-
|
|
111
|
-
The UI to be implemented this time is more complex and has an internal structure, but on the other hand, there is no very thick bright blue border of the `<Avatar>` component such a very special UI, which is a very conventional horizontal and vertical layout, centering, font style, etc. In this case, there is actually no need to write CSS at all. There is a more efficient implementation method that complements styled-components: **Utility Class**.
|
|
112
|
-
|
|
113
|
-
Modern.js integrates the mainstream, light, general-purpose Utility Class library [Tailwind CSS](https://tailwindcss.com/).
|
|
114
|
-
|
|
115
|
-
Execute `pnpm run new` and select the following to start Tailwind CSS:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
? Please select the operation you want: Enable features
|
|
119
|
-
? Please select the feature name: Enable Tailwind CSS
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Register the Tailwind plugin in `modern.config.ts`:
|
|
123
|
-
|
|
124
|
-
```ts title="modern.config.ts"
|
|
125
|
-
import { appTools, defineConfig } from '@modern-js/app-tools';
|
|
126
|
-
import { tailwindcssPlugin } from '@modern-js/plugin-tailwindcss';
|
|
127
|
-
|
|
128
|
-
export default defineConfig({
|
|
129
|
-
runtime: {
|
|
130
|
-
router: true,
|
|
131
|
-
state: true,
|
|
132
|
-
},
|
|
133
|
-
server: {
|
|
134
|
-
ssr: true,
|
|
135
|
-
},
|
|
136
|
-
plugins: [appTools(), tailwindcssPlugin()],
|
|
137
|
-
});
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Import the Tailwind CSS css file at the top of `src/routes/page.tsx` to start a quick implementation of the professional UI:
|
|
141
|
-
|
|
142
|
-
```js
|
|
143
|
-
import 'tailwindcss/base.css';
|
|
144
|
-
import 'tailwindcss/components.css';
|
|
145
|
-
import 'tailwindcss/utilities.css';
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Create the Item component first:
|
|
149
|
-
|
|
150
|
-
<Tabs>
|
|
151
|
-
<TabItem value="macOS" label="macOS" default>
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
mkdir -p src/components/Item
|
|
155
|
-
touch src/components/Item/index.tsx
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
</TabItem>
|
|
159
|
-
<TabItem value="Windows" label="Windows">
|
|
160
|
-
|
|
161
|
-
```powershell
|
|
162
|
-
mkdir -p src/components/Item
|
|
163
|
-
ni src/components/Item/index.tsx
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
</TabItem>
|
|
167
|
-
</Tabs>
|
|
168
|
-
|
|
169
|
-
Modify `src/routes/page.tsx` to pass the `render` implementation of `List` to `Item` component:
|
|
170
|
-
|
|
171
|
-
```js
|
|
172
|
-
import { List } from 'antd';
|
|
173
|
-
import 'tailwindcss/base.css';
|
|
174
|
-
import 'tailwindcss/components.css';
|
|
175
|
-
import 'tailwindcss/utilities.css';
|
|
176
|
-
import Item from '../components/Item';
|
|
177
|
-
|
|
178
|
-
const getAvatar = (users: Array<{ name: string, email: string }>) =>
|
|
179
|
-
users.map(user => ({
|
|
180
|
-
...user,
|
|
181
|
-
avatar: `https://api.dicebear.com/7.x/pixel-art/svg?seed=${user.name}`,
|
|
182
|
-
}));
|
|
183
|
-
|
|
184
|
-
const mockData = getAvatar([
|
|
185
|
-
{ name: 'Thomas', email: 'w.kccip@bllmfbgv.dm' },
|
|
186
|
-
{ name: 'Chow', email: 'f.lfqljnlk@ywoefljhc.af' },
|
|
187
|
-
{ name: 'Bradley', email: 'd.wfovsqyo@gpkcjwjgb.fr' },
|
|
188
|
-
{ name: 'Davis', email: '"t.kqkoj@utlkwnpwk.nu' },
|
|
189
|
-
]);
|
|
190
|
-
|
|
191
|
-
function Index() {
|
|
192
|
-
return (
|
|
193
|
-
<div className="container lg mx-auto">
|
|
194
|
-
<List
|
|
195
|
-
dataSource={mockData}
|
|
196
|
-
renderItem={info => <Item key={info.name} info={info} />}
|
|
197
|
-
/>
|
|
198
|
-
</div>
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
export default Index;
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Utility Class(https://tailwindcss.com/docs/container) is used on the parent container for a quick implementation of the most basic maximum width, center, and other styles.
|
|
206
|
-
|
|
207
|
-
Next implementation `src/components/Item/index.tsx`:
|
|
208
|
-
|
|
209
|
-
```tsx
|
|
210
|
-
import Avatar from '../Avatar';
|
|
211
|
-
|
|
212
|
-
type InfoProps = {
|
|
213
|
-
avatar: string;
|
|
214
|
-
name: string;
|
|
215
|
-
email: string;
|
|
216
|
-
archived?: boolean;
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
const Item = ({ info }: { info: InfoProps }) => {
|
|
220
|
-
const { avatar, name, email, archived } = info;
|
|
221
|
-
return (
|
|
222
|
-
<div className="flex p-4 items-center border-gray-200 border-b">
|
|
223
|
-
<Avatar src={avatar} />
|
|
224
|
-
<div className="ml-4 flex-1 flex justify-between">
|
|
225
|
-
<div className="flex-1">
|
|
226
|
-
<p>{name}</p>
|
|
227
|
-
<p>{email}</p>
|
|
228
|
-
</div>
|
|
229
|
-
<button
|
|
230
|
-
type="button"
|
|
231
|
-
disabled={archived}
|
|
232
|
-
className={`bg-blue-500 text-white font-bold
|
|
233
|
-
py-2 px-4 rounded-full hover:bg-blue-700`}
|
|
234
|
-
>
|
|
235
|
-
Archive
|
|
236
|
-
</button>
|
|
237
|
-
</div>
|
|
238
|
-
</div>
|
|
239
|
-
);
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
export default Item;
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
Execute `pnpm run dev` to see the expected running result:
|
|
246
|
-
|
|
247
|
-

|
|
248
|
-
|
|
249
|
-
We only use a few Utility Classes, such as [Flex](https://tailwindcss.com/docs/display/), [Padding](https://tailwindcss.com/docs/padding/), [Margin](https://tailwindcss.com/docs/margin/), [Text](https://tailwindcss.com/docs/text-color/), [Font](https://tailwindcss.com/docs/font-weight/), [Border](https://tailwindcss.com/docs/border-width), without writing a single CSS implementation Professional UI that conforms to the design draft.
|
|
250
|
-
|
|
251
|
-
## Customized Utility Class
|
|
252
|
-
|
|
253
|
-
We can also implement the new Utility Class ourselves to facilitate reuse between codes.
|
|
254
|
-
|
|
255
|
-
Utility Class itself is also a **component-oriented** technology (using different classes on a component is equivalent to setting some attributes from the base class for this component), but the classname of Utility Class is global (because it is used on arbitrary components/elements), it is very suitable for implementation with separate CSS files.
|
|
256
|
-
|
|
257
|
-
Create a new CSS file:
|
|
258
|
-
|
|
259
|
-
<Tabs>
|
|
260
|
-
<TabItem value="macOS" label="macOS" default>
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
mkdir -p src/styles
|
|
264
|
-
touch src/styles/utils.css
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
</TabItem>
|
|
268
|
-
<TabItem value="Windows" label="Windows">
|
|
269
|
-
|
|
270
|
-
```powershell
|
|
271
|
-
mkdir -p src/styles
|
|
272
|
-
ni src/styles/utils.css
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
</TabItem>
|
|
276
|
-
</Tabs>
|
|
277
|
-
|
|
278
|
-
Import `utils.css` in `src/routes/page.tsx`:
|
|
279
|
-
|
|
280
|
-
```js
|
|
281
|
-
import '../styles/utils.css';
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
A Utility Class named `custom-text-gray` is implemented in `src/routes/styles/utils.css`.
|
|
285
|
-
|
|
286
|
-
```css
|
|
287
|
-
:root {
|
|
288
|
-
--custom-text-color: rgb(113, 128, 150);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.custom-text-gray {
|
|
292
|
-
color: var(--custom-text-color);
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
:::info note
|
|
297
|
-
Modern.js integrates with [PostCSS](/guides/basic-features/css/css) and supports modern CSS syntax features such as [custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties).
|
|
298
|
-
|
|
299
|
-
:::
|
|
300
|
-
|
|
301
|
-
Use in `src/components/Item/index.tsx`:
|
|
302
|
-
|
|
303
|
-
```js
|
|
304
|
-
<div className="ml-4 flex-1 flex justify-between">
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
Change to:
|
|
308
|
-
|
|
309
|
-
```js
|
|
310
|
-
<div className="ml-4 custom-text-gray flex-1 flex justify-between">
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
Execute `pnpm run dev`, you can see that the font color has changed:
|
|
314
|
-
|
|
315
|
-

|
|
316
|
-
|
|
317
|
-
:::info note
|
|
318
|
-
This is just to demonstrate Utility Class usage. In a real project, with Tailwind CSS, this Utility Class is of little value and should be added to the font color through the [**theme**](https://tailwindcss.com/docs/customizing-colors) of the configuration Design System.
|
|
319
|
-
|
|
320
|
-
`utils.css` can also be written as `utils.scss` or `utils.less`, Modern.js out of the box support for SCSS and Less.
|
|
321
|
-
|
|
322
|
-
However, with the support of PostCSS, modern CSS should be sufficient to meet these development needs, and the performance is also better than that of the preprocessor. It is recommended to use `.css` files first.
|
|
323
|
-
|
|
324
|
-
:::
|