在ember中,为什么将商店编写为服务的扩展而不是对象更为有利。
答案 0 :(得分:2)
您应该使用服务。
从表面上看,Ember.Object
和Ember.Service
之间的区别是肤浅的:您可以自行设置的布尔值isServiceFactory
。
除了ember-cli和ember resolver在使用服务(注射,懒惰评估等)时给你的细节,唯一真正的区别在于你如何在心理上看待这些事物。
一个对象是通用的,并没有说明它的用途。服务不太通用。通过调用某个服务,你告诉自己和其他程序员,这个东西具有长期存在的状态,在整个应用程序中共享"。具体来说,你说这个东西的状态一旦实例化就会持续整个应用程序的生命周期,并且被你的多条路线上的路由/控制器/组件使用。
它是一种心理结构,而不仅仅是物理结构,但它可以帮助您和其他人更好地概念化应用程序的组织。
答案 1 :(得分:0)
Ember.Service
可轻松注入控制器,路由,组件,混合和其他服务。它被懒惰地评估,所以只有当你打电话给这项服务时,例如,通过this.get('store')
,它才会加载商店服务。鼓励模式使用服务而不是全局变量,或者在较低级别注入javascript对象。