@modern-js/main-doc 0.0.0-next-20221123182933 → 0.0.0-next-20221124071519

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 (70) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/_category_.json +1 -1
  3. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/build.md +10 -10
  4. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/dev.md +7 -7
  5. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/index.md +2 -2
  6. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/inspect.md +15 -15
  7. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/lint.md +2 -2
  8. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/new.md +15 -15
  9. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/start.md +5 -5
  10. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/test.md +5 -5
  11. package/en/docusaurus-plugin-content-docs/current/apis/app/commands/upgrade.md +7 -9
  12. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/_category_.json +1 -1
  13. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/framework/lambda.md +22 -47
  14. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/api.md +46 -18
  15. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/app.md +2 -2
  16. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/functions/common.md +4 -4
  17. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/test.md +2 -4
  18. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/html.md +2 -4
  19. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/icon.md +3 -5
  20. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/mock.md +1 -7
  21. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/public.md +11 -13
  22. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/storybook.md +3 -5
  23. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/config/upload.md +14 -20
  24. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/index.md +2 -7
  25. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/modern-config.md +2 -4
  26. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/server/index_.md +5 -3
  27. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/server/test.md +2 -4
  28. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/shared.md +1 -3
  29. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/app.md +7 -3
  30. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/index_.md +7 -8
  31. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/pages.md +40 -43
  32. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/stories.md +3 -5
  33. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/test.md +3 -3
  34. package/en/docusaurus-plugin-content-docs/current/apis/app/overview.md +3 -2
  35. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/app/define-config.md +2 -2
  36. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/default-alias.md +0 -1
  37. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/env.md +1 -1
  38. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/model/model_.md +2 -2
  39. package/en/docusaurus-plugin-content-docs/current/apis/app/runtime/testing/act.md +1 -1
  40. package/en/docusaurus-plugin-content-docs/current.json +10 -10
  41. package/package.json +3 -3
  42. package/zh/apis/app/commands/build.md +1 -1
  43. package/zh/apis/app/commands/index.md +1 -1
  44. package/zh/apis/app/commands/lint.md +1 -1
  45. package/zh/apis/app/commands/upgrade.md +0 -2
  46. package/zh/apis/app/hooks/api/framework/_category_.json +1 -1
  47. package/zh/apis/app/hooks/api/framework/lambda.md +7 -32
  48. package/zh/apis/app/hooks/api/functions/_category_.json +1 -1
  49. package/zh/apis/app/hooks/api/functions/api.md +28 -1
  50. package/zh/apis/app/hooks/api/functions/common.md +2 -4
  51. package/zh/apis/app/hooks/api/test.md +1 -3
  52. package/zh/apis/app/hooks/config/html.md +0 -2
  53. package/zh/apis/app/hooks/config/icon.md +1 -1
  54. package/zh/apis/app/hooks/config/mock.md +1 -7
  55. package/zh/apis/app/hooks/config/public.md +1 -3
  56. package/zh/apis/app/hooks/config/storybook.md +1 -3
  57. package/zh/apis/app/hooks/config/upload.md +0 -6
  58. package/zh/apis/app/hooks/modern-config.md +1 -3
  59. package/zh/apis/app/hooks/server/index_.md +4 -4
  60. package/zh/apis/app/hooks/server/test.md +1 -1
  61. package/zh/apis/app/hooks/shared.md +1 -2
  62. package/zh/apis/app/hooks/src/app.md +7 -3
  63. package/zh/apis/app/hooks/src/index_.md +1 -1
  64. package/zh/apis/app/hooks/src/pages.md +2 -3
  65. package/zh/apis/app/hooks/src/stories.md +1 -1
  66. package/zh/apis/app/overview.md +1 -1
  67. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/api/framework/app.md +0 -100
  68. package/en/docusaurus-plugin-content-docs/current/apis/app/hooks/src/eslint.md +0 -9
  69. package/zh/apis/app/hooks/api/framework/app.md +0 -100
  70. package/zh/apis/app/hooks/src/eslint.md +0 -9
