@modern-js/main-doc 3.0.0-alpha.0 → 3.0.0-alpha.1

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 (142) hide show
  1. package/docs/en/apis/app/commands.mdx +6 -30
  2. package/docs/en/components/bff-upload.mdx +3 -5
  3. package/docs/en/components/bundler.mdx +1 -1
  4. package/docs/en/components/enable-bff.mdx +6 -2
  5. package/docs/en/components/enable-ssg.mdx +1 -0
  6. package/docs/en/components/esbuild.mdx +2 -2
  7. package/docs/en/components/extend-bff-function.mdx +2 -4
  8. package/docs/en/components/hono.mdx +119 -0
  9. package/docs/en/components/international/custom-instance-code.mdx +16 -0
  10. package/docs/en/components/international/init-options-desc.mdx +1 -0
  11. package/docs/en/components/international/install-command.mdx +15 -1
  12. package/docs/en/components/international/instance-code.mdx +26 -0
  13. package/docs/en/configure/app/builder-plugins.mdx +1 -2
  14. package/docs/en/configure/app/dev/server.mdx +108 -0
  15. package/docs/en/configure/app/experiments/source-build.mdx +0 -1
  16. package/docs/en/configure/app/output/assets-retry.mdx +1 -1
  17. package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  18. package/docs/en/configure/app/output/filename.mdx +2 -4
  19. package/docs/en/configure/app/output/temp-dir.mdx +3 -3
  20. package/docs/en/configure/app/performance/build-cache.mdx +1 -1
  21. package/docs/en/configure/app/performance/profile.mdx +1 -1
  22. package/docs/en/configure/app/plugins.mdx +1 -3
  23. package/docs/en/configure/app/runtime/router.mdx +0 -4
  24. package/docs/en/configure/app/security/sri.mdx +0 -1
  25. package/docs/en/configure/app/source/alias.mdx +1 -1
  26. package/docs/en/configure/app/source/enable-async-entry.mdx +1 -1
  27. package/docs/en/configure/app/source/include.mdx +2 -14
  28. package/docs/en/configure/app/tools/dev-server.mdx +8 -8
  29. package/docs/en/configure/app/usage.mdx +0 -12
  30. package/docs/en/guides/_meta.json +5 -0
  31. package/docs/en/guides/advanced-features/bff/_meta.json +9 -1
  32. package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -1
  33. package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -15
  34. package/docs/en/guides/advanced-features/bff/function.mdx +4 -4
  35. package/docs/en/guides/advanced-features/bff/operators.mdx +628 -0
  36. package/docs/en/guides/advanced-features/bff/sdk.mdx +17 -9
  37. package/docs/en/guides/advanced-features/bff/upload.mdx +3 -1
  38. package/docs/en/guides/advanced-features/international/configuration.mdx +7 -16
  39. package/docs/en/guides/advanced-features/international/quick-start.mdx +4 -32
  40. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +1 -1
  41. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +18 -4
  42. package/docs/en/guides/advanced-features/rspack-start.mdx +1 -1
  43. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -5
  44. package/docs/en/guides/basic-features/data/data-cache.mdx +60 -76
  45. package/docs/en/guides/basic-features/data/data-fetch.mdx +15 -14
  46. package/docs/en/guides/basic-features/debug/proxy.mdx +6 -9
  47. package/docs/en/guides/basic-features/render/rsc.mdx +24 -19
  48. package/docs/en/guides/basic-features/render/ssg.mdx +4 -9
  49. package/docs/en/guides/basic-features/render/ssr-cache.mdx +0 -4
  50. package/docs/en/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  51. package/docs/en/guides/get-started/tech-stack.mdx +1 -1
  52. package/docs/en/guides/upgrade/_meta.json +1 -0
  53. package/docs/en/guides/upgrade/config.mdx +936 -0
  54. package/docs/en/guides/upgrade/entry.mdx +463 -0
  55. package/docs/en/guides/upgrade/other.mdx +83 -0
  56. package/docs/en/guides/upgrade/overview.mdx +33 -0
  57. package/docs/en/guides/upgrade/tailwindcss.mdx +130 -0
  58. package/docs/en/guides/upgrade/web-server.mdx +91 -0
  59. package/docs/en/plugin/_meta.json +5 -0
  60. package/docs/en/plugin/cli-plugins/_meta.json +1 -1
  61. package/docs/en/plugin/cli-plugins/api.mdx +13 -63
  62. package/docs/en/plugin/cli-plugins/life-cycle.mdx +0 -4
  63. package/docs/en/plugin/introduction.mdx +8 -20
  64. package/docs/en/plugin/plugin-system.mdx +3 -3
  65. package/docs/en/plugin/runtime-plugins/_meta.json +1 -1
  66. package/docs/en/plugin/runtime-plugins/api.mdx +1 -1
  67. package/docs/en/plugin/server-plugins/_meta.json +1 -0
  68. package/docs/en/plugin/server-plugins/api.mdx +210 -1
  69. package/docs/en/plugin/server-plugins/life-cycle.mdx +41 -1
  70. package/docs/zh/apis/app/commands.mdx +6 -30
  71. package/docs/zh/components/bff-operator-code.mdx +5 -0
  72. package/docs/zh/components/bff-upload.mdx +0 -2
  73. package/docs/zh/components/bundler.mdx +1 -1
  74. package/docs/zh/components/enable-bff.mdx +6 -2
  75. package/docs/zh/components/enable-ssg.mdx +3 -1
  76. package/docs/zh/components/esbuild.mdx +2 -2
  77. package/docs/zh/components/extend-bff-function.mdx +2 -4
  78. package/docs/zh/components/hono.mdx +119 -0
  79. package/docs/zh/components/international/custom-instance-code.mdx +16 -0
  80. package/docs/zh/components/international/init-options-desc.mdx +1 -0
  81. package/docs/zh/components/international/install-command.mdx +15 -0
  82. package/docs/zh/components/international/instance-code.mdx +26 -0
  83. package/docs/zh/configure/app/builder-plugins.mdx +1 -2
  84. package/docs/zh/configure/app/dev/server.mdx +109 -2
  85. package/docs/zh/configure/app/experiments/source-build.mdx +0 -1
  86. package/docs/zh/configure/app/output/assets-retry.mdx +1 -1
  87. package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +2 -2
  88. package/docs/zh/configure/app/output/filename.mdx +2 -4
  89. package/docs/zh/configure/app/output/temp-dir.mdx +3 -3
  90. package/docs/zh/configure/app/performance/build-cache.mdx +1 -1
  91. package/docs/zh/configure/app/performance/profile.mdx +1 -1
  92. package/docs/zh/configure/app/plugins.mdx +1 -2
  93. package/docs/zh/configure/app/runtime/router.mdx +0 -4
  94. package/docs/zh/configure/app/security/sri.mdx +0 -1
  95. package/docs/zh/configure/app/source/alias.mdx +1 -1
  96. package/docs/zh/configure/app/source/enable-async-entry.mdx +1 -1
  97. package/docs/zh/configure/app/source/include.mdx +2 -16
  98. package/docs/zh/configure/app/tools/dev-server.mdx +5 -5
  99. package/docs/zh/configure/app/usage.mdx +0 -12
  100. package/docs/zh/guides/advanced-features/bff/_meta.json +9 -1
  101. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +2 -16
  102. package/docs/zh/guides/advanced-features/bff/operators.mdx +628 -0
  103. package/docs/zh/guides/advanced-features/bff/sdk.mdx +19 -12
  104. package/docs/zh/guides/advanced-features/bff/upload.mdx +3 -1
  105. package/docs/zh/guides/advanced-features/international/configuration.mdx +7 -16
  106. package/docs/zh/guides/advanced-features/international/quick-start.mdx +2 -25
  107. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +1 -1
  108. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +18 -4
  109. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +60 -5
  110. package/docs/zh/guides/basic-features/data/data-cache.mdx +47 -54
  111. package/docs/zh/guides/basic-features/data/data-fetch.mdx +9 -12
  112. package/docs/zh/guides/basic-features/debug/proxy.mdx +4 -7
  113. package/docs/zh/guides/basic-features/render/rsc.mdx +23 -37
  114. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +0 -4
  115. package/docs/zh/guides/basic-features/static-assets/svg-assets.mdx +0 -4
  116. package/docs/zh/guides/get-started/tech-stack.mdx +1 -1
  117. package/docs/zh/guides/troubleshooting/builder.mdx +1 -1
  118. package/docs/zh/guides/upgrade/config.mdx +132 -1
  119. package/docs/zh/plugin/_meta.json +5 -0
  120. package/docs/zh/plugin/cli-plugins/_meta.json +1 -1
  121. package/docs/zh/plugin/cli-plugins/api.mdx +15 -65
  122. package/docs/zh/plugin/cli-plugins/life-cycle.mdx +0 -4
  123. package/docs/zh/plugin/introduction.mdx +4 -16
  124. package/docs/zh/plugin/plugin-system.mdx +3 -14
  125. package/docs/zh/plugin/runtime-plugins/_meta.json +1 -1
  126. package/docs/zh/plugin/runtime-plugins/api.mdx +1 -1
  127. package/docs/zh/plugin/server-plugins/_meta.json +1 -0
  128. package/docs/zh/plugin/server-plugins/api.mdx +210 -1
  129. package/docs/zh/plugin/server-plugins/life-cycle.mdx +41 -1
  130. package/package.json +2 -2
  131. package/src/components/FrameworkCode/index.tsx +605 -0
  132. package/docs/en/configure/app/performance/bundle-analyze.mdx +0 -24
  133. package/docs/en/configure/app/tools/babel.mdx +0 -225
  134. package/docs/en/plugin/cli-plugins/migration.mdx +0 -83
  135. package/docs/en/plugin/runtime-plugins/migration.mdx +0 -110
  136. package/docs/zh/components/default-mwa-generate.mdx +0 -4
  137. package/docs/zh/configure/app/performance/bundle-analyze.mdx +0 -24
  138. package/docs/zh/configure/app/tools/babel.mdx +0 -224
  139. package/docs/zh/plugin/cli-plugins/migration.mdx +0 -83
  140. package/docs/zh/plugin/runtime-plugins/migration.mdx +0 -110
  141. /package/docs/en/components/{router-legacy-tip.mdx → upgrade-config-deploy.mdx} +0 -0
  142. /package/docs/zh/components/{router-legacy-tip.mdx → upgrade-config-deploy.mdx} +0 -0
