@modern-js/main-doc 2.42.1 → 2.43.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.
Files changed (42) hide show
  1. package/docs/en/apis/app/runtime/web-server/middleware.mdx +3 -3
  2. package/docs/en/configure/app/server/ssr.mdx +2 -0
  3. package/docs/en/guides/advanced-features/inline-assets.mdx +161 -0
  4. package/docs/en/guides/advanced-features/optimize-bundle.mdx +8 -7
  5. package/docs/en/guides/advanced-features/ssr/_category_.json +8 -0
  6. package/docs/en/guides/advanced-features/ssr/cache.mdx +186 -0
  7. package/docs/en/guides/advanced-features/ssr/index.mdx +22 -0
  8. package/docs/en/guides/advanced-features/ssr/stream.mdx +236 -0
  9. package/docs/en/guides/advanced-features/ssr/usage.mdx +341 -0
  10. package/docs/en/guides/basic-features/alias.mdx +80 -2
  11. package/docs/en/guides/basic-features/css-modules.mdx +228 -0
  12. package/docs/en/guides/basic-features/css.mdx +2 -13
  13. package/docs/en/guides/basic-features/json-files.mdx +106 -0
  14. package/docs/en/guides/basic-features/output-files.mdx +173 -0
  15. package/docs/en/guides/basic-features/static-assets.mdx +165 -0
  16. package/docs/en/guides/basic-features/svg-assets.mdx +155 -0
  17. package/docs/en/guides/basic-features/wasm-assets.mdx +66 -0
  18. package/docs/en/guides/get-started/quick-start.mdx +1 -1
  19. package/docs/en/guides/get-started/tech-stack.mdx +1 -1
  20. package/docs/en/guides/topic-detail/framework-plugin/introduction.mdx +63 -16
  21. package/docs/zh/apis/app/runtime/web-server/middleware.mdx +4 -4
  22. package/docs/zh/configure/app/server/ssr.mdx +2 -0
  23. package/docs/zh/guides/advanced-features/inline-assets.mdx +162 -0
  24. package/docs/zh/guides/advanced-features/optimize-bundle.mdx +8 -7
  25. package/docs/zh/guides/advanced-features/ssr/_category_.json +8 -0
  26. package/docs/zh/guides/advanced-features/ssr/cache.mdx +189 -0
  27. package/docs/zh/guides/advanced-features/ssr/index.mdx +22 -0
  28. package/docs/zh/guides/advanced-features/ssr/stream.mdx +240 -0
  29. package/docs/zh/guides/advanced-features/{ssr.mdx → ssr/usage.mdx} +7 -225
  30. package/docs/zh/guides/basic-features/alias.mdx +80 -2
  31. package/docs/zh/guides/basic-features/css-modules.mdx +229 -0
  32. package/docs/zh/guides/basic-features/css.mdx +2 -13
  33. package/docs/zh/guides/basic-features/data/data-write.mdx +1 -1
  34. package/docs/zh/guides/basic-features/json-files.mdx +106 -0
  35. package/docs/zh/guides/basic-features/output-files.mdx +173 -0
  36. package/docs/zh/guides/basic-features/static-assets.mdx +165 -0
  37. package/docs/zh/guides/basic-features/svg-assets.mdx +157 -0
  38. package/docs/zh/guides/basic-features/wasm-assets.mdx +66 -0
  39. package/docs/zh/guides/get-started/quick-start.mdx +1 -1
  40. package/docs/zh/guides/get-started/tech-stack.mdx +1 -1
  41. package/docs/zh/guides/topic-detail/framework-plugin/introduction.mdx +61 -16
  42. package/package.json +7 -7
