@modern-js/main-doc 2.67.5 → 2.67.6

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 (181) hide show
  1. package/docs/en/apis/app/hooks/server/server.mdx +10 -0
  2. package/docs/en/apis/app/hooks/src/routes.mdx +3 -3
  3. package/docs/en/apis/app/runtime/bff/use-hono-context.mdx +30 -0
  4. package/docs/en/components/enable-bff.mdx +1 -27
  5. package/docs/en/components/rsbuild-config-tooltip.mdx +2 -2
  6. package/docs/en/components/tech-stack-node-framework.mdx +1 -1
  7. package/docs/en/configure/app/dev/asset-prefix.mdx +2 -3
  8. package/docs/en/configure/app/dev/client.mdx +2 -3
  9. package/docs/en/configure/app/dev/hmr.mdx +2 -3
  10. package/docs/en/configure/app/dev/live-reload.mdx +2 -3
  11. package/docs/en/configure/app/dev/progress-bar.mdx +2 -3
  12. package/docs/en/configure/app/dev/setup-middlewares.mdx +2 -3
  13. package/docs/en/configure/app/dev/watch-files.mdx +2 -3
  14. package/docs/en/configure/app/dev/write-to-disk.mdx +2 -3
  15. package/docs/en/configure/app/html/app-icon.mdx +2 -3
  16. package/docs/en/configure/app/html/crossorigin.mdx +2 -3
  17. package/docs/en/configure/app/html/favicon.mdx +2 -3
  18. package/docs/en/configure/app/html/inject.mdx +2 -3
  19. package/docs/en/configure/app/html/meta.mdx +2 -3
  20. package/docs/en/configure/app/html/mount-id.mdx +2 -3
  21. package/docs/en/configure/app/html/output-structure.mdx +2 -3
  22. package/docs/en/configure/app/html/script-loading.mdx +2 -3
  23. package/docs/en/configure/app/html/tags.mdx +2 -3
  24. package/docs/en/configure/app/html/template-parameters.mdx +2 -3
  25. package/docs/en/configure/app/html/template.mdx +2 -3
  26. package/docs/en/configure/app/html/title.mdx +2 -3
  27. package/docs/en/configure/app/output/asset-prefix.mdx +2 -3
  28. package/docs/en/configure/app/output/charset.mdx +2 -3
  29. package/docs/en/configure/app/output/copy.mdx +2 -3
  30. package/docs/en/configure/app/output/css-modules.mdx +2 -3
  31. package/docs/en/configure/app/output/data-uri-limit.mdx +2 -3
  32. package/docs/en/configure/app/output/dist-path.mdx +2 -4
  33. package/docs/en/configure/app/output/externals.mdx +2 -3
  34. package/docs/en/configure/app/output/filename-hash.mdx +2 -3
  35. package/docs/en/configure/app/output/filename.mdx +2 -3
  36. package/docs/en/configure/app/output/inject-styles.mdx +2 -3
  37. package/docs/en/configure/app/output/inline-scripts.mdx +2 -3
  38. package/docs/en/configure/app/output/inline-styles.mdx +2 -3
  39. package/docs/en/configure/app/output/legal-comments.mdx +2 -3
  40. package/docs/en/configure/app/output/minify.mdx +2 -3
  41. package/docs/en/configure/app/output/override-browserslist.mdx +2 -3
  42. package/docs/en/configure/app/output/polyfill.mdx +2 -3
  43. package/docs/en/configure/app/output/source-map.mdx +2 -3
  44. package/docs/en/configure/app/performance/build-cache.mdx +2 -3
  45. package/docs/en/configure/app/performance/bundle-analyze.mdx +2 -3
  46. package/docs/en/configure/app/performance/chunk-split.mdx +2 -3
  47. package/docs/en/configure/app/performance/dns-prefetch.mdx +2 -3
  48. package/docs/en/configure/app/performance/preconnect.mdx +2 -3
  49. package/docs/en/configure/app/performance/prefetch.mdx +2 -3
  50. package/docs/en/configure/app/performance/preload.mdx +2 -3
  51. package/docs/en/configure/app/performance/print-file-size.mdx +2 -3
  52. package/docs/en/configure/app/performance/profile.mdx +2 -3
  53. package/docs/en/configure/app/performance/remove-console.mdx +2 -3
  54. package/docs/en/configure/app/performance/remove-moment-locale.mdx +2 -3
  55. package/docs/en/configure/app/security/nonce.mdx +2 -3
  56. package/docs/en/configure/app/security/sri.mdx +0 -1
  57. package/docs/en/configure/app/server/port.mdx +2 -3
  58. package/docs/en/configure/app/source/alias-strategy.mdx +2 -3
  59. package/docs/en/configure/app/source/alias.mdx +2 -3
  60. package/docs/en/configure/app/source/decorators.mdx +2 -3
  61. package/docs/en/configure/app/source/define.mdx +2 -3
  62. package/docs/en/configure/app/source/exclude.mdx +2 -3
  63. package/docs/en/configure/app/source/include.mdx +2 -3
  64. package/docs/en/configure/app/source/pre-entry.mdx +2 -3
  65. package/docs/en/configure/app/source/transform-import.mdx +2 -3
  66. package/docs/en/configure/app/tools/css-extract.mdx +2 -3
  67. package/docs/en/configure/app/tools/css-loader.mdx +2 -2
  68. package/docs/en/configure/app/tools/html-plugin.mdx +7 -3
  69. package/docs/en/configure/app/tools/lightningcss-loader.mdx +2 -3
  70. package/docs/en/configure/app/tools/postcss.mdx +2 -3
  71. package/docs/en/configure/app/tools/rspack.mdx +2 -3
  72. package/docs/en/configure/app/tools/style-loader.mdx +2 -3
  73. package/docs/en/configure/app/tools/swc.mdx +1 -1
  74. package/docs/en/guides/advanced-features/_meta.json +0 -1
  75. package/docs/en/guides/advanced-features/bff/extend-server.mdx +33 -82
  76. package/docs/en/guides/advanced-features/bff/frameworks.mdx +12 -68
  77. package/docs/en/guides/advanced-features/page-performance/_meta.json +1 -1
  78. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +44 -0
  79. package/docs/en/guides/advanced-features/web-server.mdx +211 -20
  80. package/docs/en/guides/basic-features/deploy.mdx +3 -3
  81. package/docs/en/guides/basic-features/output-files.mdx +0 -28
  82. package/docs/en/tutorials/first-app/c04-routes.mdx +4 -2
  83. package/docs/en/tutorials/first-app/c05-loader.mdx +4 -1
  84. package/docs/zh/apis/app/hooks/server/server.mdx +10 -0
  85. package/docs/zh/apis/app/hooks/src/routes.mdx +3 -3
  86. package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +31 -0
  87. package/docs/zh/components/enable-bff.mdx +2 -27
  88. package/docs/zh/components/rsbuild-config-tooltip.mdx +2 -2
  89. package/docs/zh/components/tech-stack-node-framework.mdx +1 -1
  90. package/docs/zh/configure/app/dev/asset-prefix.mdx +2 -3
  91. package/docs/zh/configure/app/dev/client.mdx +2 -3
  92. package/docs/zh/configure/app/dev/hmr.mdx +2 -3
  93. package/docs/zh/configure/app/dev/live-reload.mdx +2 -3
  94. package/docs/zh/configure/app/dev/progress-bar.mdx +2 -3
  95. package/docs/zh/configure/app/dev/setup-middlewares.mdx +2 -3
  96. package/docs/zh/configure/app/dev/watch-files.mdx +2 -3
  97. package/docs/zh/configure/app/dev/write-to-disk.mdx +2 -3
  98. package/docs/zh/configure/app/html/app-icon.mdx +2 -3
  99. package/docs/zh/configure/app/html/crossorigin.mdx +2 -3
  100. package/docs/zh/configure/app/html/favicon.mdx +2 -3
  101. package/docs/zh/configure/app/html/inject.mdx +2 -3
  102. package/docs/zh/configure/app/html/meta.mdx +2 -3
  103. package/docs/zh/configure/app/html/mount-id.mdx +2 -3
  104. package/docs/zh/configure/app/html/output-structure.mdx +2 -3
  105. package/docs/zh/configure/app/html/script-loading.mdx +2 -3
  106. package/docs/zh/configure/app/html/tags.mdx +2 -3
  107. package/docs/zh/configure/app/html/template-parameters.mdx +2 -3
  108. package/docs/zh/configure/app/html/template.mdx +2 -3
  109. package/docs/zh/configure/app/html/title.mdx +2 -3
  110. package/docs/zh/configure/app/output/asset-prefix.mdx +2 -3
  111. package/docs/zh/configure/app/output/charset.mdx +2 -3
  112. package/docs/zh/configure/app/output/copy.mdx +2 -3
  113. package/docs/zh/configure/app/output/css-modules.mdx +2 -3
  114. package/docs/zh/configure/app/output/data-uri-limit.mdx +2 -3
  115. package/docs/zh/configure/app/output/dist-path.mdx +2 -4
  116. package/docs/zh/configure/app/output/externals.mdx +2 -3
  117. package/docs/zh/configure/app/output/filename-hash.mdx +2 -3
  118. package/docs/zh/configure/app/output/filename.mdx +2 -3
  119. package/docs/zh/configure/app/output/inject-styles.mdx +2 -3
  120. package/docs/zh/configure/app/output/inline-scripts.mdx +2 -3
  121. package/docs/zh/configure/app/output/inline-styles.mdx +2 -3
  122. package/docs/zh/configure/app/output/legal-comments.mdx +2 -3
  123. package/docs/zh/configure/app/output/minify.mdx +2 -3
  124. package/docs/zh/configure/app/output/override-browserslist.mdx +2 -3
  125. package/docs/zh/configure/app/output/polyfill.mdx +2 -3
  126. package/docs/zh/configure/app/output/source-map.mdx +2 -3
  127. package/docs/zh/configure/app/performance/build-cache.mdx +2 -3
  128. package/docs/zh/configure/app/performance/bundle-analyze.mdx +2 -3
  129. package/docs/zh/configure/app/performance/chunk-split.mdx +2 -3
  130. package/docs/zh/configure/app/performance/dns-prefetch.mdx +2 -3
  131. package/docs/zh/configure/app/performance/preconnect.mdx +2 -3
  132. package/docs/zh/configure/app/performance/prefetch.mdx +2 -3
  133. package/docs/zh/configure/app/performance/preload.mdx +2 -3
  134. package/docs/zh/configure/app/performance/print-file-size.mdx +2 -3
  135. package/docs/zh/configure/app/performance/profile.mdx +2 -3
  136. package/docs/zh/configure/app/performance/remove-console.mdx +2 -3
  137. package/docs/zh/configure/app/performance/remove-moment-locale.mdx +2 -3
  138. package/docs/zh/configure/app/security/nonce.mdx +2 -3
  139. package/docs/zh/configure/app/security/sri.mdx +0 -1
  140. package/docs/zh/configure/app/server/port.mdx +2 -3
  141. package/docs/zh/configure/app/source/alias-strategy.mdx +2 -3
  142. package/docs/zh/configure/app/source/alias.mdx +2 -3
  143. package/docs/zh/configure/app/source/decorators.mdx +2 -3
  144. package/docs/zh/configure/app/source/define.mdx +2 -3
  145. package/docs/zh/configure/app/source/exclude.mdx +2 -3
  146. package/docs/zh/configure/app/source/include.mdx +2 -3
  147. package/docs/zh/configure/app/source/pre-entry.mdx +2 -3
  148. package/docs/zh/configure/app/source/transform-import.mdx +2 -3
  149. package/docs/zh/configure/app/tools/css-extract.mdx +2 -3
  150. package/docs/zh/configure/app/tools/css-loader.mdx +2 -3
  151. package/docs/zh/configure/app/tools/html-plugin.mdx +6 -3
  152. package/docs/zh/configure/app/tools/lightningcss-loader.mdx +2 -3
  153. package/docs/zh/configure/app/tools/postcss.mdx +2 -3
  154. package/docs/zh/configure/app/tools/rspack.mdx +2 -3
  155. package/docs/zh/configure/app/tools/style-loader.mdx +2 -3
  156. package/docs/zh/configure/app/tools/swc.mdx +1 -1
  157. package/docs/zh/guides/advanced-features/_meta.json +0 -1
  158. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +28 -76
  159. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +6 -66
  160. package/docs/zh/guides/advanced-features/page-performance/_meta.json +1 -1
  161. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +44 -0
  162. package/docs/zh/guides/advanced-features/web-server.mdx +209 -25
  163. package/docs/zh/guides/basic-features/deploy.mdx +4 -3
  164. package/docs/zh/guides/basic-features/output-files.mdx +0 -28
  165. package/docs/zh/tutorials/first-app/c04-routes.mdx +4 -2
  166. package/docs/zh/tutorials/first-app/c05-loader.mdx +4 -1
  167. package/package.json +7 -4
  168. package/rspress.config.ts +16 -1
  169. package/src/components/RsbuildLink/index.tsx +2 -2
  170. package/src/index.ts +1 -5
  171. package/src/pages/index.tsx +3 -3
  172. package/docs/en/apis/app/hooks/api/middleware.mdx +0 -11
  173. package/docs/en/apis/app/runtime/bff/hook.mdx +0 -44
  174. package/docs/en/apis/app/runtime/bff/use-context.mdx +0 -38
  175. package/docs/en/configure/app/bff/enable-handle-web.mdx +0 -24
  176. package/docs/en/guides/advanced-features/custom-server.mdx +0 -218
  177. package/docs/zh/apis/app/hooks/api/middleware.mdx +0 -11
  178. package/docs/zh/apis/app/runtime/bff/hook.mdx +0 -44
  179. package/docs/zh/apis/app/runtime/bff/use-context.mdx +0 -38
  180. package/docs/zh/configure/app/bff/enable-handle-web.mdx +0 -24
  181. package/docs/zh/guides/advanced-features/custom-server.mdx +0 -216
