在Ember中扩展商店作为对象或服务更好吗?

时间:2015-08-21 07:17:19

标签: ember.js

在ember中,为什么将商店编写为服务的扩展而不是对象更为有利。

2 个答案:

答案 0 :(得分:2)

您应该使用服务。

从表面上看,Ember.ObjectEmber.Service之间的区别是肤浅的:您可以自行设置的布尔值isServiceFactory

除了ember-cli和ember resolver在使用服务(注射,懒惰评估等)时给你的细节,唯一真正的区别在于你如何在心理上看待这些事物。

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

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

答案 1 :(得分:0)

Ember.Service可轻松注入控制器,路由,组件,混合和其他服务。它被懒惰地评估,所以只有当你打电话给这项服务时,例如,通过this.get('store'),它才会加载商店服务。鼓励模式使用服务而不是全局变量,或者在较低级别注入javascript对象。