@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.
- package/.turbo/turbo-build.log +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/build.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +1 -2
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/commands/test.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/overview.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/auto-actions.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/connect.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-app.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/create-store.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/handle-effect.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-local-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-static-model.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/use-store.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/components/command-tip.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/components/reduck-tip.md +5 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/output/disable-css-extract.md +12 -0
- package/en/docusaurus-plugin-content-docs/current/configure/app/runtime/router.md +1 -1
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/app.md +152 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/git.md +49 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/handlebars.md +58 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/json.md +59 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/api/npm.md +49 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/develop.md +52 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/introduce.md +46 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/codesmith/structure.md +87 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/common.md +106 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/module.md +39 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/monorepo.md +28 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/config/mwa.md +89 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/abstract.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addFile.md +52 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addHelper.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addManyFile.md +58 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/addPartial.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/introduce.md +38 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmDir.md +24 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/rmFile.md +24 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +54 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +26 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +33 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.md +20 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/initGitRepo.md +16 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/git/isInGitRepo.md +16 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/afterForged.md +35 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/hook/onForged.md +36 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/isFileExit.md +22 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/locale.md +17 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/info/readDir.md +22 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +57 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +56 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInput.md +42 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/setInputValue.md +30 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/input/type.md +65 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/introduce.md +91 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createElement.md +33 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/createSubProject.md +35 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/enableFunc.md +44 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/new/introduce.md +15 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/_category_.json +4 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/api/npm/install.md +18 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/develop.md +125 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/plugin/use.md +61 -0
- package/en/docusaurus-plugin-content-docs/current/guides/topic-detail/generator/project.md +118 -0
- package/en/docusaurus-plugin-content-docs/current.json +39 -3
- package/package.json +3 -3
- package/scripts/summary.en.json +1 -1
- package/scripts/summary.zh.json +1 -1
- package/zh/apis/app/commands/new.md +0 -1
- package/zh/apis/app/hooks/server/test.md +2 -2
- package/zh/apis/app/runtime/web-server/hook.md +4 -4
- package/zh/apis/app/runtime/web-server/middleware.md +4 -4
- package/zh/configure/app/output/disable-css-extract.md +12 -0
- package/zh/guides/advanced-features/bff/_category_.json +5 -1
- package/zh/guides/advanced-features/bff/bff-proxy.md +5 -3
- package/zh/guides/advanced-features/bff/frameworks.md +72 -51
- package/zh/guides/advanced-features/bff/function.md +16 -30
- package/zh/guides/advanced-features/bff/index.md +20 -0
- package/zh/guides/advanced-features/bff/type.md +43 -0
- package/zh/guides/advanced-features/custom-app.md +63 -1
- package/zh/guides/advanced-features/web-server.md +21 -110
- package/zh/guides/basic-features/data-fetch.md +61 -0
- package/zh/guides/basic-features/env-vars.md +88 -41
- package/zh/guides/basic-features/routes.md +267 -0
- package/zh/guides/concept/entries.md +112 -0
- package/zh/guides/concept/lifecycle.md +10 -0
- package/zh/guides/get-started/quick-start.md +199 -1
- package/zh/guides/get-started/upgrade.md +75 -1
- package/zh/guides/topic-detail/generator/codesmith/api/_category_.json +4 -0
- package/zh/guides/topic-detail/generator/codesmith/api/app.md +152 -0
- package/zh/guides/topic-detail/generator/codesmith/api/ejs.md +56 -0
- package/zh/guides/topic-detail/generator/codesmith/api/fs.md +54 -0
- package/zh/guides/topic-detail/generator/codesmith/api/git.md +48 -0
- package/zh/guides/topic-detail/generator/codesmith/api/handlebars.md +56 -0
- package/zh/guides/topic-detail/generator/codesmith/api/json.md +58 -0
- package/zh/guides/topic-detail/generator/codesmith/api/npm.md +45 -0
- package/zh/guides/topic-detail/generator/codesmith/develop.md +52 -0
- package/zh/guides/topic-detail/generator/codesmith/introduce.md +42 -1
- package/zh/guides/topic-detail/generator/codesmith/run-in-js.md +48 -0
- package/zh/guides/topic-detail/generator/codesmith/structure.md +86 -0
- package/zh/guides/topic-detail/generator/config/mwa.md +4 -8
- package/zh/guides/topic-detail/generator/plugin/api/file/addFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/addHelper.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/addPartial.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/introduce.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/rmDir.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/rmFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.md +3 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.md +2 -2
- package/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.md +3 -3
- package/zh/guides/topic-detail/generator/plugin/api/hook/onForged.md +3 -3
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/input/type.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/createElement.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/api/npm/install.md +1 -1
- package/zh/guides/topic-detail/generator/plugin/develop.md +11 -7
- package/zh/guides/topic-detail/monorepo/sub-project-interface.md +0 -2
- package/zh/tutorials/first-app/c01-getting-started/1.1-prerequisites.md +2 -2
- package/zh/tutorials/first-app/c02-generator-and-studio/2.1-generator.md +0 -8
- package/zh/tutorials/first-app/c02-generator-and-studio/2.2-boilerplates.md +15 -7
- package/zh/tutorials/first-app/c07-app-entry/7.1-intro.md +1 -1
- package/zh/tutorials/first-app/c07-app-entry/7.2-add-entry-in-cli.md +1 -5
- package/zh/tutorials/first-app/c08-client-side-routing/8.2-file-based-routing.md +0 -8
- package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/env.md +0 -72
- package/zh/apis/app/runtime/env.md +0 -70
- package/zh/components/deploy.md +0 -60
- package/zh/components/dev-ide.md +0 -1
- package/zh/components/entry-name.md +0 -15
- package/zh/components/env-prepare.md +0 -1
- package/zh/components/launch-bff-choices.md +0 -6
- package/zh/guides/advanced-features/bff/bff-server.md +0 -142
- package/zh/guides/advanced-features/typescript.md +0 -4
- package/zh/guides/concept/integrated.md +0 -4
- package/zh/guides/concept/solutions.md +0 -4
package/zh/components/deploy.md
DELETED
@@ -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 中。
|
package/zh/components/dev-ide.md
DELETED
@@ -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,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
|
-

|
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
|
-

|
139
|
-
|
140
|
-
以上代码模拟了在 `/api/_app.ts` 中添加中间件的方式,实现了简易的登录功能。
|
141
|
-
|
142
|
-
同样,可以在这个钩子文件中实现其他功能来扩展 BFF Server。
|