@@ -1,3 +1,212 @@
1
1
  # 插件 API
2
2
 
3
- 敬请期待...
3
+ Modern.js 的 Server 插件允许您在服务端请求处理阶段扩展和定制功能,例如添加中间件、修改请求响应等。
4
+
5
+ :::info
6
+
7
+ Server 插件需要通过 `server/modern.server.ts` 中的 `plugins` 字段配置。
8
+
9
+ :::
10
+
11
+ ## 插件基础结构
12
+
13
+ 一个典型的 Server 插件结构如下:
14
+
15
+ ```typescript
16
+ import type { ServerPlugin } from '@modern-js/server-runtime';
17
+
18
+ const myServerPlugin = (): ServerPlugin => ({
19
+ name: '@my-org/my-server-plugin', // 插件名称,确保唯一性
20
+ setup: api => {
21
+ // 在这里使用 API 注册钩子、添加中间件等
22
+ api.onPrepare(() => {
23
+ const { middlewares } = api.getServerContext();
24
+ middlewares?.push({
25
+ name: 'my-middleware',
26
+ handler: async (c, next) => {
27
+ console.log('处理请求...');
28
+ await next();
29
+ },
30
+ });
31
+ });
32
+ },
33
+ });
34
+
35
+ export default myServerPlugin;
36
+ ```
37
+
38
+ - `name`: 插件的唯一标识符。
39
+ - `setup` 函数接收一个 `api` 对象,该对象提供了所有可用的 Server 插件 API。
40
+
41
+ ## 信息获取
42
+
43
+ #### `api.getServerContext`
44
+
45
+ 获取 Modern.js 服务器的上下文信息。
46
+
47
+ - **返回值:** `ServerContext` 对象,包含以下字段:
48
+
49
+ | 字段名 | 类型 | 描述 |
50
+ | ----------------- | ------------------- | ------------------------------ |
51
+ | `middlewares` | `MiddlewareObj[]` | 中间件列表 |
52
+ | `renderMiddlewares` | `MiddlewareObj[]` | 渲染中间件列表 |
53
+ | `routes` | `ServerRoute[]` | 服务器路由信息 |
54
+ | `appDirectory` | `string` | 项目根目录的绝对路径 |
55
+ | `apiDirectory` | `string` | API 模块目录的绝对路径 |
56
+ | `lambdaDirectory` | `string` | Lambda 模块目录的绝对路径 |
57
+ | `sharedDirectory` | `string` | 公共模块目录的绝对路径 |
58
+ | `distDirectory` | `string` | 项目产物输出目录的绝对路径 |
59
+ | `plugins` | `ServerPlugin[]` | 当前已注册的插件列表 |
60
+
61
+ - **示例:**
62
+
63
+ ```typescript
64
+ api.onPrepare(() => {
65
+ const serverContext = api.getServerContext();
66
+ console.log(`应用目录:${serverContext.appDirectory}`);
67
+ console.log(`已注册 ${serverContext.plugins.length} 个插件`);
68
+ });
69
+ ```
70
+
71
+ :::info
72
+ `getServerContext` 返回的上下文信息是只读的,如需修改请使用 `updateServerContext`。
73
+ :::
74
+
75
+ ---
76
+
77
+ #### `api.getServerConfig`
78
+
79
+ 获取用户在 `server/modern.server.ts` 文件中定义的服务器配置。
80
+
81
+ - **返回值:** 用户定义的服务器配置对象。
82
+ - **示例:**
83
+
84
+ ```typescript
85
+ api.onPrepare(() => {
86
+ const serverConfig = api.getServerConfig();
87
+ if (serverConfig.middlewares) {
88
+ console.log('用户自定义了中间件配置');
89
+ }
90
+ });
91
+ ```
92
+
93
+ ---
94
+
95
+ #### `api.getHooks`
96
+
97
+ 获取所有已注册的钩子函数。
98
+
99
+ - **返回值:** 包含所有钩子函数的对象。
100
+ - **示例:**
101
+
102
+ ```typescript
103
+ const hooks = api.getHooks();
104
+ // 手动触发 onPrepare 钩子
105
+ await hooks.onPrepare.call();
106
+ ```
107
+
108
+ :::warning
109
+ 在自定义插件中,只能手动调用对应插件注册的钩子,不能调用官方钩子,以免影响正常应用的执行顺序。
110
+ :::
111
+
112
+ ---
113
+
114
+
115
+ ## 上下文修改
116
+
117
+ #### `api.updateServerContext`
118
+
119
+ 更新服务器上下文信息。
120
+
121
+ - **类型:** `api.updateServerContext(updateContext: DeepPartial<ServerContext>)`
122
+ - **参数:**
123
+ - `updateContext`: 要更新的上下文对象(部分更新)。
124
+ - **执行阶段:** 可在任何阶段使用。
125
+ - **示例:**
126
+
127
+ ```typescript
128
+ api.onPrepare(() => {
129
+ const context = api.getServerContext();
130
+ api.updateServerContext({
131
+ middlewares: [
132
+ ...context.middlewares,
133
+ {
134
+ name: 'new-middleware',
135
+ handler: async (c, next) => {
136
+ await next();
137
+ },
138
+ },
139
+ ],
140
+ });
141
+ });
142
+ ```
143
+
144
+ ---
145
+
146
+
147
+ ## 生命周期钩子
148
+
149
+ #### `api.onPrepare`
150
+
151
+ 在服务器准备阶段添加额外的逻辑。
152
+
153
+ - **类型:** `api.onPrepare(prepareFn: () => void | Promise<void>)`
154
+ - **参数:**
155
+ - `prepareFn`: 准备函数,无参数,可异步。
156
+ - **执行阶段:** 在服务器完成配置校验之后,应用中间件之前。
157
+ - **示例:**
158
+
159
+ ```typescript
160
+ api.onPrepare(async () => {
161
+ const { middlewares } = api.getServerContext();
162
+
163
+ // 添加自定义中间件
164
+ middlewares.push({
165
+ name: 'request-logger',
166
+ handler: async (c, next) => {
167
+ const start = Date.now();
168
+ await next();
169
+ const duration = Date.now() - start;
170
+ console.log(`请求耗时: ${duration}ms`);
171
+ },
172
+ });
173
+ });
174
+ ```
175
+
176
+ :::info
177
+ 在 `onPrepare` 钩子中,可以修改 `getServerContext()` 返回的上下文对象(如 `middlewares`、`renderMiddlewares`),这些修改会在服务器启动时生效。
178
+ :::
179
+
180
+ ---
181
+
182
+ #### `api.onReset`
183
+
184
+ 在服务器重置时添加额外的逻辑。
185
+
186
+ - **类型:** `api.onReset(resetFn: (params: { event: ResetEvent }) => void | Promise<void>)`
187
+ - **参数:**
188
+ - `resetFn`: 重置处理函数,接收重置事件参数。
189
+ - `event.type`: 事件类型,可能的值:
190
+ - `'repack'`: 重新打包事件
191
+ - `'file-change'`: 文件变化事件
192
+ - `event.payload`: 当 `type` 为 `'file-change'` 时,包含文件变化信息数组。
193
+ - **执行阶段:** 当文件发生变化或需要重新打包时。
194
+ - **示例:**
195
+
196
+ ```typescript
197
+ api.onReset(async ({ event }) => {
198
+ if (event.type === 'file-change') {
199
+ console.log('检测到文件变化:', event.payload);
200
+ // 执行清理或重新初始化操作
201
+ } else if (event.type === 'repack') {
202
+ }
203
+ });
204
+ ```
205
+
206
+ ---
207
+
208
+
209
+ ## 其他说明
210
+
211
+ - 可以参考 [Server 插件生命周期](./life-cycle.mdx) 了解插件钩子的执行顺序。
212
+ - 中间件的执行顺序可以通过 `order` 字段控制(`'pre'`、`'default'`、`'post'`),也可以通过 `before` 字段指定在其他中间件之前执行。
@@ -1,3 +1,43 @@
1
1
  # 生命周期
