Skip to content

Commit 5b2cfc2

Browse files
committed
feat:优化IOC,Service使用文档
1 parent e0cda3c commit 5b2cfc2

File tree

2 files changed

+60
-2
lines changed

2 files changed

+60
-2
lines changed

docs/基础功能/IOC.md

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ class Test {
4141

4242
@Inject 修饰器可以将`被@Resource修饰过`的 class 的`实例`注入到指定变量中
4343

44-
例如,我们在`${URSA_ROOT}/model`中创建一个`user.model.ts`,并使用@Resource 将该类实例化后加入到资源容器中
44+
例如,我们在`${URSA_ROOT}/model`中创建一个`user.model.ts`,并使用@Resource 将该类实例化后加入到资源容器中.
45+
46+
**注意**`inject`传入容器名称为被修饰`class的文件名`,而`非class类名`。比如`Resouce`修饰了`service.user.ts`,使用`@Inject('user')`注入。
4547

4648
```javascript
4749
import { Resource } from '@umajs/core'
@@ -118,6 +120,52 @@ export default class Demp extends BaseService {
118120

119121
> @Service@Resource 最大的不同是,在@Service 修饰的方法中可以访问到`ctx`上下文对象,而@Resource 没有
120122
121-
### 在非 Controller 中使用 Service 时,必须传入 ctx 进行实例化才能使用。
123+
124+
### 非 Controller 中使用 @Service 时,必须传入 ctx 进行实例化才能使用或者service类不继承BaseService,使用@Resource容器修饰此class。
122125

123126
[Service 参考文档](./Service.md)
127+
128+
**`service`文件夹目录下使用`@Resource`需要启用非严格目录,初始化Uma实例时设置`strictDir:true`**
129+
130+
```ts
131+
const options: TUmaOption = {
132+
Router,
133+
bodyParser: { multipart: true },
134+
strictDir:true, // 启用非严格模式
135+
ROOT: __dirname,
136+
env: process.argv.indexOf('production') > -1 ? 'production' : 'development',
137+
};
138+
const uma = Uma.instance(options);
139+
uma.start(8058);
140+
```
141+
142+
```ts
143+
// service
144+
import { Inject ,Resource} from '@umajs/core';
145+
import User from '../model/User';
146+
@Resource()
147+
export default class {
148+
149+
@Inject(User) // or @Inject('User')
150+
user: User;
151+
152+
getDefaultUserAge() {
153+
return this.user.getAge();
154+
}
155+
}
156+
```
157+
158+
```ts
159+
// controller
160+
import { BaseController, Path, Result,Inject } from '@umajs/core';
161+
import UserService from '../service/user.service';
162+
163+
export default class Index extends BaseController {
164+
@Path('/user')
165+
test() {
166+
console.log(this.userService.getDefaultUserAge());
167+
return Result.send('get defaultUserAge');
168+
}
169+
}
170+
171+
```

docs/基础功能/Service.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export default class demo extends BaseService {
3535
- 注入之后可直接使用无需再进行实例
3636

3737
```javascript
38+
// controller
3839
import DemoService from '../service/demo.service'
3940

4041
export default class Index extends BaseController {
@@ -49,6 +50,7 @@ export default class Index extends BaseController {
4950
```
5051

5152
```javascript
53+
// service
5254
import { BaseService } from '@umajs/core'
5355

5456
export default class Demp extends BaseService {
@@ -60,6 +62,8 @@ export default class Demp extends BaseService {
6062

6163
### 在非 Controller 中使用 Service 时,必须传入 ctx 进行实例化才能使用。
6264

65+
- 在插件中使用
66+
6367
```javascript
6468
// plugin
6569
import DemoService from '../service/demo.service';
@@ -72,6 +76,8 @@ export default (uma: Uma, options: any = {}): Koa.Middleware => {
7276
};
7377
```
7478

79+
- 在Aspect切面中使用
80+
7581
```javascript
7682
// Aspect
7783
import DemoService from '../service/demo.service'
@@ -88,3 +94,7 @@ export default class Method implements IAspect {
8894
}
8995
}
9096
```
97+
98+
**此外,框架还提供了@Resource@Inject装饰器来实现`IOC容器``依赖注入`**
99+
100+
[IOC 参考文档](./IOC.md)

0 commit comments

Comments
 (0)