@@ -14,8 +14,6 @@ Options:
14
14
  -h, --help display help for command
15
15
  ```
16
16
 
17
- `modern upgrade` 命令,用于升级项目 Modern.js 相关依赖至最新版本。
18
-
19
17
  在项目根目录下执行命令 `npx modern upgrade`,会默认将当前执行命令项目的 `package.json` 中的 Modern.js 相关依赖更新至最新版本。
20
18
 
21
19
  :::info
@@ -1,4 +1,4 @@
1
1
  {
2
- "label": "框架写法",
2
+ "label": "Framework Mode",
3
3
  "position": 2
4
4
  }
@@ -3,11 +3,13 @@ title: lambda/*.[tj]s
3
3
  sidebar_position: 1
4
4
  ---
5
5
 
6
- 声明 API 路由的文件,在 Modern.js 函数写法下;除了[某些约定文件](/docs/apis/app/hooks/api/framework/lambda#白名单)外,`api` 目录下的文件会被注册为接口的路由。
6
+ BFF 框架写法下,声明 API 路由的文件。除了[某些约定文件](/docs/apis/app/hooks/api/framework/lambda#白名单)外,`api/` 目录下的文件会被注册为接口的路由。
7
7
 
8
- :::info
8
+ :::info
9
9
  使用 `api` 目录需要开启 BFF 功能,需要在项目下执行 new 命令启用「BFF」功能。
10
+ :::
10
11
 
12
+ :::tip
11
13
  该文件支持使用 `js` 或 `ts` 语言,但必须使用 `esm` 语法导出函数。
12
14
  :::
13
15
 
@@ -20,9 +22,9 @@ sidebar_position: 1
20
22
  * `api/lambda/index.ts` -> `$BASENAME/`
21
23
  * `api/lambda/user/index.ts` -> `$BASENAME/user`
22
24
 
23
- ### 嵌套路由
25
+ ### 多级路由
24
26
 
25
- 路由系统也支持解析嵌套的文件,如果创建嵌套文件夹结构,文件仍会以相同方式自动解析路由。
27
+ 路由系统也支持解析多级的文件,如果创建文件夹结构,文件仍会以相同方式自动解析路由。
26
28
 
27
29
  * `api/lambda/hello.ts` -> `$BASENAME/hello`
28
30
  * `api/lambda/user/list.ts` -> `$BASENAME/user/list`
@@ -49,31 +51,4 @@ sidebar_position: 1
49
51
 
50
52
  ## 函数定义
51
53
 
52
- 除了上面的路由规则之外,代码中函数定义与导出也有相应的约定。
53
-
54
- * 首先命名导出时,导出函数的名字为对应接口接受的 HTTP Method。
55
-
56
- 即:
57
-
58
- ```ts
59
- export const get = async () => {
60
- return {
61
- name: 'Modern.js',
62
- desc: '现代 web 工程方案',
63
- };
64
- };
65
- ```
66
-
67
- 这样导出函数,则会得到一个 `POST` 接口。
68
-
69
- 应用工程中支持了 9 个 Method 定义,即:`GET`、`POST`、`PUT`、`DELETE`、`CONNECT`、`TRACE`、`PATCH`、`OPTION`、`HEAD`,即可以用这些 Method 作为函数导出的名字。
70
-
71
- 名字是大小不敏感的,就是说,如果是 `GET`,写成 `get`、`Get`、`GEt`、`GET`,都可以准确识别。而默认导出,即 `export default xxx` 则会被映射为 `Get`。
72
-
73
- 因为 `delete` 是 `javascript` 中的关键字,可以使用 `del` 或者 `DELETE` 代替。
74
-
75
- 可以在一个文件中定义多个不同 Method 的函数,但如果定义多个相同 Method 的函数,则只有第一个会生效。
76
-
77
- :::info 注
78
- 需要注意的是,定义的函数都应该是异步的,这个与函数调用时类型有关,这个后面会提到。
79
- :::
54
+ 和函数写法下[函数定义](/docs/apis/app/hooks/api/functions/api#define-function)完全一致。
@@ -1,4 +1,4 @@
1
1
  {
2
- "label": "函数写法",
2
+ "label": "Function Mode",
3
3
  "position": 1
4
4
  }
@@ -3,7 +3,7 @@ title: "**/*.[tj]s"
3
3
  sidebar_position: 1
4
4
  ---
5
5
 
6
- 声明 API 路由的文件,在 Modern.js 函数写法下;除了[某些约定文件](/docs/apis/app/hooks/api/functions/api)外,`api` 目录下的文件会被注册为接口的路由。
6
+ BFF 函数写法下,声明 API 路由的文件。除了[某些约定文件](/docs/apis/app/hooks/api/functions/api)外,`api` 目录下的文件会被注册为接口的路由。
7
7
 
8
8
  :::info 注
9
9
  使用 `api` 目录需要开启 BFF 功能,需要在项目下执行 new 命令启用「BFF」功能。
@@ -47,4 +47,31 @@ sidebar_position: 1
47
47
  * TypeScript 类型文件。例如:`hello.d.ts`。
48
48
  * `node_module` 下的文件。
49
49
 
50
+ ## 函数定义
50
51
 
52
+ 除了上面的路由规则之外,代码中函数定义与导出也有相应的约定。
53
+
54
+ 函数通过具名导出,导出函数的名字为对应接口接受的 HTTP Method,即:
55
+
56
+ ```ts
57
+ export const get = async () => {
58
+ return {
59
+ name: 'Modern.js',
60
+ desc: '现代 web 工程方案',
61
+ };
62
+ };
63
+ ```
64
+
65
+ 这样导出函数,则会得到一个 `POST` 接口。
66
+
67
+ 应用工程中支持了 9 个 Method 定义,即:`GET`、`POST`、`PUT`、`DELETE`、`CONNECT`、`TRACE`、`PATCH`、`OPTION`、`HEAD`,即可以用这些 Method 作为函数导出的名字。
68
+
69
+ 名字是大小不敏感的,就是说,如果是 `GET`,写成 `get`、`Get`、`GEt`、`GET`,都可以准确识别。而默认导出,即 `export default xxx` 则会被映射为 `Get`。
70
+
71
+ 因为 `delete` 是 JavaScript 中的关键字,可以使用 `del` 或者 `DELETE` 代替。
72
+
73
+ 可以在一个文件中定义多个不同 Method 的函数,但如果定义多个相同 Method 的函数,则只有第一个会生效。
74
+
75
+ :::info 注
76
+ 需要注意的是,定义的函数都应该是异步的,这个与函数调用时类型有关,这个后面会提到。
77
+ :::
@@ -3,8 +3,6 @@ title: "**/_*.[tj]s, _*/**"
3
3
  sidebar_position: 2
4
4
  ---
5
5
 
6
- Modern.js 函数写法下,这些文件不会注册为路由;你可以在这种目录或文件下放任意项目中需要的代码,文件等。
6
+ BFF 函数写法下,这些文件不会注册为路由。
7
7
 
8
- :::info 注
9
- 使用 `api` 目录的开启 BFF 功能,需要在项目下执行 new 命令启用「BFF」功能。
10
- :::
8
+ 你可以在这种目录或文件下放任意项目中需要的代码,文件等。
@@ -3,9 +3,7 @@ title: test.[tj]s
3
3
  sidebar_position: 2
4
4
  ---
5
5
 
6
- 应用项目 BFF 测试文件。
7
-
8
- 应用项目支持在项目 API 目录下创建后缀为 `.test.[tj]sx?` 文件进行编写测试用例。
6
+ 应用的 BFF 测试文件,支持在 `api/` 目录后缀为 `.test.[tj]sx?` 的文件中编写测试用例。
9
7
 
10
8
  :::info 注
11
9
  使用单元测试、集成测试需要提前在项目下执行 new 命令启用「单元测试 / 集成测试」功能。
@@ -3,8 +3,6 @@ title: html/
3
3
  sidebar_position: 1
4
4
  ---
5
5
 
6
- 应用工程方案自定义 html 片段文件。
7
-
8
6
  通过 `config/html` 目录可以在内部默认 html 模板的不同位置注入自定义的 html 片段。
9
7
 
10
8
  具体使用方式请参考: [自定义 HTML](/docs/guides/basic-features/html)
@@ -5,7 +5,7 @@ sidebar_position: 2
5
5
 
6
6
  应用工程方案 App Icon 文件。
7
7
 
8
- 项目根目录下 `config/icon.png` 时,可以在构建时在 html 页面注入 app icon 信息, 如下:
8
+ 项目根目录下 `config/icon.png` 时,可以在构建时向 html 页面注入 app icon 信息:
9
9
 
10
10
  ```
