Skip to content

Commit cbec72b

Browse files
authored
docs: add more docs (#4384)
* docs: add more docs * fix: wrap * docs: update custom decorator * docs: update llm txt * docs: sync guard en * docs: update new docs * docs: update * docs: update * docs: update more dco
1 parent 4d2c5a4 commit cbec72b

34 files changed

+2531
-677
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
slug: release/4.0.0-beta
3+
title: Release 4.0.0-beta
4+
authors: [harry]
5+
tags: [release]
6+
---
7+
8+
这是全新的 Midway 4.0 的变化,这是一个非常重大的版本。
9+
10+
- 全局变化
11+
- 框架支持从 Node.js >=20 开始
12+
- 默认开启 asyncLocalStorage
13+
- 编程范式
14+
- 不再以黑盒方式提供框架启动时的目录文件扫描自动绑定能力,改为显式声明,每个组件都可以有自己的绑定和加载方式
15+
- 组件包查找规范变化,现在会查找 `index.ts``configuration.ts`,以及 `package.json` 中 main 定义的路径
16+
- 统一规范函数式的导出路径,为组件包下的 `functional` 路径,如 `@midwayjs/core/functional`
17+
- 【core】
18+
- 通用能力
19+
- 由于使用率较低且影响依赖注入容器逻辑,移除了流程控制 `Pipeline` 相关的能力
20+
- 移除之前版本中框架启动时的目录文件扫描自动绑定能力,现在需要显式增加一个 file detector,可以自由配置其需要扫描和忽略的目录或者文件
21+
- 移除了会和 validate 的转换产生歧义的请求参数自动 DTO 转换功能,现在自动转换仅在 `validate` 或者 `validation` 组件开启时生效
22+
- `onReady` 等生命周期现在增加了超时机制,默认 30s
23+
- 函数式编程
24+
- 提供与 `@Configuration` 同样功能的 `defineConfiguration` 方法
25+
- 提供内置的 hooks 方法,如 `useContext`, `useLogger`, `useInject`, `useConfig`, `useApp`, `useMainApp`
26+
- 提供了函数式方法的导出规范,新开发的 hooks 放在 `functional` 目录中,使用子模块方式导出
27+
- 装饰器部分
28+
- 为了更好的管理元数据,重构了 `DecoratorManager`,增加新的 `MetadataManager`,增加了更加方便的聚合和拷贝元数据的能力
29+
- 明确各种装饰器继承的情况,默认情况下,类装饰器和参数装饰器不继承,属性装饰器和方法装饰器继承
30+
- 使用 `@MainApp()` 代替 `@App()` 空参数
31+
- 使用 `@Config(ALL)` 替换为更为明确的 `@AllConfig()` 装饰器
32+
- 移除 `@Configuration` 中的 `conflictCheck``detectorOptions`, 这些配置将移动到 `detector`
33+
- `DecoratorManager` 中的 `listPrelaodModules` 调整为 `listPreStartModule``savePreloadModule` 调整为 `savePreStartModule` ,使其语义更加明确
34+
- 依赖注入
35+
- 移除了 `container.get``container.getAsync` 的一部分无用的参数
36+
- 优化了循环依赖时展示的依赖链路信息以及 definition 未找到时的输出信息
37+
- 单例对象现在和 `registerObject` 的对象存储的位置一致了
38+
- 增加了一个动态依赖注入容器,用于在开发期动态替换实例,支持 HMR 功能
39+
- 框架机制
40+
- `BaseFramework` 移除了令人疑惑的 container 相关 hook 方法,现在都统一使用 `applicationInitialize`
41+
- 移除框架的 `MidwayFrameworkType`,以及对应的 `getFrameworkType()` 方法
42+
- 移除了特定框架下令人疑惑的 `contextLoggerApplyLogger``contextLoggerFormat` 配置,现在如果要配置框架特定的 logger,使用 `setFrameworkLoggerName` 方法
43+
- `ServiceFactory``DataSourceManager` 现在启动可以通过 `initClients` 的参数 `concurrent` 支持并发,由组件自行控制是否支持
44+
- `DataSourceManager` 原有的 `cacheInstance``validateConnection` 选项废弃
45+
- `MidwayConfigServce` 在获取配置时可以增加默认值
46+
- 增加服务发现基础功能,增加了 `consul``redis``etcd` 的实现
47+
- 【decorator】移除,API 都移动到 `@midwayjs/core`,不再单独提供 4.x 版本
48+
- 【async-hooks-context-manager】现在默认开启 async_local_storage,代码合并至 core 模块中
49+
- 【axios】移除了废弃的 `axios` 导出
50+
- 【socketio】移除了内置的 `socket.io-redis`
51+
- 【validate】
52+
- 由于固化了 Joi 作为验证器,不再更新
53+
- 移除 `@Rule` 作为类装饰器的功能
54+
- 移除属性 `@Rule` 参数传递类本身的功能
55+
- 【validation】新增组件,替代原有 validate 组件
56+
- 支持多种验证器,如 Joi, zod, class-validator,提供内置的 i18n 支持
57+
- 可自定义扩展验证器
58+
- 【mock】
59+
- 由于移除了框架启动的扫描能力,如果有大量历史测试不方便修改,可以使用提供的 `createLegacyApp``createLegacyLightApp``createLegacyFunctionApp` ,对应之前的 `createApp``createLightApp`, `createFunctionApp`
60+
- 移除了 `createApp``createLightApp`, `createFunctionApp` 方法的最后一个参数,现在额外指定组件可以写到 `options.imports`
61+
- 【sequelize】
62+
- 移除老版本配置的兼容代码,以及历史装饰器导出,如 `@BaseTable`
63+
- 移除默认启动时数据源连接校验 `validateConnection`,如有需求,可以在配置中单独开启
64+
- 【tags】移除,不再提供 4.x 版本
65+
- 【processAgent】移除,不再提供 4.x 版本
66+
- 【event-emitter] 新增组件,提供事件触发和监听能力支持

