@modern-js/main-doc 2.0.0-beta.1 → 2.0.0-beta.2

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 (157) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/build.md +1 -1
  3. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +1 -1
  4. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +1 -1
  5. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +1 -2
  6. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +1 -1
  7. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/test.md +1 -1
  8. package/en/docusaurus-plugin-content-docs/current/apis/app/overview.md +1 -1
  9. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/auto-actions.md +1 -1
  10. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/connect.md +1 -1
  11. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +1 -1
  12. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-store.md +1 -1
  13. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/handle-effect.md +1 -1
  14. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +1 -1
  15. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-local-model.md +1 -1
  16. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-model.md +1 -1
  17. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-static-model.md +1 -1
  18. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +1 -1
  19. package/en/docusaurus-plugin-content-docs/current/components/command-tip.md +56 -0
  20. package/en/docusaurus-plugin-content-docs/current/components/reduck-tip.md +5 -0
  21. package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +12 -0
  22. package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/router.md +1 -1
  23. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/_category_.json +4 -0
  24. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/_category_.json +4 -0
  25. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
  26. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/app.md +152 -0
  27. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
  28. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
  29. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/git.md +49 -0
  30. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/handlebars.md +58 -0
  31. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/json.md +59 -0
  32. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/npm.md +49 -0
  33. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/develop.md +52 -0
  34. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/introduce.md +46 -0
  35. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
  36. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/structure.md +87 -0
  37. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/_category_.json +4 -0
  38. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/common.md +106 -0
  39. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/module.md +39 -0
  40. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/monorepo.md +28 -0
  41. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/mwa.md +89 -0
  42. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/_category_.json +4 -0
  43. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/abstract.md +26 -0
  44. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/_category_.json +4 -0
  45. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/_category_.json +4 -0
  46. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addFile.md +52 -0
  47. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addHelper.md +26 -0
  48. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addManyFile.md +58 -0
  49. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addPartial.md +26 -0
  50. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/introduce.md +38 -0
  51. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmDir.md +24 -0
  52. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmFile.md +24 -0
  53. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +54 -0
  54. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +26 -0
  55. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +33 -0
  56. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/_category_.json +4 -0
  57. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.md +20 -0
  58. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/initGitRepo.md +16 -0
  59. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/isInGitRepo.md +16 -0
  60. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/_category_.json +4 -0
  61. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/afterForged.md +35 -0
  62. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/onForged.md +36 -0
  63. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/_category_.json +4 -0
  64. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/isFileExit.md +22 -0
  65. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/locale.md +17 -0
  66. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/readDir.md +22 -0
  67. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/_category_.json +4 -0
  68. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +57 -0
  69. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +56 -0
  70. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInput.md +42 -0
  71. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInputValue.md +30 -0
  72. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/type.md +65 -0
  73. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/introduce.md +91 -0
  74. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/_category_.json +4 -0
  75. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createElement.md +33 -0
  76. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createSubProject.md +35 -0
  77. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/enableFunc.md +44 -0
  78. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/introduce.md +15 -0
  79. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/_category_.json +4 -0
  80. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/install.md +18 -0
  81. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/develop.md +125 -0
  82. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/use.md +61 -0
  83. package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/project.md +118 -0
  84. package/en/docusaurus-plugin-content-docs/current.json +39 -3
  85. package/package.json +3 -3
  86. package/scripts/summary.en.json +1 -1
  87. package/scripts/summary.zh.json +1 -1
  88. package/zh/apis/app/commands/new.md +0 -1
  89. package/zh/apis/app/hooks/server/test.md +2 -2
  90. package/zh/apis/app/runtime/web-server/hook.md +4 -4
  91. package/zh/apis/app/runtime/web-server/middleware.md +4 -4
  92. package/zh/configure/app/output/disable-css-extract.md +12 -0
  93. package/zh/guides/advanced-features/bff/_category_.json +5 -1
  94. package/zh/guides/advanced-features/bff/bff-proxy.md +5 -3
  95. package/zh/guides/advanced-features/bff/frameworks.md +72 -51
  96. package/zh/guides/advanced-features/bff/function.md +16 -30
  97. package/zh/guides/advanced-features/bff/index.md +20 -0
  98. package/zh/guides/advanced-features/bff/type.md +43 -0
  99. package/zh/guides/advanced-features/custom-app.md +63 -1
  100. package/zh/guides/advanced-features/web-server.md +21 -110
  101. package/zh/guides/basic-features/data-fetch.md +61 -0
  102. package/zh/guides/basic-features/env-vars.md +88 -41
  103. package/zh/guides/basic-features/routes.md +267 -0
  104. package/zh/guides/concept/entries.md +112 -0
  105. package/zh/guides/concept/lifecycle.md +10 -0
  106. package/zh/guides/get-started/quick-start.md +199 -1
  107. package/zh/guides/get-started/upgrade.md +75 -1
  108. package/zh/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
  109. package/zh/guides/topic-detail/generator/codesmith/api/app.md +152 -0
  110. package/zh/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
  111. package/zh/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
  112. package/zh/guides/topic-detail/generator/codesmith/api/git.md +48 -0
  113. package/zh/guides/topic-detail/generator/codesmith/api/handlebars.md +56 -0
  114. package/zh/guides/topic-detail/generator/codesmith/api/json.md +58 -0
  115. package/zh/guides/topic-detail/generator/codesmith/api/npm.md +45 -0
  116. package/zh/guides/topic-detail/generator/codesmith/develop.md +52 -0
  117. package/zh/guides/topic-detail/generator/codesmith/introduce.md +42 -1
  118. package/zh/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
  119. package/zh/guides/topic-detail/generator/codesmith/structure.md +86 -0
  120. package/zh/guides/topic-detail/generator/config/mwa.md +4 -8
  121. package/zh/guides/topic-detail/generator/plugin/api/file/addFile.md +1 -1
  122. package/zh/guides/topic-detail/generator/plugin/api/file/addHelper.md +1 -1
  123. package/zh/guides/topic-detail/generator/plugin/api/file/addPartial.md +2 -2
  124. package/zh/guides/topic-detail/generator/plugin/api/file/introduce.md +1 -1
  125. package/zh/guides/topic-detail/generator/plugin/api/file/rmDir.md +1 -1
  126. package/zh/guides/topic-detail/generator/plugin/api/file/rmFile.md +1 -1
  127. package/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +3 -2
  128. package/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +2 -2
  129. package/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +1 -1
  130. package/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.md +3 -3
  131. package/zh/guides/topic-detail/generator/plugin/api/hook/onForged.md +3 -3
  132. package/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +1 -1
  133. package/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +1 -1
  134. package/zh/guides/topic-detail/generator/plugin/api/input/type.md +1 -1
  135. package/zh/guides/topic-detail/generator/plugin/api/new/createElement.md +1 -1
  136. package/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.md +1 -1
  137. package/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.md +1 -1
  138. package/zh/guides/topic-detail/generator/plugin/api/npm/install.md +1 -1
  139. package/zh/guides/topic-detail/generator/plugin/develop.md +11 -7
  140. package/zh/guides/topic-detail/monorepo/sub-project-interface.md +0 -2
  141. package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +2 -2
  142. package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -8
  143. package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +15 -7
  144. package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +1 -1
  145. package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +1 -5
  146. package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -8
  147. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/env.md +0 -72
  148. package/zh/apis/app/runtime/env.md +0 -70
  149. package/zh/components/deploy.md +0 -60
  150. package/zh/components/dev-ide.md +0 -1
  151. package/zh/components/entry-name.md +0 -15
  152. package/zh/components/env-prepare.md +0 -1
  153. package/zh/components/launch-bff-choices.md +0 -6
  154. package/zh/guides/advanced-features/bff/bff-server.md +0 -142
  155. package/zh/guides/advanced-features/typescript.md +0 -4
  156. package/zh/guides/concept/integrated.md +0 -4
  157. package/zh/guides/concept/solutions.md +0 -4
