@modern-js/main-doc 2.22.1 → 2.23.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/CHANGELOG.md +38 -0
- package/docs/en/apis/app/commands.mdx +5 -5
- package/docs/en/apis/app/runtime/core/bootstrap.mdx +5 -5
- package/docs/en/apis/app/runtime/core/use-loader.mdx +2 -2
- package/docs/en/apis/app/runtime/core/use-module-apps.mdx +2 -2
- package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +1 -1
- package/docs/en/apis/app/runtime/testing/render.mdx +1 -1
- package/docs/en/components/bff-proxy-path-rewrite.mdx +16 -0
- package/docs/en/components/bff-proxy-principle.mdx +1 -0
- package/docs/en/components/enable-bff-caution.mdx +3 -0
- package/docs/en/components/global-proxy-config.mdx +33 -13
- package/docs/en/configure/app/bff/enable-handle-web.mdx +5 -5
- package/docs/en/configure/app/bff/prefix.mdx +6 -6
- package/docs/en/configure/app/bff/proxy.mdx +19 -30
- package/docs/en/configure/app/builder-plugins.mdx +1 -1
- package/docs/en/configure/app/plugins.mdx +19 -19
- package/docs/en/configure/app/runtime/intro.mdx +28 -4
- package/docs/en/configure/app/runtime/master-app.mdx +1 -1
- package/docs/en/configure/app/runtime/router.mdx +2 -2
- package/docs/en/configure/app/server/base-url.mdx +4 -4
- package/docs/en/configure/app/server/enable-framework-ext.mdx +4 -4
- package/docs/en/configure/app/server/port.mdx +6 -6
- package/docs/en/configure/app/server/public-routes.mdx +5 -5
- package/docs/en/configure/app/server/routes.mdx +13 -13
- package/docs/en/configure/app/server/ssr-by-entries.mdx +4 -4
- package/docs/en/configure/app/server/ssr.mdx +5 -5
- package/docs/en/configure/app/usage.mdx +5 -5
- package/docs/en/guides/advanced-features/code-split.mdx +15 -14
- package/docs/en/guides/advanced-features/rspack-start.mdx +0 -1
- package/docs/en/guides/advanced-features/ssr.mdx +2 -2
- package/docs/en/guides/advanced-features/testing.mdx +8 -7
- package/docs/en/guides/advanced-features/web-server.mdx +16 -16
- package/docs/en/guides/basic-features/alias.mdx +11 -9
- package/docs/en/guides/basic-features/env-vars.mdx +14 -14
- package/docs/en/guides/basic-features/html.mdx +41 -43
- package/docs/en/guides/basic-features/mock.mdx +10 -10
- package/docs/en/guides/topic-detail/framework-plugin/implement.mdx +4 -4
- package/docs/en/guides/topic-detail/framework-plugin/introduction.mdx +1 -1
- package/docs/en/guides/troubleshooting/cli.mdx +13 -13
- package/docs/en/guides/troubleshooting/dependencies.mdx +25 -25
- package/docs/en/tutorials/first-app/c03-css.mdx +1 -1
- package/docs/zh/apis/app/commands.mdx +4 -4
- package/docs/zh/apis/app/runtime/testing/render.mdx +1 -1
- package/docs/zh/components/bff-proxy-path-rewrite.mdx +16 -0
- package/docs/zh/components/bff-proxy-principle.mdx +1 -0
- package/docs/zh/components/enable-bff-caution.mdx +4 -0
- package/docs/zh/components/global-proxy-config.mdx +35 -11
- package/docs/zh/configure/app/bff/enable-handle-web.mdx +3 -3
- package/docs/zh/configure/app/bff/prefix.mdx +2 -3
- package/docs/zh/configure/app/bff/proxy.mdx +11 -21
- package/docs/zh/configure/app/runtime/intro.mdx +1 -1
- package/docs/zh/configure/app/server/base-url.mdx +1 -1
- package/docs/zh/configure/app/server/public-routes.mdx +2 -2
- package/docs/zh/configure/app/server/routes.mdx +2 -2
- package/docs/zh/configure/app/server/ssr-by-entries.mdx +3 -3
- package/docs/zh/configure/app/server/ssr.mdx +1 -1
- package/docs/zh/configure/app/usage.mdx +9 -9
- package/docs/zh/guides/advanced-features/code-split.mdx +13 -12
- package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -1
- package/docs/zh/guides/advanced-features/ssr.mdx +2 -2
- package/docs/zh/guides/advanced-features/testing.mdx +4 -4
- package/docs/zh/guides/basic-features/alias.mdx +5 -3
- package/docs/zh/guides/basic-features/html.mdx +9 -9
- package/docs/zh/guides/basic-features/mock.mdx +2 -2
- package/docs/zh/guides/topic-detail/_category_.json +1 -1
- package/docs/zh/guides/troubleshooting/cli.mdx +1 -1
- package/docs/zh/guides/troubleshooting/dependencies.mdx +1 -1
- package/package.json +7 -6
@@ -7,9 +7,9 @@ title: enableHandleWeb
|
|
7
7
|
- **类型:** `boolean`
|
8
8
|
- **默认值:** `false`
|
9
9
|
|
10
|
-
|
11
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
31
|
+
import BFFProxyPathRewrite from "@site-docs/components/bff-proxy-path-rewrite";
|
34
32
|
|
35
|
-
|
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 插件的具体配置内容,确认是否开启插件还需要通过 `
|
90
|
+
defineConfig 中只能定义 Runtime 插件的具体配置内容,确认是否开启插件还需要通过 `modern.config.ts` 中的配置决定。
|
91
91
|
|
92
92
|
:::
|
93
93
|
|
@@ -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`
|
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
|
-
按入口设置
|
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 不启用
|
22
|
+
// page-a 不启用 SSR
|
23
23
|
'page-a': false,
|
24
24
|
},
|
25
25
|
},
|
26
26
|
});
|
27
27
|
```
|
28
28
|
|
29
|
-
如上配置,项目整体启用了
|
29
|
+
如上配置,项目整体启用了 SSR, 但是针对入口 `page-a` 关闭了 SSR 渲染能力。
|
@@ -25,7 +25,7 @@ export default defineConfig({
|
|
25
25
|
|
26
26
|
当值类型为 `Object` 时,可以配置如下属性:
|
27
27
|
|
28
|
-
- `mode`:`string = 'string'`,默认为使用 `renderToString` 渲染。配置为
|
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
|
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
|
-
我们推荐使用
|
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 项目,可以使用
|
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
|
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#约定式路由)
|
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()`
|
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
|
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
|
57
|
+
`React.lazy` 更多用法请见 [React 官网文档](https://zh-hans.react.dev/reference/react/lazy)。
|
60
58
|
|
61
|
-
##
|
59
|
+
## Loadable
|
62
60
|
|
63
|
-
|
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
|
73
|
+
Modern.js 开箱即用的支持在 SSR 中使用 `loadable`,无需再添加 Babel 插件,或是在 SSR 时向 HTML 中注入脚本。
|
76
74
|
|
77
|
-
|
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)。
|
@@ -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://
|
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://
|
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`
|
16
|
+
执行上述命令后,`package.json` 中将会自动添加 `"test": "modern test"` 命令。
|
17
17
|
|
18
|
-
在 `modern.config.ts` 中注册
|
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
|
-
|
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
|
-
|
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`
|
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/`
|
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
|
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` 为单个接口设置延迟,例如:
|
@@ -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
|
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.
|
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.
|
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.
|
37
|
-
"@modern-js/doc-tools": "2.
|
38
|
-
"@modern-js/doc-plugin-auto-sidebar": "2.
|
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",
|