为什么需要注入服务、常量等?

Why do Services, Constants, Etc Need to be Injected?

本文关键字:常量 服务 注入 为什么      更新时间:2023-09-26

假设我创建了一个AngularJs服务。我将它附加到我的模块:

angular.module('fooModule').service('myService', function(){
    var service = {
        logSomething: function() {
            console.log('Service logged something');
        }
    };
    return service;
});

等等。它就在那里——常量、工厂、提供商等也是如此。为什么我需要把这个服务、常量等注入到我的控制器中呢?它本质上是否与c#中的"使用"原则相同——唯一的目的是避免冲突的变量/函数名称?这似乎没有意义,因为我仍然要写myService.logSomething(),这就澄清了整个命名空间的问题。

或者它以某种方式加速加载?但我不知道那是怎么回事。

您还没有实际将此服务注入到任何东西中;此时它只是一个单例。是的,你已经在你的angular模块中注册了它,但是你的模块中没有其他东西知道它。直到你真正注射它才有效。以一种非常抽象的方式,你可以把Angular中的依赖注入想象成usingimport,但它实际上更像是在构造函数中提供一个初始化变量(实际上,它就是这样)。

如果你想知道为什么依赖注入通常是一个很好的设计实践,这篇文章应该会让你感兴趣。