- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是nestJS的新手,也找不到太多关于它的信息,所以我也不敢深入研究它的源代码(也是 typescript 的初学者)。我真的很想知道这些东西是如何工作的,我将在下面提到
第一的:
我正在观看我们有名为 Task 的服务的教程
export class TasksController {
constructor(private readonly tasksService: TasksService) { }
Get()
index() {
this.tasksService.all();
}
}
TasksService
仅用作一种类型,而不是我猜的类。在普通的 typescript 中,我会写这样的东西
let task = new TasksController(new TasksService())
this.tasksService.all();
@Injectable()
,
@Inject()
,
@InjectRepository()
等作品。原始文档有点困惑:(
最佳答案
嵌套它建立在 Angular 的思想之上处理很多 Dependency Injection和 Separation of Concerns .这些想法来自更多面向对象的语言,如 Java 和 C++,尤其是来自像 Spring/SpringBoot 这样的框架。 .
介绍
除此之外,Nest 通过将提供程序“连接”在一起做了很多事情,让开发人员不必担心实例化每个类,而是让框架为他们处理。我会先谈谈你的第二点,希望它有助于阐明第一点。
Injectable Inject 和 InjectRepository 装饰器
typescript 中的所有装饰器都用于设置元数据。 Nest 将读取此元数据并做出相应的响应。在大多数情况下,这一切都是通过 DI 系统的设置方式在幕后处理的。
@Injectable()
告诉 Nest “嘿,这个类是一个提供者*,因此它应该能够将值注入(inject)其中并能够注入(inject)其他提供者。您的所有服务将被标记为 @Injectable()
以及一些特殊的类。@Inject()
是一个接受注入(inject) token **的装饰器。这告诉 Nest “嘿,我想注入(inject)与我刚刚给你的 token 相关的提供程序。创建一个实例并在此处注入(inject)它。 token 可以是字符串或符号,但它必须是唯一的(即不与另一个冲突) provider). 使用可以多次使用同一个 token 。@InjectRepository()
/@InjectModel()
这些是特殊的@Inject()
使用标准 @Inject()
的装饰器引擎盖下的装饰器,以保持注入(inject) token 与 Nest 已经在 TypeormModule
中创建的注入(inject) token 一致和 MongooseModule
@Injectable()
或不。 (
@Controller()
和其他装饰器确实设置了这个)。然后它查看构造函数中的类并确定该类是否具有注入(inject) token (除非另有说明,否则类仅由名称确定***)。如果没有,它会检查是否有
@Inject()
装饰器并找到它的特定使用值(value)。如果它找到一个类,它将实例化它,将其保存在缓存中,并将其提供给该类。如果是值,则直接提供给类。
@Injectable()
他们不是正常的提供者。
关于typescript - nestjs 如何工作并使用参数运行构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59867345/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!