angularjs – 什么是类型友好的注射?

the AngularJS documentation,解释了工厂,服务,值,常量和提供者之间的差异。

At the end,我们有一个比较表:

其中一行是“类型友好注入”。我不明白是什么。

这意味着什么?另外,这意味着,为了使一个值具有这种“类型友好的注入”,是以“直接使用新操作符的急切初始化”为代价的?

在AngularJS中,您可以通过多种方式注入依赖关系:

>在指令链接功能中按位置
>在指令定义中按名称
>在控制器函数中按名称
>在工厂函数中按名称
>在服务函数中按类型

类型友好的注入允许你通过引用调用构造函数

myApp.service('Pattern',["Infinity",RegExp]);

而不是通过使用new关键字的explicity:

myApp.factory('Pattern',function(Infinity) 
  {
  return new RegExp(Infinity);
  } 
 ]);

要么

function goInfinity(Infinity)
  {
  return new RegExp(Infinity);
  } 

goInfinity.$inject = ["Infinity"];
myApp.factory('Pattern',goInfinity);

The Service recipe produces a service just like the Value or Factory recipes,but it does so by invoking a constructor with the new operator. The constructor can take zero or more arguments,which represent dependencies needed by the instance of this type.

Eager初始化意味着一个常数配方必须返回一个构造函数,以便使用上述语法:

function RegExpConstant() 
  {
  return new RegExp(Infinity);
  } 

myApp.constant('Pattern',RegExpConstant)

而不是返回函数,对象或字面值。

命名来自Java:

A service is a well-known set of interfaces.
A service provider is a specific implementation of a service.
A factory is an object that returns an object reference to another object

参考文献

> Dependency Injection in Angular 2
> The main goals of Angular 2 and how they will be achieved
> Vojta Jina: Dependency Injection – NG-Conf
> AngularJS: Developer Guide – Providers,Service Recipe
> AngularJS: The Bad Parts
> Dependency Injection: Syntax Sugar Over Function Composition
> ServiceFinder (JAX-WS RI)

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...