gpt4 book ai didi

angularjs - 什么是类型友好注入(inject)?

转载 作者:行者123 更新时间:2023-12-03 10:15:54 26 4
gpt4 key购买 nike

the AngularJS documentation ,有一个工厂、一个服务、一个值、一个常数和一个提供者之间的区别的解释。

At the end ,我们有一个对照表:
Comparison table
其中一行是“类型友好的注入(inject)”。我无法理解它是什么。

这意味着什么?此外,为了使值具有这种“类型友好的注入(inject)”,以“直接使用 new 运算符进行急切初始化”为代价,这意味着什么?

最佳答案

在 AngularJS 中,您可以通过多种方式注入(inject)依赖项:

  • 在指令 link位置函数
  • 在指令定义中按名称
  • 在 Controller 函数中按名称
  • 在工厂函数中按名称
  • 在服务功能中按类型

  • 类型友好的注入(inject)允许您通过引用隐式调用构造函数:
    myApp.service('Pattern', ["Infinity", RegExp]);

    而不是明确地使用 new关键词:
    myApp.factory('Pattern', 
    ["Infinity", 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.



    急切初始化意味着 constant recipe 必须返回一个构造函数才能使用上述语法:
    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 - 什么是类型友好注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667321/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com