@modern-js/main-doc 2.22.1 → 2.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/docs/en/apis/app/commands.mdx +5 -5
  3. package/docs/en/apis/app/runtime/core/bootstrap.mdx +5 -5
  4. package/docs/en/apis/app/runtime/core/use-loader.mdx +2 -2
  5. package/docs/en/apis/app/runtime/core/use-module-apps.mdx +2 -2
  6. package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +1 -1
  7. package/docs/en/apis/app/runtime/testing/render.mdx +1 -1
  8. package/docs/en/components/bff-proxy-path-rewrite.mdx +16 -0
  9. package/docs/en/components/bff-proxy-principle.mdx +1 -0
  10. package/docs/en/components/enable-bff-caution.mdx +3 -0
  11. package/docs/en/components/global-proxy-config.mdx +33 -13
  12. package/docs/en/configure/app/bff/enable-handle-web.mdx +5 -5
  13. package/docs/en/configure/app/bff/prefix.mdx +6 -6
  14. package/docs/en/configure/app/bff/proxy.mdx +19 -30
  15. package/docs/en/configure/app/builder-plugins.mdx +1 -1
  16. package/docs/en/configure/app/plugins.mdx +19 -19
  17. package/docs/en/configure/app/runtime/intro.mdx +28 -4
  18. package/docs/en/configure/app/runtime/master-app.mdx +1 -1
  19. package/docs/en/configure/app/runtime/router.mdx +2 -2
  20. package/docs/en/configure/app/server/base-url.mdx +4 -4
  21. package/docs/en/configure/app/server/enable-framework-ext.mdx +4 -4
  22. package/docs/en/configure/app/server/port.mdx +6 -6
  23. package/docs/en/configure/app/server/public-routes.mdx +5 -5
  24. package/docs/en/configure/app/server/routes.mdx +13 -13
  25. package/docs/en/configure/app/server/ssr-by-entries.mdx +4 -4
  26. package/docs/en/configure/app/server/ssr.mdx +5 -5
  27. package/docs/en/configure/app/usage.mdx +5 -5
  28. package/docs/en/guides/advanced-features/code-split.mdx +15 -14
  29. package/docs/en/guides/advanced-features/rspack-start.mdx +0 -1
  30. package/docs/en/guides/advanced-features/ssr.mdx +2 -2
  31. package/docs/en/guides/advanced-features/testing.mdx +8 -7
  32. package/docs/en/guides/advanced-features/web-server.mdx +16 -16
  33. package/docs/en/guides/basic-features/alias.mdx +11 -9
  34. package/docs/en/guides/basic-features/env-vars.mdx +14 -14
  35. package/docs/en/guides/basic-features/html.mdx +41 -43
  36. package/docs/en/guides/basic-features/mock.mdx +10 -10
  37. package/docs/en/guides/topic-detail/framework-plugin/implement.mdx +4 -4
  38. package/docs/en/guides/topic-detail/framework-plugin/introduction.mdx +1 -1
  39. package/docs/en/guides/troubleshooting/cli.mdx +13 -13
  40. package/docs/en/guides/troubleshooting/dependencies.mdx +25 -25
  41. package/docs/en/tutorials/first-app/c03-css.mdx +1 -1
  42. package/docs/zh/apis/app/commands.mdx +4 -4
  43. package/docs/zh/apis/app/runtime/testing/render.mdx +1 -1
  44. package/docs/zh/components/bff-proxy-path-rewrite.mdx +16 -0
  45. package/docs/zh/components/bff-proxy-principle.mdx +1 -0
  46. package/docs/zh/components/enable-bff-caution.mdx +4 -0
  47. package/docs/zh/components/global-proxy-config.mdx +35 -11
  48. package/docs/zh/configure/app/bff/enable-handle-web.mdx +3 -3
  49. package/docs/zh/configure/app/bff/prefix.mdx +2 -3
  50. package/docs/zh/configure/app/bff/proxy.mdx +11 -21
  51. package/docs/zh/configure/app/runtime/intro.mdx +1 -1
  52. package/docs/zh/configure/app/server/base-url.mdx +1 -1
  53. package/docs/zh/configure/app/server/public-routes.mdx +2 -2
  54. package/docs/zh/configure/app/server/routes.mdx +2 -2
  55. package/docs/zh/configure/app/server/ssr-by-entries.mdx +3 -3
  56. package/docs/zh/configure/app/server/ssr.mdx +1 -1
  57. package/docs/zh/configure/app/usage.mdx +9 -9
  58. package/docs/zh/guides/advanced-features/code-split.mdx +13 -12
  59. package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -1
  60. package/docs/zh/guides/advanced-features/ssr.mdx +2 -2
  61. package/docs/zh/guides/advanced-features/testing.mdx +4 -4
  62. package/docs/zh/guides/basic-features/alias.mdx +5 -3
  63. package/docs/zh/guides/basic-features/html.mdx +9 -9
  64. package/docs/zh/guides/basic-features/mock.mdx +2 -2
  65. package/docs/zh/guides/topic-detail/_category_.json +1 -1
  66. package/docs/zh/guides/troubleshooting/cli.mdx +1 -1
  67. package/docs/zh/guides/troubleshooting/dependencies.mdx +1 -1
  68. package/package.json +7 -6