2
2
 
3
- 敬请期待...
3
+ import Mermaid from '@site/src/components/Mermaid';
4
+
5
+ <Mermaid>
6
+ {`
7
+ flowchart TD
8
+ init{{"Server 初始化"}}
9
+ load_config(加载用户配置文件)
10
+ server_plugin(加载 Server 插件<br><sub>配置文件中注册的插件<br>CLI 插件注册的 Server 插件<br>插件中使用的插件</sub>)
11
+ registry_hooks(注册 Hooks 函数<br><sub>执行插件 setup 函数,注册插件中定义的 Hook, 插件 setup 中逻辑也会在这里执行</sub>)
12
+
13
+ modifyConfig(modifyConfig<br><sub>修改服务器配置</sub>)
14
+ onPrepare(onPrepare<br><sub>在服务器完成配置校验之后,应用中间件之前执行</sub>)
15
+ apply_middlewares(应用中间件<br><sub>按照 order 和 before 规则应用中间件</sub>)
16
+
17
+ init --> load_config
18
+ load_config --> server_plugin
19
+ server_plugin --> registry_hooks
20
+ registry_hooks --> modifyConfig
21
+ modifyConfig --> onPrepare
22
+ onPrepare --> apply_middlewares
23
+
24
+ style init fill:#FDE68A,font-size:10px;
25
+ style load_config stroke-dasharray:5 5,fill:#86EFAC,font-size:10px;
26
+ style server_plugin stroke-dasharray:5 5,fill:#86EFAC,font-size:10px;
27
+ style registry_hooks stroke-dasharray:5 5,fill:#9CA3AF,font-size:10px;
28
+ style modifyConfig font-size:10px;
29
+ style onPrepare font-size:10px;
30
+ style apply_middlewares font-size:10px;
31
+ `}
32
+ </Mermaid>
33
+
34
+ :::info
35
+
36
+ **运行时钩子**
37
+
38
+ `onReset` 钩子在运行时触发,当文件发生变化或需要代码重新编译(Rspack)完成时会被调用。它不属于初始化流程,因此未在上图中展示。
39
+
40
+ - **触发时机**:文件变化(`event.type: 'file-change'`)或代码重新编译(Rspack)完成(`event.type: 'repack'`)
41
+ - **使用场景**:清理缓存、重新初始化资源等
42
+
43
+ :::
package/package.json CHANGED
@@ -15,14 +15,14 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "3.0.0-alpha.0",
18
+ "version": "3.0.0-alpha.1",
19
19
  "publishConfig": {
20
20
  "registry": "https://registry.npmjs.org/",
21
21
  "access": "public"
22
22
  },
23
23
  "dependencies": {
24
24
  "mermaid": "^11.12.2",
25
- "@modern-js/sandpack-react": "3.0.0-alpha.0"
25
+ "@modern-js/sandpack-react": "3.0.0-alpha.1"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@rsbuild/plugin-sass": "1.4.0",