site/docs/built_in_service.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,11 @@ export class HomeController {
135135

136136
一般用来获取当前的配置,API 如下:
137137

138-
| API | 返回类型 | 描述 |
139-
| ------------------ | -------- | ------------------------ |
140-
| addObject(obj) | | 动态添加配置对象 |
141-
| getConfiguration() | Object | 返回当前合并好的配置对象 |
142-
| clearAllConfig() | | 清空所有配置 |
138+
| API | 返回类型 | 描述 |
139+
| ------------------------------------------- | -------- | ------------------------ |
140+
| addObject(obj) | | 动态添加配置对象 |
141+
| getConfiguration('configKey', defaultValue) | Object | 返回当前合并好的配置对象 |
142+
| clearAllConfig() | | 清空所有配置 |
143143

144144

145145

@@ -642,4 +642,3 @@ export default {
642642

643643
健康检查的执行端在业务或者组件的生命周期中实现,具体请查看 [生命周期](/docs/lifecycle#onhealthcheck)
644644

645-

site/docs/component_development.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ declare module '@midwayjs/core/dist/interface' {
179179

180180
组件和应用本身略微有些不同,差异主要在以下几个方面。
181181

182-
- 1、组件的代码需要导出一个 `Configuration` 属性,其必须是一个带有 `@Configuration` 装饰器的 Class,用于配置组件自身能力
182+
- 1、组件的代码需要有一个入口,其必须是一个包含 `@Configuration` 装饰器或者 `defineConfiguration` 的文件,并且需要将其导出
183183
- 2、所有 **显式导出的代码 **才会被依赖注入容器加载,简单来说,所有 **被装饰器装饰** 的类都需要导出,包括控制器,服务,中间件等等
184184

185185
比如:

site/docs/controller.md

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -625,42 +625,11 @@ async getUser(@Query('id') id: boolean): Promise<User> {
625625
}
626626
```
627627

628-
如果是复杂类型,如果指定的类型是 Class,将会自动转换为该类的实例。
629-
630-
```typescript
631-
// class
632-
class UserDTO {
633-
name: string;
634-
635-
getName() {
636-
return this.name;
637-
}
638-
}
639-
640-
@Get('/')
641-
async getUser(@Query() query: UserDTO): Promise<User> {
642-
// query.getName()
643-
}
644-
```
645-
646-
如果不希望被转换,可以使用 Interface。
647-
648-
```typescript
649-
interface User {
650-
name: string;
651-
}
652-
653-
@Get('/')
654-
async getUser(@Query() query: User): Promise<User> {
655-
// ...
656-
}
657-
```
658-
659-
628+
其他类型框架不会处理,如需转换请引入 [validation 组件](./extensions/validation)
660629

661630
## 参数校验
662631

663-
参数校验功能由 validate 组件提供,具体可以参考 [validate 组件](./extensions/validate)
632+
参数校验功能由 [validation 组件](./extensions/validation) 提供
664633

665634

666635

0 commit comments

Comments
 (0)