在Ember中把store扩展为对象还是服务更好?



为什么把store写成服务的扩展而不是对象更有利?

你应该使用服务

表面上看,Ember.ObjectEmber.Service之间的区别是表面的:一个布尔值isServiceFactory,您可以自己设置。

除了ember-cli和ember解析器在使用服务(注入、惰性求值等)时给你带来的好处之外,唯一真正的区别在于你如何从心理上看待这些事情。

对象是泛型的,没有说明它的目的。服务不那么通用。通过调用服务,你告诉自己和其他程序员"这个东西有一个长期存在的状态,在整个应用程序中共享"。具体来说,你是在说,一旦实例化,这个东西的状态就会持续整个应用的生命周期,并且会被多个路由上的路由/控制器/组件使用。

这是一种心理结构,而不是物理结构,但它可以帮助你和其他人更好地概念化应用程序的组织。

Ember.Service很容易被注入到控制器、路由、组件、mixins和其他服务中。它是惰性计算的,所以只有当你调用这个服务时,例如,通过this.get('store'),它才会加载存储服务。我们鼓励使用服务而不是全局变量,或者在底层注入javascript对象。

相关内容

  • 没有找到相关文章

最新更新