@@ -7,9 +7,9 @@ title: enableHandleWeb
7
7
  - **类型:** `boolean`
8
8
  - **默认值:** `false`
9
9
 
10
- :::caution 注意
11
- 请先在当前应用项目根目录使用【[new](/apis/app/commands#modern-new)】 启用 BFF 功能。
12
- :::
10
+ import EnableBFFCaution from "@site-docs/components/enable-bff-caution";
11
+
12
+ <EnableBFFCaution />
13
13
 
14
14
  默认情况下,BFF 服务只能处理 BFF API 的请求。
15
15
 
@@ -7,10 +7,9 @@ sidebar_label: prefix
7
7
  - **类型:** `string`
8
8
  - **默认值:** `/api`
9
9
 
10
- :::caution 注意
11
- 请先在当前应用项目根目录使用【[new](/apis/app/commands#modern-new)】 启用 BFF 功能。
10
+ import EnableBFFCaution from "@site-docs/components/enable-bff-caution";
12
11
 
13
- :::
12
+ <EnableBFFCaution />
14
13
 
15
14
  默认情况下,BFF API 目录下的路由访问前缀是 `/api`, 如下目录结构:
16
15
 
@@ -7,13 +7,11 @@ sidebar_label: proxy
7
7
  - **类型:** `Record<string, string>`
8
8
  - **默认值:** `{}`
9
9
 
10
- :::info 补充信息
11
- 请先在当前应用项目根目录使用【[new](/apis/app/commands#modern-new)】 启用 BFF 功能。
10
+ import EnableBFFCaution from "@site-docs/components/enable-bff-caution";
12
11
 
13
- :::
12
+ <EnableBFFCaution />
14
13
 
15
- 通过简单配置,无需编写代码,Modern.js 会自动转发请求。发送给 Modern.js BFF server 的请求,会代理到指定的服务上。
16
- BFF Proxy 使用了强大的 [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware),如果需要更多高级的用法, 可以查看它的[文档](https://github.com/chimurai/http-proxy-middleware#options)。
14
+ 通过简单配置,Modern.js 可以将发送给 BFF server 的请求,自动代理到指定的服务上。
17
15
 
18
16
  在 `modern.server-runtime.config.js` 中加入以下配置;即可开启代理:
19
17
 
@@ -28,27 +26,18 @@ export default defineConfig({
28
26
  });
29
27
  ```
30
28
 
31
- 假设启动的 Modern.js BFF server 的服务地址是 `localhost:8080`,所有 path 以 `api` 开头的请求都会被拦截,如发送到 `localhost:8080/api/v1/topics` 的请求会被代理到 `https://cnodejs.org/api/v1/topics`。
29
+ 假设 Modern.js BFF server 的地址是 `localhost:8080`,所有以 `api` 开头的请求都会被代理到 `https://cnodejs.org`,如 `localhost:8080/api/v1/topics` 的请求会被代理到 `https://cnodejs.org/api/v1/topics`。
32
30
 
33
- 你可以做路径的重写,如将发送到 `localhost:8080/api/topics` 的请求代理到 `https://cnodejs.org/api/v1/topics`。
31
+ import BFFProxyPathRewrite from "@site-docs/components/bff-proxy-path-rewrite";
34
32
 
35
- ```ts title="modern.server-runtime.config.ts"
36
- import { defineConfig } from '@modern-js/app-tools/server';
37
- export default defineConfig({
38
- bff: {
39
- proxy: {
40
- '/api': {
41
- target: 'https://cnodejs.org',
42
- pathRewrite: { '/api/topics': '/api/v1/topics' },
43
- changeOrigin: true,
44
- },
45
- },
46
- },
47
- });
48
- ```
33
+ <BFFProxyPathRewrite />
49
34
 
50
35
  与 [dev.proxy](/configure/app/dev/proxy) 不同,本节所介绍的代理只作用于进入 BFF/API 服务的请求;同时,这一配置不但可以在开发环境中使用,在生产环境中也会代理相应的请求。
51
36
 
37
+ import BFFProxyPrinciple from "@site-docs/components/bff-proxy-principle";
38
+
39
+ <BFFProxyPrinciple />
40
+
52
41
  ## 常见用法
53
42
 
54
43
  ### 解决接口跨域问题
@@ -72,3 +61,4 @@ export default defineServerConfig({
72
61
  },
73
62
  };
74
63
  ```
64
+
@@ -87,7 +87,7 @@ Runtime 插件运行时配置和直接在 `modern.config.ts` 中的配置默认
87
87
  :::
88
88
 
89
89
  :::warning
90
- defineConfig 中只能定义 Runtime 插件的具体配置内容,确认是否开启插件还需要通过 `package.json` 中的 `modernConfig` 或者 `modern.config.ts` 中的配置决定。
90
+ defineConfig 中只能定义 Runtime 插件的具体配置内容,确认是否开启插件还需要通过 `modern.config.ts` 中的配置决定。
91
91
 
92
92
  :::
93
93
 
@@ -7,7 +7,7 @@ sidebar_label: baseUrl
7
7
  - **类型:** `string | string[]`
8
8
  - **默认值:** `undefined`
9
9
 
10
- 统一设置服务端路由前缀(常用于共享域名的情况,区分流量)。
10
+ 统一设置服务端路由前缀(常用于多个应用共享同一域名的情况,区分流量)。
11
11
 
12
12
  ```ts title="modern.config.ts"
13
13
  export default defineConfig({
@@ -5,11 +5,11 @@ sidebar_label: publicRoutes
5
5
  # server.publicRoutes
6
6
 
7
7
  - **类型:** `Object`
8
- - **默认值:** 根据文件约定自动生成的服务端路由规则:应用的每个文件生成一条路由规则。
8
+ - **默认值:** 根据文件约定自动生成的服务端路由规则,每个文件生成一条路由规则。
9
9
 
10
10
  该配置选项只作用于服务端路由,可以自定义 `config/public/` 下资源的访问路由。
11
11
 
12
- 对象的 `key` 为当前应用的相对文件路径(不使用 `./`), 值可以是 `string`。
12
+ 对象的 `key` `config/public/` 的相对文件路径(不使用 `./`), 值可以是 `string`。
13
13
 
14
14
  ```ts title="modern.config.ts"
15
15
  export default defineConfig({
@@ -5,9 +5,9 @@ sidebar_label: routes
5
5
  # server.routes
6
6
 
7
7
  - **类型:** `Object`
8
- - **默认值:** 根据文件约定自动生成的服务端路由规则:应用的每个入口生成一条路由规则,入口名称等于路由名称。
8
+ - **默认值:** 根据文件约定自动生成的服务端路由规则,每个入口生成一条路由规则,入口名称等于路由路径。
9
9
 
10
- 该配置选项只作用于服务端路由,可以自定义应用入口的服务访问配置。
10
+ 该配置选项只作用于服务端路由,可以自定义应用入口的访问路由。
11
11
 
12
12
  ## 自定义访问路由
13
13
 
@@ -7,7 +7,7 @@ sidebar_label: ssrByEntries
7
7
  - **类型:** `Object`
8
8
  - **默认值:** `undefined`
9
9
 
10
- 按入口设置 ssr 选项,选项内的属性同 [ssr](./ssr.mdx),指定值会和 ssr 属性内容做替换合并操作,例如:
10
+ 按入口设置 SSR 选项,选项内的属性同 [ssr](./ssr.mdx),指定值会和 SSR 属性内容做替换合并操作,例如:
11
11
 
12
12
  :::info
13
13
  「 入口名 」默认为目录名,少数情况下通过 `source.entries` 自定义入口时,入口名为 `source.entries` 对象的 `key`。
@@ -19,11 +19,11 @@ export default defineConfig({
19
19
  server: {
20
20
  ssr: true,
21
21
  ssrByEntries: {
22
- // page-a 不启用 ssr
22
+ // page-a 不启用 SSR
23
23
  'page-a': false,
24
24
  },
25
25
  },
26
26
  });
27
27
  ```
28
28
 
29
- 如上配置,项目整体启用了 ssr, 但是针对入口 `page-a` 关闭了 ssr 渲染能力。
29
+ 如上配置,项目整体启用了 SSR, 但是针对入口 `page-a` 关闭了 SSR 渲染能力。
@@ -25,7 +25,7 @@ export default defineConfig({
25
25
 
26
26
  当值类型为 `Object` 时,可以配置如下属性:
27
27
 
28
- - `mode`:`string = 'string'`,默认为使用 `renderToString` 渲染。配置为 'stream' 开启流式渲染。
28
+ - `mode`:`string = 'string'`,默认为使用 `renderToString` 渲染。配置为 `stream` 开启流式渲染。
29
29
  - `forceCSR`:`boolean = false`,默认关闭强制 CSR 渲染。配置为 `true` 后,在页面访问时添加 `?csr=true` 即可强制 CSR。
30
30
  - `inlineScript`:`boolean = true`,默认情况下,SSR 的数据会以内联脚本的方式注入到 HTML 中,并且直接赋值给全局变量。配置为 `false` 后,会下发 JSON,而不是赋值给全局变量。
31
31
 
@@ -4,7 +4,7 @@ sidebar_position: 0
4
4
 
5
5
  # 配置使用
6
6
 
7
- Modern.js 中有两种配置,一个是编译时配置,一个是服务端运行时配置。
7
+ Modern.js 中有两种配置,分别是编译时配置和服务端运行时配置。
8
8
 
9
9
  编译时配置可以在两个位置进行配置:
10
10
 
@@ -12,10 +12,10 @@ Modern.js 中有两种配置,一个是编译时配置,一个是服务端运
12
12
  - `package.json` 文件
13
13
 
14
14
  :::info
15
- Modern.js 不支持同时在 package.json 中和 modern.config.ts 中配置同一个配置项,推荐优先在 modern.config.ts 中进行配置。如果 Modern.js 检测到重复配置导致的冲突,将会抛出警告。
15
+ Modern.js 不支持同时在 `package.json` 中和 `modern.config.ts` 中配置同一个配置项,推荐在 `modern.config.ts` 中进行配置。如果 Modern.js 检测到重复配置导致的冲突,将会抛出警告。
16
16
  :::
17
17
 
18
- 服务端运行时配置可以在根路径下的 `modern.server-runtime.config.(ts|js|mjs)` 中自定义配置选项。
18
+ 服务端运行时配置可以在根路径下的 `modern.server-runtime.config.(ts|js|mjs)` 中进行配置。
19
19
 
20
20
  ## 在配置文件中配置
21
21
 
@@ -27,7 +27,7 @@ Modern.js 的配置文件定义在项目的根目录下,支持 `.ts`, `.js`
27
27
 
28
28
  ### modern.config.ts(推荐)
29
29
 
30
- 我们推荐使用 .ts 格式的配置文件,它提供了友好的 TypeScript 类型提示,从而帮助你避免配置中的错误。
30
+ 我们推荐使用 `.ts` 格式的配置文件,它提供了友好的 TypeScript 类型提示,从而帮助你避免配置中的错误。
31
31
 
32
32
  从 `@modern-js/app-tools` 中导入 `defineConfig` 工具函数, 它会帮助你进行配置的类型推导和类型补全:
33
33
 
@@ -54,7 +54,7 @@ export default defineConfig({
54
54
 
55
55
  ### modern.config.js
56
56
 
57
- 如果你在开发一个非 TypeScript 项目,可以使用 .js 格式的配置文件:
57
+ 如果你在开发一个非 TypeScript 项目,可以使用 `.js` 格式的配置文件:
58
58
 
59
59
  ```js title="modern.config.js"
60
60
  export default {
@@ -66,7 +66,7 @@ export default {
66
66
  };
67
67
  ```
68
68
 
69
- 你也可以通过 `process.env.NODE_ENV` 进行动态设置:
69
+ 你也可以通过 `process.env.NODE_ENV`,根据环境做不同配置:
70
70
 
71
71
  ```js title="modern.config.js"
72
72
  export default {
@@ -98,7 +98,7 @@ export default defineConfig(({ env, command }) => ({
98
98
  - 当运行 `modern dev` 或 `modern start` 时,`env` 的值为 `development`。
99
99
  - 当运行 `modern build` 或 `modern serve` 时,`env` 的值为 `production`。
100
100
  - 当运行 `modern test` 时,`env` 的值为 `test`。
101
- - `command`: 对应当前运行的命令,如 `dev`、`start`、`build`、`serve`。
101
+ - `command`:对应当前运行的命令,如 `dev`、`start`、`build`、`serve`。
102
102
 
103
103
  ### 导出异步函数
104
104
 
@@ -122,7 +122,7 @@ export default defineConfig(async ({ env, command }) => {
122
122
 
123
123
  Modern.js 命令行支持通过 `--config` 选项来指定配置文件的名称。
124
124
 
125
- 例如,你需要在执行 build 命令时使用 `modern.prod.config.ts` 文件,可以在 `package.json` 中添加如下配置:
125
+ 例如,你需要在执行 `build` 命令时使用 `modern.prod.config.ts` 文件,可以在 `package.json` 中添加如下配置:
126
126
 
127
127
  ```json title="package.json"
128
128
  {
@@ -159,7 +159,7 @@ $ modern build -c modern.prod.config.js
159
159
 
160
160
  ### 注意事项
161
161
 
162
- - 不建议同时使用 `package.json` 和 `modern.config.js` 进行配置。如果同时使用了两者并出现配置冲突,Modern.js 会在命令行进行提示。
162
+ - 不建议同时使用 `package.json` 和 `modern.config.js` 进行配置。如果同时使用了两者并出现配置冲突,Modern.js 会在命令行进行提示错误。
163
163
  - `@modern-js/runtime` 导出了同名的 [defineConfig](/apis/app/runtime/app/define-config) API,请注意区分。
164
164
 
165
165
  ## 本地调试配置
@@ -7,8 +7,7 @@ sidebar_position: 6
7
7
  代码分割是优化前端资源加载的一种常用手段,本文将介绍 Modern.js 支持的三种代码分割方式:
8
8
 
9
9
  :::info
10
- 使用 Modern.js [约定式路由](/guides/basic-features/routes#约定式路由)时,默认会根据路由组件做代码分割,包裹 `Suspense` 组件,无需自行进行代码分割。
11
-
10
+ 使用 Modern.js [约定式路由](/guides/basic-features/routes#约定式路由)时,默认会根据路由组件做代码分割,无需自行进行代码分割。
12
11
  :::
13
12
 
14
13
  - `import`
@@ -17,7 +16,7 @@ sidebar_position: 6
17
16
 
18
17
  ## import
19
18
 
20
- 使用动态 `import()` 语法,`import` 接收的 JS 模块将作为一个新的打包入口被打包到单独的 JS 文件中。例如:
19
+ 使用动态 `import()` 语法,传入的 JS 模块将会被被打包到单独的 JS 文件中。例如:
21
20
 
22
21
  ```ts
23
22
  import('./math').then(math => {
@@ -25,15 +24,14 @@ import('./math').then(math => {
25
24
  });
26
25
  ```
27
26
 
28
- `./math` 路径对应的 JS 模块会被打包到单独的 JS 文件中。
29
-
30
27
  ## React.lazy
31
28
 
32
29
  React 官方提供的组件代码分割的方式。
33
30
 
34
31
  :::caution
35
- React 17 及以下版本不支持 SSR,建议 React17 SSR 应用使用 loadable。
32
+ `React.lazy` 通常配合 `<Suspense>` 使用,因此仅在 CSR React 18 Streaming SSR 中可用。
36
33
 
34
+ 对于使用传统 SSR(字符串渲染)的项目,不支持 `React.lazy`,请使用 Loadable API。
37
35
  :::
38
36
 
39
37
  ```ts
@@ -56,11 +54,11 @@ function MyComponent() {
56
54
  }
57
55
  ```
58
56
 
59
- `React.lazy` 更多用法请见 [React lazy](https://zh-hans.reactjs.org/docs/code-splitting.html#reactlazy)。
57
+ `React.lazy` 更多用法请见 [React 官网文档](https://zh-hans.react.dev/reference/react/lazy)。
60
58
 
61
- ## loadable
59
+ ## Loadable
62
60
 
63
- 使用 `loadable` API,示例如下:
61
+ Modern.js 中,可以从 `@modern-js/runtime/loadable` 中导出使用 Loadable API,示例如下:
64
62
 
65
63
  ```ts
66
64
  import loadable from '@modern-js/runtime/loadable';
@@ -72,9 +70,12 @@ function MyComponent() {
72
70
  }
73
71
  ```
74
72
 
75
- `loadable` 更多用法请见 [loadable API](/apis/app/runtime/utility/loadable)。
73
+ Modern.js 开箱即用的支持在 SSR 中使用 `loadable`,无需再添加 Babel 插件,或是在 SSR 时向 HTML 中注入脚本。
76
74
 
77
- :::info
78
- `loadable` 开箱即用的支持 SSR,但不支持和 Suspense 一起使用,如果是 CSR 项目可以使用 [loadable.lazy](https://loadable-components.com/docs/suspense/)
75
+ 但需要注意的是,任何 Loadable API 在 SSR 中都不支持配合 `<Suspense>` 使用。
79
76
 
77
+ :::info
78
+ 如果希望在 React 17 及以下的 CSR 项目中使用 `<Suspense>`,可以用 [loadable.lazy](https://loadable-components.com/docs/suspense/) 代替 `React.lazy`。
80
79
  :::
80
+
81
+ 更多用法请见 [Loadable API](/apis/app/runtime/utility/loadable)。
@@ -81,7 +81,6 @@ import appTools, { defineConfig } from '@modern-js/app-tools';
81
81
  "overrides": {
82
82
  "@rspack/core": "nightly",
83
83
  "@rspack/dev-client": "nightly",
84
- "@rspack/dev-middleware": "nightly",
85
84
  "@rspack/plugin-html": "nightly"
86
85
  }
87
86
  }
@@ -74,7 +74,7 @@ Warning: Expected server HTML to contain a matching <div> in <div>.
74
74
  这是 React 在客户端执行 hydrate 逻辑时,发现渲染结果与 SSR 渲染结果不一致造成的。虽然页面表现正常,但在复杂应用中,很有可能因此出现 DOM 层级混乱、样式混乱等问题。
75
75
 
76
76
  :::info
77
- 关于 hydrate (注水)逻辑请参考[这里](https://reactjs.org/docs/react-dom.html#hydrate)。
77
+ 关于 hydrate (注水)逻辑请参考[这里](https://zh-hans.react.dev/reference/react-dom/hydrate)。
78
78
 
79
79
  :::
80
80
 
@@ -447,7 +447,7 @@ export default Page;
447
447
  ```
448
448
 
449
449
  `Await` 需要包裹在 `Suspense` 组件内部,`Await` 的 `resolve` 传入的是 Data Loader 异步获取的数据,当数据获取完成后,
450
- 通过 [Render Props](https://reactjs.org/docs/render-props.html) 模式,渲染获取到的数据。在数据的获取阶段,将展示
450
+ 通过 [Render Props](https://zh-hans.react.dev/reference/react/cloneElement#passing-data-with-a-render-prop) 模式,渲染获取到的数据。在数据的获取阶段,将展示
451
451
  `Suspense` 组件 `fallback` 属性设置的内容。
452
452
 
453
453
  :::warning 注意
@@ -8,14 +8,14 @@ Modern.js 默认集成了 [Jest](https://jestjs.io/) 的测试能力。
8
8
 
9
9
  我们首先需要执行 `pnpm run new` 启用「单元测试 / 集成测试」功能:
10
10
 
11
- ```
11
+ ```bash
12
12
  ? 请选择你想要的操作 启用可选功能
13
13
  ? 请选择功能名称 启用「单元测试 / 集成测试」功能
14
14
  ```
15
15
 
16
- 执行上述命令后,`package.json` 中将会自动生成 `"test": "modern test"` 命令。
16
+ 执行上述命令后,`package.json` 中将会自动添加 `"test": "modern test"` 命令。
17
17
 
18
- 在 `modern.config.ts` 中注册 Test 插件:
18
+ 在 `modern.config.ts` 中注册 `@modern-js/plugin-testing` 插件后即可使用测试功能:
19
19
 
20
20
  ```ts title="modern.config.ts"
21
21
  import testPlugin from '@modern-js/plugin-testing';
@@ -36,7 +36,7 @@ Modern.js 默认识别的测试文件路径为:`<rootDir>/src/**/*.test.[jt]s?
36
36
 
37
37
  Modern.js test 支持使用 [testing-library](https://testing-library.com/docs/) 相关包 API,可直接通过 `@modern-js/runtime/testing` 进行导入:
38
38
 
39
- ```
39
+ ```ts
40
40
  import { render, screen } from '@modern-js/runtime/testing';
41
41
  ```
42
42
 
@@ -14,7 +14,7 @@ Modern.js 允许在 JS 和 CSS 中使用别名导入自定义目录下的模块
14
14
  ```
15
15
 
16
16
  :::info
17
- 在开启可选功能时,生成器也会动态的添加内置别名,例如启用 BFF 时默认会添加 `@api` 别名。
17
+ 在开启可选功能时,new 命令也会动态的添加内置别名,例如启用 BFF 时默认会添加 `@api` 别名。
18
18
 
19
19
  :::
20
20
 
@@ -27,7 +27,7 @@ Modern.js 允许在 JS 和 CSS 中使用别名导入自定义目录下的模块
27
27
  │ │ └── base.css
28
28
  │ └── utils
29
29
  │ └── index.ts
30
- ├── App.tsx
30
+ └── App.tsx
31
31
  ```
32
32
 
33
33
  `src/App.tsx` 中写法如下:
@@ -37,7 +37,9 @@ import utils from '@/src/common/utils';
37
37
  import '@/src/common/styles/base.css';
38
38
  ```
39
39
 
40
- Modern.js 也提供了自定义别名的方式,以添加 `@common` 别名为例,对于 TypeScript 项目,只需要在项目根目录 `tsconfig.json` 下配置 `compilerOptions.paths` 如下:
40
+ Modern.js 也提供了自定义别名的方式,以添加 `@common` 别名为例:
41
+
42
+ 对于 TypeScript 项目,只需要在项目根目录 `tsconfig.json` 下配置 `compilerOptions.paths`:
41
43
 
42
44
  ```json
43
45
  {
@@ -9,7 +9,7 @@ Modern.js 提供了 **JSX 语法**和 **HTML(EJS) 语法**两种方式用于自
9
9
 
10
10
  ## JSX 语法
11
11
 
12
- Modern.js 约定,在 `src/` 目录下,或在入口目录下,可以创建 `Document.[jt]sx` 并默认导出组件。该组件的渲染结果可以作为入口的 HTML 模板。
12
+ Modern.js 约定,在 `src/` 或入口目录下,可以创建 `Document.[jt]sx` 文件并默认导出组件,该组件的渲染结果可以作为入口的 HTML 模板。
13
13
 
14
14
  例如以下目录结构:
15
15
 
@@ -27,17 +27,17 @@ Modern.js 约定,在 `src/` 目录下,或在入口目录下,可以创建 `
27
27
 
28
28
  `entry-a` 会优先使用当前入口下的 `Docoument.[jt]sx` 文件。如果当前入口没有 `Document.[jt]sx` 文件,例如 `entry-b`,则会查找根目录下的 `Document.[jt]sx` 文件。
29
29
 
30
- 如果还没有,则会兜底到传统模板的逻辑。
30
+ 如果未找到,将会使用 Modern.js 的默认模板。
31
31
 
32
32
  ### HTML 组件
33
33
 
34
- Modern.js 提供了一些列渲染页面的组件,用来帮助开发者生成模板,可以从 `@modern-js/runtime/document` 中导出这些组件:
34
+ Modern.js 提供了一些列渲染页面的组件,用来帮助开发者生成模板,可以从 `@modern-js/runtime/document` 中使用这些组件:
35
35
 
36
36
  ```tsx
37
37
  import { Html, Body, Root, Head, Scripts } from '@modern-js/runtime/document';
38
38
  ```
39
39
 
40
- 这些组件分别渲染:
40
+ 这些组件分别用于渲染:
41
41
 
42
42
  - `Html`:提供原生 HTML Element 的能力,并能默认渲染开发者未添加的必须的组件。`<Head>` 和 `<Body>` 是必须要存在的,其它组件可以按需选择合适的组件进行组装。
43
43
 
@@ -57,10 +57,10 @@ import { Html, Body, Root, Head, Scripts } from '@modern-js/runtime/document';
57
57
 
58
58
  Modern.js 也提供了 `DocumentContext` 来提供一些配置、环境参数,方便直接获取。主要以下参数:
59
59
 
60
- - `processEnv`:提供构建时的 `process.env`
61
- - `config`:Modern.js 项目的配置。目前只暴露出 output 相关的配置
62
- - `entryName`:当前的入口名
63
- - `templateParams`:HTML 模板的参数(为了兼容传统模板,不推荐使用)
60
+ - `processEnv`:提供构建时的 `process.env`。
61
+ - `config`:Modern.js 项目的配置。目前只暴露出 output 相关的配置。
62
+ - `entryName`:当前的入口名。
63
+ - `templateParams`:HTML 模板的参数(为了兼容传统模板,不推荐使用)。
64
64
 
65
65
  ### 示例
66
66
 
@@ -151,7 +151,7 @@ export default function Document(): React.ReactElement {
151
151
 
152
152
  Modern.js 也支持 HTML 语法。默认情况下,Modern.js 的应用工程中会内置一份 HTML 模板,用于生成 HTML 代码。
153
153
 
154
- 基于 HTML 语法的模板,Modern.js 提供了 **自定义 HTML 片段**和**完全自定义 HTML 模板**两种方式来自定义模板。
154
+ 基于 HTML 语法的模板,Modern.js 提供了**自定义 HTML 片段**和**完全自定义 HTML 模板**两种方式来自定义模板。
155
155
 
156
156
  ### 自定义 HTML 片段
157
157
 
@@ -6,7 +6,7 @@ sidebar_position: 6
6
6
 
7
7
  Modern.js 提供了快速生成 Mock 数据的功能,能够让前端独立自主开发,不被后端接口阻塞。
8
8
 
9
- ## Mock 文件
9
+ ## 启用 Mock
10
10
 
11
11
  约定当 `config/mock` 目录下存在 `index.[jt]s` 时,会自动开启 Mock 功能,如下:
12
12
 
@@ -63,7 +63,7 @@ module.exports = {
63
63
 
64
64
  :::
65
65
 
66
- ## 延迟返回
66
+ ## 延迟响应
67
67
 
68
68
  - 可以使用浏览器「 弱网模拟 」的功能实现。
69
69
  - 可以通过 `setTimeout` 为单个接口设置延迟,例如:
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "label": "专题详解",
3
- "position": 6,
3
+ "position": 8,
4
4
  "collapsed": false
5
5
  }
@@ -58,6 +58,6 @@ pnpm v6:
58
58
 
59
59
  总结来说:
60
60
 
61
- **在使用 pnpm v7 时,如果传递参数给 pnpm,需要将参数放置到命令前**
61
+ **在使用 pnpm v7 时,如果传递参数给 pnpm,需要将参数放置到命令前**。
62
62
 
63
63
  **在使用 pnpm v6 时,如果传递的参数给 pnpm,不需要加 `--`;如果传递的参数是给脚本使用,需要增加 `--` 字符串**。
@@ -105,6 +105,6 @@ Type '{}' is not assignable to type 'ReactNode'.
105
105
  **Modern.js 框架推荐使用的 React 版本为 >= 18.0.0**,并且不同功能对 React 版本的要求有所不同。
106
106
 
107
107
  - 如果你在使用 React 17,那么部分框架功能将无法使用,比如 Steaming SSR,因为它依赖 React 18 提供的新特性。
108
- - 如果你仍然在使用 React 16,那么将无法使用 Modern.js 的运行时或服务端能力。你可以考虑使用 Modern.js 的构建模式,即只使用 Modern.js 的构建能力,这种情况是可以继续使用 React 16 的。
108
+ - 如果你仍然在使用 React 16,那么将无法使用 Modern.js 的运行时或服务端能力。你可以考虑使用 Modern.js 的构建模式,即只使用 Modern.js 的构建能力,这种情况可以继续使用 React 16
109
109
 
110
110
  在 Modern.js 未来的 major 版本中,我们会逐步移除对 React 16 和 React 17 的支持。因此,请尽快升级到 React 18 以上版本。
package/package.json CHANGED
@@ -15,13 +15,14 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.22.1",
18
+ "version": "2.23.0",
19
19
  "publishConfig": {
20
20
  "registry": "https://registry.npmjs.org/",
21
- "access": "public"
21
+ "access": "public",
22
+ "provenance": true
22
23
  },
23
24
  "peerDependencies": {
24
- "@modern-js/builder-doc": "^2.22.1"
25
+ "@modern-js/builder-doc": "^2.23.0"
25
26
  },
26
27
  "devDependencies": {
27
28
  "classnames": "^2",
@@ -33,9 +34,9 @@
33
34
  "fs-extra": "^10",
34
35
  "@types/node": "^16",
35
36
  "@types/fs-extra": "^9",
36
- "@modern-js/builder-doc": "2.22.1",
37
- "@modern-js/doc-tools": "2.22.1",
38
- "@modern-js/doc-plugin-auto-sidebar": "2.22.1"
37
+ "@modern-js/builder-doc": "2.23.0",
38
+ "@modern-js/doc-tools": "2.23.0",
39
+ "@modern-js/doc-plugin-auto-sidebar": "2.23.0"
39
40
  },
40
41
  "scripts": {
41
42
  "dev": "modern dev",