@@ -1,60 +0,0 @@
1
- Modern.js 支持通过云平台一键部署应用。
2
-
3
- 使用云平台部署应用,我们需要先开启部署功能。在项目根目录下执行 `pnpm run new`,进行如下选择:
4
-
5
- ```bash
6
- ? 请选择你想要的操作:启用可选功能
7
- ? 启用可选功能:启用「部署」功能
8
- ? 默认使用框架自带的专业 Web 服务器,是否调整:否
9
- ? 请选择 CDN 平台:阿里云 OSS
10
- ? 请选择云函数平台:阿里云 FC
11
- ```
12
-
13
- 安装依赖后,可以看到 package.json 中新增了两项依赖:
14
-
15
- ```bash
16
- + "@modern-js/plugin-lambda-fc": "^1"
17
- + "@modern-js/plugin-cdn-fc": "^1"
18
- ```
19
-
20
- 我们可以在项目根目录下的 `.env` 中添加云平台必要的账号信息,以阿里云为例,包括 `accountId`、`secretId` 和 `secretKey`。使用 CDN 上传还需要配置 `bucketName`。
21
-
22
- 部分**可暴露的、可以进入代码仓库**的环境变量可以放在项目的 `.env` 文件中,例如:
23
-
24
- ```bash
25
- # 阿里云账号 ID
26
- CLOUD_ACCOUNT_ID
27
- # 阿里云 OSS Bucket 名称
28
- CLOUD_BUCKET_NAME
29
- ```
30
-
31
- 鉴权相关信息**必须在平台上配置,不能进入代码仓库**。为了方便本地测试,我们临时的在 `.env` 中添加:
32
-
33
- ```bash
34
- # 阿里云访问 AK
35
- CLOUD_SECRET_ID
36
- # 阿里云访问 SK
37
- CLOUD_SECRET_KEY
38
- ```
39
-
40
- :::warning 警告
41
- 此处仅仅是用于本地测试,SecretID/SecretKey 必须从代码中移除,避免信息泄露。
42
- :::
43
-
44
- 1. AccountID 在[阿里云账号中心页](https://account.console.aliyun.com/v2/#/basic-info/index)获取。
45
-
46
- 2. SecretID(AccessKey ID),SecretKey(AccessKey Secret),在[用户信息管理页](https://usercenter.console.aliyun.com/#/manage/ak)获取。
47
-
48
- 3. Bucket 信息可以从阿里云 OSS 的 [Bucket 列表](https://oss.console.aliyun.com/bucket)中获取。
49
-
50
- 我们可以根据 OSS 的 Bucket 名称和 Region 名称拼接出 OSS 的临时域名,并设置为[静态资源域名前缀](/docs/configure/app/output/asset-prefix):
51
-
52
- ```js
53
- export default defineConfig({
54
- output: {
55
- assetPrefix: "https://{bucketName}.oss-{bucketRegion}.aliyuncs.com/"
56
- }
57
- }
58
- ```
59
-
60
- 执行 `pnpm run deploy` 命令后,应用将会先执行构建,将静态资源上传到 OSS 以及将应用部署到阿里云 FC 中。
@@ -1 +0,0 @@
1
- Modern.js 对 VS Code 等主流 IDE 提供了开箱即用的支持,具备 Lint 问题自动检测、自动修复,代码提交前的准入检查等功能特性,可以让代码开发更加高效和智能。详细介绍请参考【[确认编程环境](/docs/tutorials/first-app/c03-ide/3.1-setting-up)】。
@@ -1,15 +0,0 @@
1
- ## 入口名称
2
-
3
- 默认情况下,「入口名称」为页面入口所在目录的名称。
4
-
5
- 例如,项目的目录结构如下时,入口名称为 `page-a` 和 `page-b`。
6
-
7
- ```
8
- └── src
9
- ├── page-a
10
- │   └── App.jsx
11
- └── page-b
12
- └── App.jsx
13
- ```
14
-
15
- 如果使用 [source.entries](/docs/configure/app/source/entries) 自定义了页面入口,则「入口名称」为 `source.entries` 对象的 `key`。
@@ -1 +0,0 @@
1
- 开始之前,请参考【[环境准备](/docs/tutorials/first-app/c01-getting-started/1.1-prerequisites)】部分,确保本地环境正常。
@@ -1,6 +0,0 @@
1
- ```bash
2
- ? 请选择你想要的操作: 启用可选功能
3
- ? 启用可选功能: 启用「BFF」功能
4
- ? 请选择 BFF 类型:函数写法
5
- ?请选择运行时框架:Express
6
- ```
@@ -1,142 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- title: 定制 BFF Server
4
- ---
5
-
6
- BFF Server 与应用一体,共同开发、调试、部署,开发者通常只需要写函数即可。但有时,应用中会存在一些 BFF 函数的通用前置逻辑,例如权限校验。
7
-
8
- 在[一体化 Web 专题](/docs/guides/advanced-features/web-server)中提到过,Modern.js 支持定制 Web Server。同样,Modern.js 也为 BFF Server 提供了扩展能力。
9
-
10
- Modern.js 允许开发者创建 `api/_app.ts` 文件,在该文件中对定制自己的 BFF Server。
11
-
12
- 和 Web Server 相同,默认支持了 4 种主流的 Node.js Server 框架:Express、Koa、Egg、Nest,开发者可以根据自身偏好,选择合适的框架来编写 `api/_app.ts`。
13
-
14
- 这里先以 Express 为例来展示一下用法,下一章节会详细介绍各个框架扩展的写法。
15
-
16
- 首先创建项目,并[开启 BFF 功能](/docs/tutorials/first-app/c09-bff/9.2-enable-bff),这时项目的目录结构是:
17
-
18
- ```md
19
- .
20
- ├── README.md
21
- ├── api
22
- │ ├── _app.ts
23
- │ ├── index.ts
24
- │ └── info
25
- │ └── [type].ts
26
- ├── modern.config.ts
27
- ├── package.json
28
- ├── pnpm-lock.yaml
29
- ├── src
30
- │ ├── App.css
31
- │ ├── App.tsx
32
- │ ├── index.test.ts
33
- │ └── modern-app-env.d.ts
34
- └── tsconfig.json
35
- ```
36
-
37
- 创建一个 `api/login.ts` 文件用于实现登录:
38
-
39
- ```ts
40
- import { useContext } from '@modern-js/runtime/server';
41
-
42
- export const post = async () => {
43
- const ctx = useContext();
44
- ctx.res.cookie('sid', Math.random());
45
-
46
- return { code: 0, message: 'OK' };
47
- };
48
- ```
49
-
50
- :::info 补充信息
51
- `useContext` API 用于获取请求上下文,具体用法可以看 [API 文档](/docs/apis/app/runtime/bff/use-context)。
52
- :::
53
-
54
- 接下来修改 `api/_app.ts`,手写一个中间件用于权限校验:
55
-
56
- ```ts
57
- import { hook } from '@modern-js/runtime/server';
58
- import { Request, Response, NextFunction } from 'express';
59
-
60
- export default hook(({ addMiddleware }) => {
61
- addMiddleware(async (req: Request, res: Response, next: NextFunction) => {
62
- if (req.url !== '/api/login') {
63
- const sid = req?.cookies?.sid;
64
- if (!sid) {
65
- res.status(400);
66
- res.json({ code: -1, message: 'need login' });
67
- } else {
68
- next();
69
- }
70
- } else {
71
- next();
72
- }
73
- });
74
- });
75
- ```
76
-
77
- 然后添加一个普通的接口函数文件 `/api/hello.ts`:
78
-
79
- ```ts
80
- export default async () => {
81
- return 'Hello Modern.js';
82
- };
83
- ```
84
-
85
- 最后在前端 `/src/App.tsx` 添加接口的访问代码,直接使用一体化调用的方式:
86
-
87
- ```ts
88
- import { useState, useEffect } from 'react';
89
- import { get as hello } from '@api/hello';
90
-
91
- export default () => {
92
- const [text, setText] = useState('');
93
-
94
- useEffect(() => {
95
- async function fetchMyApi() {
96
- const { message } = await hello();
97
- setText(message);
98
- }
99
-
100
- fetchMyApi();
101
- }, []);
102
-
103
- return <p>{text}</p>;
104
- };
105
- ```
106
-
107
- 然后 `pnpm run dev` 启动项目,访问 [http://localhost:8080/](http://localhost:8080/) 会发现 `/api/hello` 的请求被拦截了:
108
-
109
- ![Network](https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/docs/network2.png)
110
-
111
- 我们再修改前端代码 `src/App.tsx`,在访问 `/api/hello` 前先调用登录接口:
112
-
113
- ```ts
114
- import { useState, useEffect } from 'react';
115
- import { get as hello } from '@api/hello';
116
- import { post as login } from '@api/login';
117
-
118
- export default () => {
119
- const [text, setText] = useState('');
120
-
121
- useEffect(() => {
122
- async function fetchAfterLogin() {
123
- const { code } = await login();
124
- if (code === 0) {
125
- const { message } = await hello();
126
- setText(message);
127
- }
128
- }
129
- fetchAfterLogin();
130
- }, []);
131
-
132
- return <p>{text}</p>;
133
- };
134
- ```
135
-
136
- 刷新页面,可以看到 `/api/hello` 访问成功:
137
-
138
- ![Network](https://lf3-static.bytednsdoc.com/obj/eden-cn/aphqeh7uhohpquloj/modern-js/docs/network3.png)
139
-
140
- 以上代码模拟了在 `/api/_app.ts` 中添加中间件的方式,实现了简易的登录功能。
141
-
142
- 同样,可以在这个钩子文件中实现其他功能来扩展 BFF Server。
@@ -1,4 +0,0 @@
1
- ---
2
- title: TS 支持
3
- sidebar_position: 9
4
- ---
@@ -1,4 +0,0 @@
1
- ---
2
- title: 一体化开发
3
- sidebar_position: 3
4
- ---
@@ -1,4 +0,0 @@
1
- ---
2
- title: 工程方案
3
- sidebar_position: 4
4
- ---