【问题标题】:AngularJS : why use "factory" when you say "services"?AngularJS:为什么在说“服务”时使用“工厂”?
【发布时间】:2014-08-08 04:09:48
【问题描述】:

这可能是一个愚蠢的问题,也许只是关于措辞。 我正在学习 AngularJS 并阅读了很多文章,我看到了一个奇怪的事情发生。 很多人说“使用服务”,但在代码中他们使用“工厂”代替。

例如,这些问题: Pass variables to AngularJS controller, best practice?, Angularjs sharing methods between controllers

为什么人们说'A'并使用'B',你不能只说“你可以使用工厂”吗? 我问这个问题是因为我看到它不止几次,这让我感到困惑......服务和工厂是两个不同的东西,对吧?

【问题讨论】:

标签: angularjs service


【解决方案1】:

除了一个是新的而另一个不是之外,两者之间确实没有区别。除此之外,它们都是单例和可注射的。您也可以以几乎相同的方式使用它们。

我也和你一样困惑,但由于相似性,我现在倾向于互换使用这个术语。

【讨论】:

    【解决方案2】:

    我认为单词可以互换的原因归结为它们之间的相似性。在大多数对话的背景下,您对其中一个话题的看法几乎不会适用于另一个话题。只要记住这一点,更重要的是了解其中的区别,它看起来会不那么混乱。

    请参阅下面的问题以获得有关差异的详细解释(cmets 中的其他良好参考资料)。

    confused about service vs factory

    【讨论】:

      【解决方案3】:

      工厂是实际创建您的服务的地方;无论如何,它最终都会成为一项服务。在 AngularJS 中,您可以通过三种方式声明服务;使用value,它几乎可以创建一个静态服务实例;使用factory,它允许您在创建它之前对其进行配置;使用provider,它甚至可以让您覆盖依赖项。

      请参阅我对您问题的评论中的相关问题,如果您查看其源代码,您还可以找到有关 AngularJS 文档 (https://docs.angularjs.org/guide/services) 的详细信息。

      为了简单起见,这与您不会在另一个上下文中对“构造函数”和“实例”使用相同的词的原因相同。

      【讨论】:

      • 那么我能说“工厂”是一个构造函数,我们称它的实例为“服务”吗?
      • 不完全是,但你明白了。由于服务始终是单例的,所以不一样;让事情变得更复杂一点,你的服务 * 可以 * 是一个构造函数(它是 JavaScript!你的服务可以是一个对象、一个字符串、一个函数......) - 最后,服务对象本身,不管它是什么, 将由工厂创建。
      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 2013-09-27
      • 2013-04-20
      • 2015-11-25
      • 2019-12-09
      • 2014-12-26
      • 2013-05-11
      相关资源
      最近更新 更多