11
11
  ./config
@@ -3,10 +3,4 @@ title: mock/
3
3
  sidebar_position: 5
4
4
  ---
5
5
 
6
- 应用工程方案本地调试 Mock 数据文件。
7
-
8
- 项目根目录下存在 `config/mock/index.js` 时,在本地开发调试环节自动启用快速 Mock 数据的功能。
9
-
10
- :::caution 注意
11
- 为避免 Mock API 不生效, 请注意不要与配置 [tools.devServer.proxy](/docs/configure/app/tools/dev-server) 的 API 有冲突。
12
- :::
6
+ 项目根目录下存在 `config/mock/index.js` 时,在开发环节自动开启 Mock 服务。
@@ -3,13 +3,11 @@ title: public/
3
3
  sidebar_position: 3
4
4
  ---
5
5
 
6
- 应用工程方案静态资源文件。
7
-
8
6
  `public/` 目录中可以放置任意格式的静态资源文件,文件会被 Serve 在 Web 应用域名下。
9
7
 
10
8
  ## 说明
11
9
 
12
- 被 Serve 的文件路由基于目录结构的约定,其中,`public/` 为根目录,对应 Web 应用根域名。
10
+ 被 Serve 的文件路由基于目录结构的约定,其中,`public/` 为根目录,对应 Web 应用根路径。
13
11
 