@@ -1,216 +0,0 @@
1
- ---
2
- sidebar_position: 16
3
- ---
4
-
5
- # 自定义 Server
6
-
7
- Modern.js 将大部分项目需要的服务端能力都进行了封装,通常项目无需进行服务端开发。但在有些开发场景下,例如用户鉴权、请求预处理、添加页面渲染骨架等,项目仍需要对服务端进行定制。
8
-
9
- ## 自定义 Server 能力
10
-
11
- 项目目录下创建 `server/modern.server.ts` 文件,可以在这个文件中添加如下配置来扩展 Server:
12
- - **中间件(Middleware)**
13
- - **渲染中间件(RenderMiddleware)**
14
- - **服务端插件(Plugin)**
15
-
16
-
17
- 其中 **Plugin** 中可以定义 **Middleware** 与 **RenderMiddleware**。 中间件加载流程如下图所示:
18
-
19
- <img
20
- src="https://lf3-static.bytednsdoc.com/obj/eden-cn/10eh7nuhpenuhog/server-md-wf.png"
21
- style={{ width: '100%', maxWidth: '540px' }}
22
- />
23
-
24
- ### 基本配置
25
-
26
- ```ts title="server/modern.server.ts"
27
- import { defineServerConfig } from '@modern-js/server-runtime';
28
-
29
- export default defineServerConfig({
30
- middlewares: [], // 中间件
31
- renderMiddlewares: [], // 渲染中间件
32
- plugins: [], // 插件
33
- });
34
- ```
35
-
36
-
37
- ### 类型定义
38
-
39
- `defineServerConfig` 类型定义如下:
40
-
41
- ```ts
42
- import type { MiddlewareHandler } from 'hono';
43
-
44
- type MiddlewareObj = {
45
- name: string;
46
- path?: string;
47
- method?: 'options' | 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all';
48
- handler: MiddlewareHandler | MiddlewareHandler[];
49
- };
50
- type ServerConfig = {
51
- middlewares?: MiddlewareObj[];
52
- renderMiddlewares?: MiddlewareObj[];
53
- plugins?: (ServerPlugin | ServerPluginLegacy)[];
54
- }
55
- ```
56
-
57
-
58
- ### Middleware
59
-
60
- Middleware 支持在 Modern.js 服务的**请求处理**与**页面路由**的流程前后,执行自定义逻辑。
61
- 即自定义逻辑既要处理接口路由,也要作用于页面路由,那么 Middleware 是不二选择。如果仅需要处理 BFF 接口路由,可以通过配置 `path` 为 BFF 的 `prefix` 来实现。
62
-
63
- :::note
64
- BFF 场景只有[运行时框架](/guides/advanced-features/bff/frameworks.html)为 Hono 时,BFF 路由才会经过 Middleware。
65
- :::
66
-
67
- #### 使用姿势
68
-
69
- ```ts title="server/modern.server.ts"
70
- import { defineServerConfig, type MiddlewareHandler } from '@modern-js/server-runtime';
71
- import { getMonitors } from '@modern-js/runtime';
72
-
73
- export const handler: MiddlewareHandler = async (c, next) => {
74
- const monitors = getMonitors();
75
- const start = Date.now();
76
-
77
- await next();
78
-
79
- const end = Date.now();
80
- // 上报耗时
81
- monitors.timing('request_timing', end - start);
82
- };
83
-
84
- export default defineServerConfig({
85
- middlewares: [
86
- {
87
- name: 'request-timing',
88
- handler,
89
- },
90
- ],
91
- });
92
- ```
93
-
94
- :::warning
95
- 必须执行 `next` 函数才会执行后续的 Middleware。
96
- :::
97
-
98
-
99
- ### RenderMiddleware
100
-
101
- 如果只需要处理页面渲染的前后执行逻辑,modern.js 也提供了渲染中间件。
102
-
103
- #### 使用姿势
104
-
105
- ```ts title="server/modern.server.ts"
106
- import { defineServerConfig, type MiddlewareHandler } from '@modern-js/server-runtime';
107
-
108
- // 注入 render 性能指标
109
- const renderTiming: MiddlewareHandler = async (c, next) => {
110
- const start = Date.now();
111
-
112
- await next();
113
-
114
- const end = Date.now();
115
- c.res.headers.set('server-timing', `render; dur=${end - start}`);
116
- };
117
-
118
- // 修改响应体
119
- const modifyResBody: MiddlewareHandler = async (c, next) => {
120
- await next();
121
-
122
- const { res } = c;
123
- const text = await res.text();
124
- const newText = text.replace('<body>', '<body> <h3>bytedance</h3>');
125
-
126
- c.res = c.body(newText, {
127
- status: res.status,
128
- headers: res.headers,
129
- });
130
- };
131
-
132
- export default defineServerConfig({
133
- renderMiddlewares: [
134
- {
135
- name: 'render-timing',
136
- handler: renderTiming,
137
- },
138
- {
139
- name: 'modify-res-body',
140
- handler: modifyResBody,
141
- },
142
- ],
143
- });
144
- ```
145
-
146
-
147
- ### Plugin
148
-
149
- Modern.js 支持在自定义插件中为 Server 添加上述 Middleware 及 RenderMiddleware。
150
-
151
- #### 使用姿势
152
-
153
-
154
- ```ts title="server/plugins/server.ts"
155
- import type { ServerPluginLegacy } from '@modern-js/server-runtime';
156
-
157
- export default (): ServerPluginLegacy => ({
158
- name: 'serverPlugin',
159
- setup(api) {
160
- return {
161
- prepare(serverConfig) {
162
- const { middlewares, renderMiddlewares } = api.useAppContext();
163
-
164
- // 注入服务端数据,供页面 dataLoader 消费
165
- middlewares?.push({
166
- name: 'server-plugin-middleware',
167
- handler: async (c, next) => {
168
- c.set('message', 'hi modern.js');
169
- await next();
170
- // ...
171
- },
172
- });
173
-
174
- // 重定向
175
- renderMiddlewares?.push({
176
- name: 'server-plugin-render-middleware',
177
- handler: async (c, next) => {
178
- const user = getUser(c.req);
179
- if (!user) {
180
- return c.redirect('/login');
181
- }
182
-
183
- await next();
184
- },
185
- });
186
- return serverConfig;
187
- },
188
- };
189
- },
190
- });
191
- ```
192
-
193
-
194
- ```ts title="server/modern.server.ts"
195
- import { defineServerConfig } from '@modern-js/server-runtime';
196
- import serverPlugin from './plugins/serverPlugin';
197
-
198
- export default defineServerConfig({
199
- plugins: [serverPlugin()],
200
- });
201
- ```
202
-
203
-
204
- ```ts title="src/routes/page.data.ts"
205
- import { useHonoContext } from '@modern-js/server-runtime';
206
- import { defer } from '@modern-js/runtime/router';
207
-
208
- export default () => {
209
- const ctx = useHonoContext();
210
- // 消费服务端注入的数据
211
- const message = ctx.get('message');
212
-
213
- // ...
214
- };
215
-
216
- ```