@@ -0,0 +1,165 @@
1
+ ---
2
+ sidebar_position: 10
3
+ ---
4
+
5
+ # 引用静态资源
6
+
7
+ Modern.js 支持在代码中引用图片、字体、媒体类型的静态资源。
8
+
9
+ :::tip 什么是静态资源
10
+ 静态资源是指 Web 应用中不会发生变化的文件。常见的静态资源包括图片、字体、视频、样式表和 JavaScript 文件。这些资源通常存储在服务器或 CDN 上,当用户访问 Web 应用时会被传送到用户的浏览器。由于它们不会发生变化,静态资源可以被浏览器缓存,从而提高 Web 应用的性能。
11
+ :::
12
+
13
+ ## 静态资源格式
14
+
15
+ 以下是 Modern.js 默认支持的静态资源格式:
16
+
17
+ - **图片**:png、jpg、jpeg、gif、svg、bmp、webp、ico、apng、avif、tiff。
18
+ - **字体**:woff、woff2、eot、ttf、otf、ttc。
19
+ - **媒体**:mp4、webm、ogg、mp3、wav、flac、aac、mov。
20
+
21
+ 如果你需要引用其他格式的静态资源,请参考 [扩展静态资源类型](#扩展静态资源类型)。
22
+
23
+ :::tip SVG 图片
24
+ SVG 图片是一种特殊情况,Modern.js 提供了 SVG 转 React 组件的能力,对 SVG 进行单独处理,详见 [引用 SVG 资源](/guides/basic-features/svg-assets.html)。
25
+ :::
26
+
27
+ ## 在 JS 文件中引用
28
+
29
+ 在 JS 文件中,可以直接通过 `import` 的方式引用相对路径下的静态资源:
30
+
31
+ ```tsx
32
+ // 引用 static 目录下的 logo.png 图片
33
+ import logo from './static/logo.png';
34
+
35
+ export default = () => <img src={logo} />;
36
+ ```
37
+
38
+ 也支持使用[路径别名](/guides/basic-features/alias.html)来引用:
39
+
40
+ ```tsx
41
+ import logo from '@/static/logo.png';
42
+
43
+ export default = () => <img src={logo} />;
44
+ ```
45
+
46
+ ## 在 CSS 文件中引用
47
+
48
+ 在 CSS 文件中,可以引用相对路径下的静态资源:
49
+
50
+ ```css
51
+ .logo {
52
+ background-image: url('../static/logo.png');
53
+ }
54
+ ```
55
+
56
+ 也支持使用[路径别名](/guides/basic-features/alias.html)来引用:
57
+
58
+ ```css
59
+ .logo {
60
+ background-image: url('@/static/logo.png');
61
+ }
62
+ ```
63
+
64
+ ## 引用结果
65
+
66
+ 引用静态资源的结果取决于文件体积:
67
+
68
+ - 当文件体积大于 10KB 时,会返回一个 URL,同时文件会被输出到构建产物目录下。
69
+ - 当文件体积小于 10KB 时,会自动被内联为 Base64 格式。
70
+
71
+ ```js
72
+ import largeImage from './static/largeImage.png';
73
+ import smallImage from './static/smallImage.png';
74
+
75
+ console.log(largeImage); // "/static/largeImage.6c12aba3.png"
76
+ console.log(smallImage); // "data:image/png;base64,iVBORw0KGgo..."
77
+ ```
78
+
79
+ 关于资源内联的更详细介绍,请参考 [静态资源内联](/guides/advanced-features/inline-assets) 章节。
80
+
81
+ ## 构建产物
82
+
83
+ 当静态资源被引用后,会自动被输出到构建产物的目录下,你可以:
84
+
85
+ - 通过 [output.filename](/configure/app/output/filename) 来修改产物的文件名。
86
+ - 通过 [output.distPath](/configure/app/output/dist-path) 来修改产物的输出路径。
87
+
88
+ 请阅读 [构建产物目录](/guides/basic-features/output-files) 来了解更多细节。
89
+
90
+ ## URL 前缀
91
+
92
+ 引用静态资源后返回的 URL 中会自动包含路径前缀:
93
+
94
+ - 在开发环境下,通过 [dev.assetPrefix](/configure/app/dev/asset-prefix) 设置路径前缀。
95
+ - 在生产环境下,通过 [output.assetPrefix](/configure/app/output/asset-prefix) 设置路径前缀。
96
+
97
+ 比如将 `output.assetPrefix` 设置为 `https://modern.com`:
98
+
99
+ ```js
100
+ import logo from './static/logo.png';
101
+
102
+ console.log(logo); // "https://modern.com/static/logo.6c12aba3.png"
103
+ ```
104
+
105
+ ## 添加类型声明
106
+
107
+ 当你在 TypeScript 代码中引用静态资源时,TypeScript 可能会提示该模块缺少类型定义:
108
+
109
+ ```
110
+ TS2307: Cannot find module './logo.png' or its corresponding type declarations.
111
+ ```
112
+
113
+ 此时你需要为静态资源添加类型声明文件,请在项目中创建 `src/global.d.ts` 文件,并添加相应的类型声明。以 png 图片为例,需要添加以下声明:
114
+
115
+ ```ts title="src/global.d.ts"
116
+ declare module '*.png' {
117
+ const content: string;
118
+ export default content;
119
+ }
120
+ ```
121
+
122
+ 添加类型声明后,如果依然存在上述错误提示,请尝试重启当前 IDE,或者调整 `global.d.ts` 所在的目录,使 TypeScript 能够正确识别类型定义。
123
+
124
+ ## 扩展静态资源类型
125
+
126
+ 如果 Modern.js 内置的静态资源类型不能满足你的需求,那么你可以通过 [tools.bundlerChain](/configure/app/tools/bundler-chain) 来修改内置的 webpack / Rspack 配置,并扩展你需要的静态资源类型。
127
+
128
+ 比如,你需要把 `*.pdf` 文件当做静态资源直接输出到产物目录,可以添加以下配置:
129
+
130
+ ```ts
131
+ export default {
132
+ tools: {
133
+ bundlerChain(chain) {
134
+ chain.module
135
+ .rule('pdf')
136
+ .test(/\.pdf$/)
137
+ .type('asset/resource');
138
+ },
139
+ },
140
+ };
141
+ ```
142
+
143
+ 添加以上配置后,你就可以在代码里引用 `*.pdf` 文件了,比如:
144
+
145
+ ```js
146
+ import myFile from './static/myFile.pdf';
147
+
148
+ console.log(myFile); // "/static/myFile.6c12aba3.pdf"
149
+ ```
150
+
151
+ 关于以上配置的更多介绍,请参考:
152
+
153
+ - [Rspack 文档 - Asset modules](https://www.rspack.dev/guide/asset-module.html#asset-modules)
154
+ - [webpack 文档 - Asset modules](https://webpack.js.org/guides/asset-modules/)
155
+
156
+ ## 图片格式
157
+
158
+ 在使用图片资源时,你可以根据下方表格中图片的优缺点以及适用场景,来选择合适的图片格式。
159
+
160
+ | 格式 | 优点 | 缺点 | 适用场景 |
161
+ | ---- | ---------------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------- |
162
+ | PNG | 无损压缩,不会丢失图片细节,不失真,支持半透明 | 不适合色表复杂的图片 | 适合颜色数量少,边界层次分明的图片,适合用在 logo、icon、透明图等场景 |
163
+ | JPG | 颜色丰富 | 有损压缩,会导致图片失真,不支持透明度 | 适合颜色数量多,颜色带有渐变、过度复杂的图片,适合用在人像照片、风景图等场景 |
164
+ | WebP | 同时支持有损压缩与无损压缩,支持透明度,体积比 PNG 和 JPG 小很多 | iOS 兼容性不好 | 几乎任何场景的像素图片,支持 WebP 的宿主环境,都应该首选 WebP 图片格式 |
165
+ | SVG | 无损格式,不失真,支持透明度 | 不适合复杂图形 | 适合矢量图,适合用于 icon |
@@ -0,0 +1,157 @@
1
+ ---
2
+ sidebar_position: 11
3
+ ---
4
+
5
+ # 引用 SVG 资源
6
+
7
+ Modern.js 支持在代码中引用 SVG 资源,并将 SVG 图片转换为 React 组件或 URL。
8
+
9
+ :::tip 什么是 SVG
10
+ SVG 是 Scalable Vector Graphics 的缩写,意为可伸缩矢量图形。SVG 是一种用来描述二维矢量图形的 XML-based 格式,可以用来创建可以无限放大或缩小而不失真的图像。因为 SVG 图形是由矢量图形元素组成的,所以可以轻松地在各种尺寸和分辨率下渲染。
11
+ :::
12
+
13
+ ## 在 JS 文件中引用
14
+
15
+ 在 JS 文件中引用 SVG 资源时,如果你具名导入 `ReactComponent` 对象,Modern.js 会调用 [SVGR](https://react-svgr.com/),将 SVG 图片转换为一个 React 组件。
16
+
17
+ ```tsx title="src/component/Logo.tsx"
18
+ import { ReactComponent as Logo } from './static/logo.svg';
19
+
20
+ export default () => <Logo />;
21
+ ```
22
+
23
+ 如果你使用默认导入,那么 SVG 会被当做普通的静态资源来处理,你会得到一个 URL 字符串:
24
+
25
+ ```tsx title="src/component/Logo.tsx"
26
+ import logoURL from './static/logo.svg';
27
+
28
+ console.log(logoURL); // => "/static/logo.6c12aba3.png"
29
+ ```
30
+
31
+ ## 修改默认导出
32
+
33
+ 你可以通过 [output.svgDefaultExport](/configure/app/output/svg-default-export) 配置项来修改 SVG 文件默认导出的内容,比如把默认导出的内容设置为 React 组件:
34
+
35
+ ```ts
36
+ export default {
37
+ output: {
38
+ svgDefaultExport: 'component',
39
+ },
40
+ };
41
+ ```
42
+
43
+ 此时再使用默认导入,你会得到一个 React 组件,而不是 URL:
44
+
45
+ ```tsx title="src/component/Logo.tsx"
46
+ import Logo from './static/logo.svg';
47
+
48
+ export default () => <Logo />;
49
+ ```
50
+
51
+ ## 在 CSS 文件中引用
52
+
53
+ 在 CSS 文件中引用 SVG 资源时,SVG 会被当做一个普通的静态资源来处理,你会得到一个 URL:
54
+
55
+ ```css
56
+ .logo {
57
+ background-image: url('../static/logo.svg');
58
+ }
59
+ ```
60
+
61
+ ## 静态资源处理
62
+
63
+ 当 SVG 不是作为 React 组件,而是作为一个普通的静态资源被引用时,它的处理逻辑和其他静态资源完全一致,也会受到静态资源内联、URL 前缀等规则的影响。
64
+
65
+ 请阅读 [引用静态资源](/guides/basic-features/static-assets) 章节来了解静态资源的处理规则。
66
+
67
+ ## 禁用 SVGR 处理
68
+
69
+ 默认情况下,在 JS 文件中引用 SVG 资源时,Modern.js 会调用 SVGR,将 SVG 图片转换为一个 React 组件。
70
+
71
+ 如果你确定项目内的所有 SVG 资源都没有当成 React 组件使用时,可以通过将 [disableSvgr](/configure/app/output/disable-svgr) 设置为 true 来关闭此项转换,以提升构建性能。
72
+
73
+ ```js
74
+ export default {
75
+ output: {
76
+ disableSvgr: true,
77
+ },
78
+ };
79
+ ```
80
+
81
+ ## 添加类型声明
82
+
83
+ 当你在 TypeScript 代码中引用 SVG 资源时,TypeScript 可能会提示该模块缺少类型定义:
84
+
85
+ ```
86
+ TS2307: Cannot find module './logo.svg' or its corresponding type declarations.
87
+ ```
88
+
89
+ 此时你需要为 SVG 资源添加类型声明文件,请在项目中创建 `src/global.d.ts` 文件,并添加相应的类型声明:
90
+
91
+ ```ts
92
+ declare module '*.svg' {
93
+ export const ReactComponent: React.FunctionComponent<
94
+ React.SVGProps<SVGSVGElement>
95
+ >;
96
+
97
+ const content: string;
98
+ export default content;
99
+ }
100
+ ```
101
+
102
+ 如果你将 `svgDefaultExport` 设置为 `'component'`,则将类型声明修改为:
103
+
104
+ ```ts
105
+ declare module '*.svg' {
106
+ export const ReactComponent: React.FunctionComponent<
107
+ React.SVGProps<SVGSVGElement>
108
+ >;
109
+
110
+ export default ReactComponent;
111
+ }
112
+ ```
113
+
114
+ 添加类型声明后,如果依然存在上述错误提示,请尝试重启当前 IDE,或者调整 `global.d.ts` 所在的目录,使 TypeScript 能够正确识别类型定义。
115
+
116
+ ## 修改 SVGR 配置
117
+
118
+ 当启用 SVGR 时,其默认配置如下:
119
+
120
+ ```js
121
+ {
122
+ svgo: true,
123
+ svgoConfig: {
124
+ plugins: [
125
+ {
126
+ name: 'preset-default',
127
+ params: {
128
+ overrides: {
129
+ removeViewBox: false,
130
+ },
131
+ },
132
+ },
133
+ 'prefixIds',
134
+ ],
135
+ },
136
+ }
137
+ ```
138
+
139
+ 如果需要修改 SVGR 配置,可通过如下方式:
140
+
141
+ ```js
142
+ export default {
143
+ tools: {
144
+ bundlerChain: (chain, { CHAIN_ID }) => {
145
+ chain.module
146
+ .rule(CHAIN_ID.RULE.SVG)
147
+ .oneOf(CHAIN_ID.ONE_OF.SVG)
148
+ .use(CHAIN_ID.USE.SVGR)
149
+ .tap(options => {
150
+ // modify svgoConfig
151
+ options.svgoConfig.plugins[0].params.overrides.removeUselessDefs = false;
152
+ return options;
153
+ });
154
+ },
155
+ },
156
+ };
157
+ ```
@@ -0,0 +1,66 @@
1
+ ---
2
+ sidebar_position: 13
3
+ ---
4
+
5
+ # 引用 Wasm 资源
6
+
7
+ Modern.js 支持在代码引用 WebAssembly 资源。
8
+
9
+ :::tip 什么是 WebAssembly
10
+ WebAssembly(缩写为 wasm)是一种可移植、高性能的字节码格式,被设计用来在现代 Web 浏览器中执行 CPU 密集型计算任务,为 Web 平台带来了接近本地编译代码的性能和可靠性。
11
+ :::
12
+
13
+ ## 引用方式
14
+
15
+ 你可以直接在 JavaScript 文件中引用一个 WebAssembly 模块:
16
+
17
+ ```js title="index.js"
18
+ import { add } from './add.wasm';
19
+
20
+ console.log(add); // [native code]
21
+ console.log(add(1, 2)); // 3
22
+ ```
23
+
24
+ 也可以通过 dynamic import 来引用 WebAssembly 模块:
25
+
26
+ ```js title="index.js"
27
+ import('./add.wasm').then(({ add }) => {
28
+ console.log('---- Async Wasm Module');
29
+ console.log(add); // [native code]
30
+ console.log(add(1, 2)); // 3
31
+ });
32
+ ```
33
+
34
+ 还可以通过 `new URL` 语法来获取 WebAssembly 模块的路径:
35
+
36
+ ```js title="index.js"
37
+ const wasmURL = new URL('./add.wasm', import.meta.url);
38
+
39
+ console.log(wasmURL).pathname; // "/static/wasm/[hash].module.wasm"
40
+ ```
41
+
42
+ ## 输出目录
43
+
44
+ 当 `.wasm` 资源被引用后,默认会被 Modern.js 输出到 `dist/static/wasm` 目录下。
45
+
46
+ 你可以通过 [output.distPath](/configure/app/output/dist-path) 配置项来修改 `.wasm` 产物的输出目录。
47
+
48
+ ```ts
49
+ export default {
50
+ output: {
51
+ distPath: {
52
+ wasm: 'resource/wasm',
53
+ },
54
+ },
55
+ };
56
+ ```
57
+
58
+ ## 添加类型声明
59
+
60
+ 当你在 TypeScript 代码中引用 Wasm 文件时,通常需要添加相应的类型声明。
61
+
62
+ 比如 `add.wasm` 文件导出了 `add()` 方法,那么你可以在同级目录下创建一个 `add.wasm.d.ts` 文件,并添加相应的类型声明:
63
+
64
+ ```ts title="add.wasm.d.ts"
65
+ export const add = (num1: number, num2: number) => number;
66
+ ```
@@ -116,7 +116,7 @@ dist
116
116
  └── js
117
117
  ```
118
118
 
119
- > 如果你需要自定义构建产物的目录,请参考 [构建产物目录](https://modernjs.dev/builder/guide/basic/output-files.html)。
119
+ > 如果你需要自定义构建产物的目录,请参考 [构建产物目录](/guides/basic-features/output-files)。
120
120
 
121
121
  ## 本地验证
122
122
 
@@ -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」](https://modernjs.dev/builder/guide/basic/css-modules.html) 来使用。
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 用于扩展项目运行、请求、渲染等不同阶段功能的系统,主要分为三个部分:Hook 模型、管理器,上下文共享机制。
9
+ Modern.js 提供了一套拥有完整生命周期的插件系统。插件可用于扩展项目运行、请求、渲染等不同阶段功能,
10
10
 
11
- Hook 模型用于确定当前 Hook 的执行方式,不同 Hook 模型的函数拥有不同的执行逻辑。管理器用于控制 Hook 的执行与调度。上下文共享机制用于在不同 Hook 间传递信息。
11
+ ## 使用方式
12
12
 
13
- 目前 Modern.js 提供几种不同的 Hook 模型:
13
+ 插件需要在配置文件中显示注册才能够生效,当需要为 Modern.js 添加插件时,可以将它配置到 [plugin](/configure/app/plugins.html) 字段中:
14
14
 
15
- - Pipeline
16
- - Sync
17
- - Async
18
- - Waterfall
19
- - Sync
20
- - Async
21
- - Workflow
22
- - Sync
23
- - Async
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 模型和管理器,Modern.js 暴露了三套插件:CLI、Runtime、Server。
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.42.1",
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.42.1"
25
+ "@modern-js/sandpack-react": "2.43.0"
26
26
  },
27
27
  "peerDependencies": {
28
- "@modern-js/builder-doc": "^2.42.1"
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.7.4",
39
- "@rspress/shared": "1.7.4",
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/builder-doc": "2.42.1",
43
- "@modern-js/doc-plugin-auto-sidebar": "2.42.1"
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",