14
12
  例如 `config/public/sdk/index.js` 文件,在部署后将会被 Serve 在 `${domain}/sdk/index.js` 下。
15
13
 
@@ -3,9 +3,7 @@ title: storybook/
3
3
  sidebar_position: 7
4
4
  ---
5
5
 
6
- 应用工程方案 Storybook 配置文件。
7
-
8
- 应用工程方案支持使用 Storybook 进行调试,当需要对 Storybook 进行配置时,需要在项目 config/storybook 目录进行配置。
6
+ Modern.js 支持使用 Storybook 进行调试,当需要对 Storybook 进行配置时,需要在项目 config/storybook 目录进行配置。
9
7
 
10
8
  Storybook 配置请查看:[Storybook 配置](https://storybook.js.org/docs/react/configure/overview)
11
9
 
@@ -3,8 +3,6 @@ title: upload/
3
3
  sidebar_position: 4
4
4
  ---
5
5
 
6
- 应用工程方案静态资源文件。
7
-
8
6
  `upload/` 目录中可以放置任意格式的静态资源文件。
9
7
 
10
8
  ## 说明
@@ -19,8 +17,6 @@ sidebar_position: 4
19
17
 
20
18
  图片、字体文件、通用 CSS 等。
21
19
 
22
- 如果并非必要,Modern.js 推荐将 JS / CSS 这类文件通过 `upload/` 上传到 CDN,而不使用 `public/`。
23
-
24
20
  ## 代码压缩
25
21
 
26
22
  如果目录下的文件是一个 `.js` 文件,在生产环境构建时,会自动对其进行代码压缩。
@@ -43,6 +39,4 @@ sidebar_position: 4
43
39
 
44
40
  :::info 注
45
41
  Modern.js 没有支持在 `config/public/*.css`(例如 background-image)中通过 URL 使用 `config/upload/` 下的文件。
46
-
47
- 因为 Modern.js 不推荐在 `public/` 中放 JS、CSS 这类资源文件,可以将它们直接放置在 `upload/` 目录下。
48
42
  :::
@@ -3,8 +3,6 @@ title: modern.config.js
3
3
  sidebar_position: 8
4
4
  ---
5
5
 
6
- 应用工程方案的 Modern.js 配置文件。
7
-
8
- 通过该文件可以对当前项目的各个方面进行个性化配置。
6
+ Modern.js 配置文件, 通过该文件可以对当前项目的各个方面进行个性化配置。
9
7
 
10
8
  了解配置的具体用法,请参考 [配置使用](/docs/configure/app/usage)。
@@ -3,10 +3,10 @@ title: index.[tj]s
3
3
  sidebar_position: 1
4
4
  ---
5
5
 
6
- 扩展 Modern.js Server 的文件,在此文件中可以给应用工程启动的 Web Server 添加前置中间件。
6
+ 扩展 Modern.js Web Server 的文件,在此文件中可以给应用工程启动的 Web Server 添加 Hook 或 Middleware。
7
7
 
8
- 可以对请求和响应进行拦截处理,鉴权与角色、请求预处理、异常兜底等;也可在 Server 的运行流程中(包括路由匹配、资源寻址、头部注入、页面渲染,静态 Web 托管)插入特定的业务逻辑。
8
+ 可以对请求和响应进行拦截处理,鉴权与角色、请求预处理、异常兜底等。也可在内置处理逻辑(包括路由匹配、资源寻址、头部注入、页面渲染,静态 Web 托管)插入特定的业务逻辑。
9
9
 
10
- :::info
11
- 具体使用示例可查看 [Hook](/docs/apis/app/runtime/web-server/hook)。
10
+ :::info
11
+ 具体使用示例可查看 [Hook](/docs/apis/app/runtime/web-server/hook) & [Middleware](/docs/apis/app/runtime/web-server/middleware)
12
12
  :::
@@ -5,7 +5,7 @@ sidebar_position: 2
5
5
 
6
6
  扩展 Web Server 测试目录。
7
7
 
8
- 应用项目支持对扩展 Web Server 逻辑进行测试,可直接在项目 server 目录下创建后缀为 `.test.[tj]s` 文件进行编写测试用例。
8
+ 应用支持对扩展 Web Server 逻辑进行测试,可直接在项目 `server/` 目录下创建后缀为 `.test.[tj]s` 文件进行编写测试用例。
9
9
 
10
10
  :::info 注
11
11
  使用单元测试、集成测试需要提前在项目下执行 new 命令启用「单元测试 / 集成测试」功能。
@@ -3,6 +3,5 @@ title: shared/
3
3
  sidebar_position: 5
4
4
  ---
5
5
 
6
- 应用工程方案共享源码目录。
6
+ 共享源码目录。当项目在 `api/`、`server/`、`src/` 下有公共代码时,可将这些代码放到 shared 目录下,而不是直接引用。
7
7
 
8
- 在项目中同时用到了 BFF 和扩展 Web Server 功能,并且它们之间存在一些公共服务端代码时,可将这些公共代码放到 shared 目录下。
@@ -3,13 +3,14 @@ title: App.[tj]sx
3
3
  sidebar_position: 1
4
4
  ---
5
5
 
6
- 应用项目无路由或者任意路由的入口标识。
6
+ 应用使用自控路由时的入口标识符。
7
7
 
8
- 开发单页面应用的场景,推荐 `src` 文件夹下放置 `App.[tj]sx` 导出应用根组件即可,Modern.js 会自动生成真正的构建打包的入口文件, 内容大致如下:
8
+ `App.[tj]sx` 并不是实际的应用入口,Modern.js 会自动生成真正的构建打包的入口文件, 内容大致如下:
9
9
 
10
10
  ```js
11
11
  import React from 'react';
12
12
  import { createApp, bootstrap } from '@modern-js/runtime';
13
+ // App.[jt]sx
13
14
  import App from '@_modern_js_src/App';
14
15
  import { state } from '@modern-js/runtime/plugins';
15
16
  import { immer, effects, autoActions, devtools } from '@modern-js/runtime/model';
@@ -38,4 +39,7 @@ AppWrapper = render();
38
39
  export default AppWrapper;;
39
40
  ```
40
41
 
41
- 开发多页面应用的场景类似,在入口目录下推荐直接放置 `App.[jt]sx`, 自动生成的构建打包入口文件和单页面应用类似。
42
+
43
+ :::note
44
+ 在多入口的场景下,每个入口都可以拥有独立的 `App.[jt]sx`,详见[入口](/docs/guides/concept/entries)。
45
+ :::
@@ -7,7 +7,7 @@ sidebar_position: 3
7
7
 
8
8
  通常情况下 [`src/App.[tj]sx, src/[entry]/App.[tj]sx`](/docs/apis/app/hooks/src/app) 钩子文件已经能满足我们的需求,当我们需要在 `bootstrap` 之前添加自定义行为或者完全接管 webpack 打包入口时,可以在 `src` 或者入口目录下放置 `index.[tj]s`。 下面有分两种情况进行讨论:
9
9
 
10
- 1. bootstrap 之前添加自定义行为:
10
+ 1. bootstrap 之前添加自定义行为:
11
11
 
12
12
  只需要 `src/index.[tj]s` 默认导出函数:
13
13
 
@@ -3,11 +3,10 @@ title: pages/
3
3
  sidebar_position: 2
4
4
  ---
5
5
 
6
- 应用项目基于文件系统路由的入口标识。
6
+ 应用使用基于文件系统路由时的入口标识。
7
7
 
8
8
  当项目结构为 `Pages 入口` 类型时, 会分析 `src/pages` 目录下的文件得到客户端路由配置。
9
9
 
10
-
11
10
  举例说明,例如以下目录结构:
12
11
 
13
12
  ```bash
@@ -94,7 +93,7 @@ export default const App = ({Component, ...pageProps}:{ Component: React.Compone
94
93
  }
95
94
  ```
96
95
 
97
- 上述 `App` 为访问具体路由匹配到的组件。
96
+ 上述 `Component` 为访问具体路由匹配到的组件。
98
97
 
99
98
  例如以下目录结构:
100
99
 
@@ -5,7 +5,7 @@ sidebar_position: 7
5
5
 
6
6
  应用项目 Storybook 调试文件。
7
7
 
8
- 可以在项目源码目录(src)下创建 `*.stories.[tj]sx` 格式的文件作为 Storybook 的调试文件。
8
+ 可以在项目源码目录 `src/` 下创建 `*.stories.[tj]sx` 格式的文件作为 Storybook 的调试文件。
9
9
 
10
10
  在项目下执行 dev story 命令,支持使用这些文件在 Storybook 中对相关内容进行调试。
11
11
 
@@ -3,7 +3,7 @@ sidebar_position: 0
3
3
  ---
4
4
 
5
5
  # 概览
6
- 本节涵盖了使用 `@modern-js/app-tools` 的所有API。
6
+ 本节涵盖了使用 `@modern-js/app-tools` 的所有 API。
7
7
 
8
8
  import OverviewNav from '@site/src/components/OverviewNav';
9
9
  import sidebarData from '@site/plugins/overview-loader!@site/plugins/overview-data.json';
@@ -1,100 +0,0 @@
1
- ---
2
- title: app.[tj]s
3
- sidebar_position: 2
4
- ---
5
-
6
- Modern.js 框架写法下,该文件可以定制 API Server 的启动逻辑。在使用 `express`, `nest`, `koa` 时,该文件返回对应框架的实例。
7
- 在使用 `egg` 框架时,该文件返回一个 Boot 类;与 `egg` 框架自身的[约定](https://eggjs.org/zh-cn/basics/app-start.html)相同。
8
-
9
- 以下为简单示例:
10
-
11
- ## [Express](https://expressjs.com/)
12
-
13
- ```ts
14
- import express from 'express'
15
-
16
- const app = express();
17
-
18
- app.put('/user', function (req, res) {
19
- res.send('Got a PUT request at /user')
20
- })
21
-
22
- app.use(async (req, res, next) => {
23
- console.info(`access url: ${req.url}`);
24
- next();
25
- });
26
- export default app
27
- ```
28
-
29
- ## [Nest](https://nestjs.com/)
30
-
31
- Nest 虽然有定制的启动器,但本质与 Express、Koa 相同,所以应用工程沿用了 Nest 定制启动器的默认入口:`api/main.ts`。
32
-
33
- 按照 Nest 官方生成器生成的项目结构,在应用工程中使用 Nest 框架写法时,目录结构为:
34
-
35
- ```markdown
36
- api
37
- ├── app.controller.ts
38
- ├── app.module.ts
39
- ├── app.service.ts
40
- ├── lambda
41
- │ └── hello.ts
42
- └── main.ts
43
- ```
44
-
45
- 其中 `api/main.ts` 中的内容与 Nest 官方生成器生成模版有所不同,应用工程中支持了两种模式:
46
-
47
- 不包含内置 Module:
48
-
49
- ```ts
50
- import { defineCustom } from '@modern-js/plugin-nest';
51
- import { NestFactory } from '@nestjs/core';
52
- import { Module } from '@nestjs/common';
53
- import { AppModule } from './app.module';
54
-
55
- export default NestFactory.create(AppModule);
56
- ```
57
-
58
- 包含内置 Module:
59
-
60
- ```ts
61
- import { defineCustom } from '@modern-js/plugin-nest';
62
- import { NestFactory } from '@nestjs/core';
63
- import { Module } from '@nestjs/common';
64
- import { AppModule } from './app.module';
65
-
66
- export default defineCustom(async modules => {
67
- @Module({
68
- imports: [AppModule, ...modules],
69
- })
70
- class MainModule {}
71
-
72
- return NestFactory.create(MainModule);
73
- });
74
- ```
75
-
76
- ## [Koa](https://koajs.com/)
77
-
78
- :::caution 注意
79
- 当没有 `app.ts` 的时候,Modern.js 默认会添加 `koa-body`;当有 `app.ts` 时,需要你自己添加 `koa-body` 解析请求体。
80
- :::
81
-
82
- ```ts
83
- import Koa from 'koa'
84
- import koaBody from 'koa-body'
85
-
86
- const app = new Koa();
87
- app.use(async (ctx, next) => {
88
- console.info(`access url: ${ctx.url}`);
89
- await next();
90
- });
91
-
92
- app.use(koaBody());
93
-
94
- export default app;
95
- ```
96
-
97
- ## [Egg](https://eggjs.org/)
98
-
99
- 使用 Egg 框架时,同样在这个文件中可以自定义启动逻辑;
100
- 但与其他框架不同,egg 中此文件遵循 egg 自身的[规范](https://eggjs.org/zh-cn/basics/app-start.html),而不是 Modern.js 的约定。
@@ -1,9 +0,0 @@
1
- ---
2
- title: .eslintrc.json
3
- sidebar_position: 5
4
- ---
5
-
6
- Modern.js ESLint 全量规则集。
7
-
8
- 具体规则信息请查看:[ESLint 全量规则集](/docs/guides/advanced-features/eslint)
9
-
@@ -1,100 +0,0 @@
1
- ---
2
- title: app.[tj]s
3
- sidebar_position: 2
4
- ---
5
-
6
- Modern.js 框架写法下,该文件可以定制 API Server 的启动逻辑。在使用 `express`, `nest`, `koa` 时,该文件返回对应框架的实例。
7
- 在使用 `egg` 框架时,该文件返回一个 Boot 类;与 `egg` 框架自身的[约定](https://eggjs.org/zh-cn/basics/app-start.html)相同。
8
-
9
- 以下为简单示例:
10
-
11
- ## [Express](https://expressjs.com/)
12
-
13
- ```ts
14
- import express from 'express'
15
-
16
- const app = express();
17
-
18
- app.put('/user', function (req, res) {
19
- res.send('Got a PUT request at /user')
20
- })
21
-
22
- app.use(async (req, res, next) => {
23
- console.info(`access url: ${req.url}`);
24
- next();
25
- });
26
- export default app
27
- ```
28
-
29
- ## [Nest](https://nestjs.com/)
30
-
31
- Nest 虽然有定制的启动器,但本质与 Express、Koa 相同,所以应用工程沿用了 Nest 定制启动器的默认入口:`api/main.ts`。
32
-
33
- 按照 Nest 官方生成器生成的项目结构,在应用工程中使用 Nest 框架写法时,目录结构为:
34
-
35
- ```markdown
36
- api
37
- ├── app.controller.ts
38
- ├── app.module.ts
39
- ├── app.service.ts
40
- ├── lambda
41
- │ └── hello.ts
42
- └── main.ts
43
- ```
44
-
45
- 其中 `api/main.ts` 中的内容与 Nest 官方生成器生成模版有所不同,应用工程中支持了两种模式:
46
-
47
- 不包含内置 Module:
48
-
49
- ```ts
50
- import { defineCustom } from '@modern-js/plugin-nest';
51
- import { NestFactory } from '@nestjs/core';
52
- import { Module } from '@nestjs/common';
53
- import { AppModule } from './app.module';
54
-
55
- export default NestFactory.create(AppModule);
56
- ```
57
-
58
- 包含内置 Module:
59
-
60
- ```ts
61
- import { defineCustom } from '@modern-js/plugin-nest';
62
- import { NestFactory } from '@nestjs/core';
63
- import { Module } from '@nestjs/common';
64
- import { AppModule } from './app.module';
65
-
66
- export default defineCustom(async modules => {
67
- @Module({
68
- imports: [AppModule, ...modules],
69
- })
70
- class MainModule {}
71
-
72
- return NestFactory.create(MainModule);
73
- });
74
- ```
75
-
76
- ## [Koa](https://koajs.com/)
77
-
78
- :::caution 注意
79
- 当没有 `app.ts` 的时候,Modern.js 默认会添加 `koa-body`;当有 `app.ts` 时,需要你自己添加 `koa-body` 解析请求体。
80
- :::
81
-
82
- ```ts
83
- import Koa from 'koa'
84
- import koaBody from 'koa-body'
85
-
86
- const app = new Koa();
87
- app.use(async (ctx, next) => {
88
- console.info(`access url: ${ctx.url}`);
89
- await next();
90
- });
91
-
92
- app.use(koaBody());
93
-
94
- export default app;
95
- ```
96
-
97
- ## [Egg](https://eggjs.org/)
98
-
99
- 使用 Egg 框架时,同样在这个文件中可以自定义启动逻辑;
100
- 但与其他框架不同,egg 中此文件遵循 egg 自身的[规范](https://eggjs.org/zh-cn/basics/app-start.html),而不是 Modern.js 的约定。
@@ -1,9 +0,0 @@
1
- ---
2
- title: .eslintrc.json
3
- sidebar_position: 5
4
- ---
5
-
6
- Modern.js ESLint 全量规则集。
7
-
8
- 具体规则信息请查看:[ESLint 全量规则集](/docs/guides/advanced-features/eslint)
9
-