我有一个AngularJS和TypeScript的应用程序
我想知道在什么情况下我应该使用AngularJS工厂而不是TypeScript静态类
发布于 2017-03-22 06:53:30
ES6/类型记录类没有任何变化。它们只是JavaScript构造函数的语法糖。
通过消除过程可以找到factory
服务的良好用例。
由于service
服务更适合OOP口味的单元:
class FooClass {
static $inject = [...];
constructor(...) {}
}
app.service('foo', FooClass);
对于不使用类构造且不涉及DI的单例单元,value
服务更可取:
app.value('bar', 'bar');
app.value('Baz', BazClass);
factory
服务可用于其余情况。例如,当服务需要DI并返回值时,无法从一个类(函数、原语、函数调用返回的对象)轻松地构造:
app.factory('qux', ($q) => $q.all([...]));
发布于 2017-03-19 20:51:48
两年前我们也有同样的问题。当时的决定是继续使用角系统,只建立角服务。没有棱角工厂或打字静态。原因是我们可以跟踪服务是如何创建和共享的。(硬的)
为了回答你的问题,角工厂是一个仍然需要注入基于角度系统的对象。如果你想保持紧的角度是很好的。
另一方面,打字本比较笼统。当您调用一个静态函数时,它只是一个函数。就像你可以把它导入其他任何地方,而不是角度,然后使用它。
发布于 2017-03-24 10:38:59
有关javascript模式的内容:
在JavaScript中创建对象的一个常见模式是模块pattern.The模式,它涉及从将是您的公共API的函数返回一个对象。
有一个流行的变化模块模式,称为揭示模块模式。揭示模块模式所发生的事情是从显式私有开始,然后对它们是否公开做出选择。
https://stackoverflow.com/questions/42857831
复制