@modern-js/main-doc 2.42.2 → 2.43.0
Sign up to get free protection for your applications and to get access to all the features.
- package/docs/en/apis/app/runtime/web-server/middleware.mdx +3 -3
- package/docs/en/configure/app/server/ssr.mdx +2 -0
- package/docs/en/guides/advanced-features/optimize-bundle.mdx +1 -1
- package/docs/en/guides/advanced-features/ssr/_category_.json +8 -0
- package/docs/en/guides/advanced-features/ssr/cache.mdx +186 -0
- package/docs/en/guides/advanced-features/ssr/index.mdx +22 -0
- package/docs/en/guides/advanced-features/ssr/stream.mdx +236 -0
- package/docs/en/guides/advanced-features/ssr/usage.mdx +341 -0
- package/docs/en/guides/basic-features/css.mdx +2 -13
- package/docs/en/guides/get-started/tech-stack.mdx +1 -1
- package/docs/en/guides/topic-detail/framework-plugin/introduction.mdx +63 -16
- package/docs/zh/apis/app/runtime/web-server/middleware.mdx +4 -4
- package/docs/zh/configure/app/server/ssr.mdx +2 -0
- package/docs/zh/guides/advanced-features/optimize-bundle.mdx +1 -1
- package/docs/zh/guides/advanced-features/ssr/_category_.json +8 -0
- package/docs/zh/guides/advanced-features/ssr/cache.mdx +189 -0
- package/docs/zh/guides/advanced-features/ssr/index.mdx +22 -0
- package/docs/zh/guides/advanced-features/ssr/stream.mdx +240 -0
- package/docs/zh/guides/advanced-features/{ssr.mdx → ssr/usage.mdx} +7 -225
- package/docs/zh/guides/basic-features/css.mdx +2 -13
- package/docs/zh/guides/basic-features/data/data-write.mdx +1 -1
- package/docs/zh/guides/get-started/tech-stack.mdx +1 -1
- package/docs/zh/guides/topic-detail/framework-plugin/introduction.mdx +61 -16
- package/package.json +7 -7
@@ -22,7 +22,7 @@ Modern.js 内置了 [PostCSS](https://postcss.org/) 来转换 CSS 代码。
|
|
22
22
|
|
23
23
|
## 使用 CSS Modules
|
24
24
|
|
25
|
-
请阅读 [使用 CSS Modules](
|
25
|
+
请阅读 [使用 CSS Modules](/guides/basic-features/css-modules) 章节来了解 CSS Modules 的完整用法。
|
26
26
|
|
27
27
|
## 使用 CSS-in-JS
|
28
28
|
|
@@ -72,18 +72,7 @@ Modern.js 内部集成了 Babel 的 [babel-plugin-styled-components](https://git
|
|
72
72
|
? 请选择功能名称 启用 「Tailwind CSS」 支持
|
73
73
|
```
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
```json title="./package.json"
|
78
|
-
{
|
79
|
-
"dependencies": {
|
80
|
-
"tailwindcss": "^3.0.0"
|
81
|
-
},
|
82
|
-
"devDependencies": {
|
83
|
-
"@modern-js/plugin-tailwindcss": "^2.0.0"
|
84
|
-
}
|
85
|
-
}
|
86
|
-
```
|
75
|
+
成功开启后,你会看到 `package.json` 中新增了 `tailwindcss` 和 `@modern-js/plugin-tailwindcss` 依赖。
|
87
76
|
|
88
77
|
2. 在 `modern.config.ts` 中注册 Tailwind 插件:
|
89
78
|
|
@@ -84,7 +84,7 @@ Modern.js 中提供 Data Action 主要是为了使 UI 和服务器的状态能
|
|
84
84
|

|
85
85
|
|
86
86
|
如果项目中组件共享的数据主要服务端的状态,则无需在项目引入客户端状态管理库,使用 Data Loader 请求数据,通过 [`useRouteLoaderData`](/guides/basic-features/data/data-fetch.md) 在子组件中共享数据,
|
87
|
-
通过 Data
|
87
|
+
通过 Data Action 修改和同步服务端的状态。
|
88
88
|
|
89
89
|
|
90
90
|
|
@@ -97,7 +97,7 @@ Modern.js 支持 [Sass](https://sass-lang.com/)、[Less](https://lesscss.org/)
|
|
97
97
|
|
98
98
|
Modern.js 对 [CSS Modules](https://github.com/css-modules/css-modules) 提供了开箱即用的支持,内部基于 [css-loader](https://www.npmjs.com/package/css-loader) 实现。
|
99
99
|
|
100
|
-
请参考[「使用 CSS Modules」](
|
100
|
+
请参考[「使用 CSS Modules」](/guides/basic-features/css-modules) 来使用。
|
101
101
|
|
102
102
|
---
|
103
103
|
|
@@ -6,29 +6,74 @@ sidebar_position: 1
|
|
6
6
|
|
7
7
|
## Modern.js 插件系统
|
8
8
|
|
9
|
-
Modern.js
|
9
|
+
Modern.js 提供了一套拥有完整生命周期的插件系统。插件可用于扩展项目运行、请求、渲染等不同阶段功能,
|
10
10
|
|
11
|
-
|
11
|
+
## 使用方式
|
12
12
|
|
13
|
-
|
13
|
+
插件需要在配置文件中显示注册才能够生效,当需要为 Modern.js 添加插件时,可以将它配置到 [plugin](/configure/app/plugins.html) 字段中:
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
- Parallel(Async)
|
15
|
+
```ts title="edenx.config.ts"
|
16
|
+
// an example for bff
|
17
|
+
import { appTools, defineConfig } from '@modern-js/app-tools';
|
18
|
+
import { bffPlugin } from '@modern-js/plugin-bff';
|
19
|
+
|
20
|
+
export default defineConfig({
|
21
|
+
plugins: [appTools(), bffPlugin()],
|
22
|
+
});
|
23
|
+
```
|
25
24
|
|
26
25
|
:::note
|
27
|
-
|
26
|
+
注意,该配置仅支持添加 Modern.js 插件,无法添加 Webpack 插件。
|
27
|
+
:::
|
28
|
+
|
29
|
+
## 官方插件
|
30
|
+
|
31
|
+
Modern.js 提供了一系列官方插件,并与 Modern.js 生成器结合。所有的官方插件功能,都可以通过执行 `new` 命令开启。例如当需要开启 BFF 功能时:
|
32
|
+
|
33
|
+
```bash
|
34
|
+
$ npx modern new
|
35
|
+
? 请选择你想要的操作 启用可选功能
|
36
|
+
? 请选择功能名称 (Use arrow keys)
|
37
|
+
启用 「Tailwind CSS」 支持
|
38
|
+
❯ 启用「BFF」功能
|
39
|
+
启用「微前端」模式
|
40
|
+
启用「单元测试 / 集成测试」功能
|
41
|
+
启用「Visual Testing (Storybook)」模式
|
42
|
+
```
|
43
|
+
|
44
|
+
完成选择后,Modern.js 生成器会自动安装对应的插件和三方依赖,安装完成后可以看到:
|
45
|
+
|
46
|
+
```bash
|
47
|
+
[INFO] 依赖自动安装成功
|
48
|
+
|
49
|
+
[INFO] 安装插件依赖成功!请添加如下代码至 modern.config.ts :
|
28
50
|
|
51
|
+
import { bffPlugin } from '@modern-js/plugin-bff';
|
52
|
+
import { expressPlugin } from '@modern-js/plugin-express';
|
53
|
+
|
54
|
+
export default defineConfig({
|
55
|
+
...,
|
56
|
+
plugins: [..., bffPlugin(), expressPlugin()],
|
57
|
+
});
|
58
|
+
```
|
59
|
+
|
60
|
+
此时,可以按照控制台的输出,将插件添加到配置文件中。
|
61
|
+
|
62
|
+
## 插件系统组成
|
63
|
+
|
64
|
+
Modern.js 插件系统主要分为三个部分:Hook 模型、管理器,上下文共享机制。
|
65
|
+
|
66
|
+
- Hook 模型用于确定当前 Hook 的执行逻辑。
|
67
|
+
- 管理器用于控制 Hook 的执行与调度。
|
68
|
+
- 上下文共享机制用于在不同 Hook 间传递信息。
|
69
|
+
|
70
|
+
目前 Modern.js 提供几种不同的 Hook 模型:**Pipeline、Waterfall、Workflow**。
|
71
|
+
|
72
|
+
:::note
|
73
|
+
后续章节详细介绍各个模型的执行方式。
|
29
74
|
:::
|
30
75
|
|
31
|
-
基于 Hook
|
76
|
+
Modern.js 基于 Hook 模型暴露了三套插件:CLI、Runtime、Server。
|
32
77
|
|
33
78
|
其中 CLI 插件是 Modern.js 中主要的运行流程控制模型,Modern.js 中绝大部分功能都是主要通过这一套模型运行的。Runtime 插件主要负责处理 React 组件渲染逻辑。Server 插件主要用于对服务端的生命周期以及用户请求的控制。
|
34
79
|
|
@@ -48,4 +93,4 @@ Modern.js 的所有功能都是通过这套插件实现的,这意味着 Modern
|
|
48
93
|
- 自定义 React 组件客户端/服务器端渲染
|
49
94
|
- ...
|
50
95
|
|
51
|
-
当 Modern.js
|
96
|
+
当 Modern.js 暂时没有覆盖到所需要的功能或场景时,可以开发一个自定义插件,来实现适配特殊场景的相关功能。
|
package/package.json
CHANGED
@@ -15,17 +15,17 @@
|
|
15
15
|
"modern",
|
16
16
|
"modern.js"
|
17
17
|
],
|
18
|
-
"version": "2.
|
18
|
+
"version": "2.43.0",
|
19
19
|
"publishConfig": {
|
20
20
|
"registry": "https://registry.npmjs.org/",
|
21
21
|
"access": "public",
|
22
22
|
"provenance": true
|
23
23
|
},
|
24
24
|
"dependencies": {
|
25
|
-
"@modern-js/sandpack-react": "2.
|
25
|
+
"@modern-js/sandpack-react": "2.43.0"
|
26
26
|
},
|
27
27
|
"peerDependencies": {
|
28
|
-
"@modern-js/builder-doc": "^2.
|
28
|
+
"@modern-js/builder-doc": "^2.43.0"
|
29
29
|
},
|
30
30
|
"devDependencies": {
|
31
31
|
"classnames": "^2",
|
@@ -35,12 +35,12 @@
|
|
35
35
|
"ts-node": "^10.9.1",
|
36
36
|
"typescript": "^5",
|
37
37
|
"fs-extra": "^10",
|
38
|
-
"rspress": "1.8.
|
39
|
-
"@rspress/shared": "1.8.
|
38
|
+
"rspress": "1.8.3",
|
39
|
+
"@rspress/shared": "1.8.3",
|
40
40
|
"@types/node": "^16",
|
41
41
|
"@types/fs-extra": "9.0.13",
|
42
|
-
"@modern-js/doc
|
43
|
-
"@modern-js/
|
42
|
+
"@modern-js/builder-doc": "2.43.0",
|
43
|
+
"@modern-js/doc-plugin-auto-sidebar": "2.43.0"
|
44
44
|
},
|
45
45
|
"scripts": {
|
46
46
|
"dev": "rspress dev",
|