【发布时间】:2017-04-13 13:52:22
【问题描述】:
我已经学习 Angular 2 几个星期了。我对一件事有点困惑。请在此处比较数据的存储/共享方式:
这里:
第一个链接显示了在 Adam Freeman 的名为“Pro Angular”的书中是如何完成的。我们可以看到有一个名为 ProductRepository 的服务,它就是存储所有产品的地方。该服务有一个构造函数,它从另一个名为 StaticDataSource 的服务初始化其数据(后来在本书中将其更改为从其余 api 获取数据)。 总结一下:我们有一个组件,它被注入了一个名为 ProductRepository 的服务。然后它使用该服务中的 getProducts() 方法来接收所有产品(实际上这些产品只是存储在该服务的一个数组中)。
现在让我们看看第二个链接:
在这里,我们有一个 CommentsService。这次数据不存储在此服务中。我们只有一个名为 getComments() 的方法,它依次从 api 服务执行另一个方法。 总结一下:我们有一个组件(ArticleComponent),它被注入了 CommentsService。然后它在该服务上调用 getComments(),实际上每次调用它都会向服务器发送一个 http.get 请求。
现在我的问题是关于这些方法之间的区别和后果。据我了解,在第一种情况下,所有数据仅从服务器获取一次(当应用程序加载时),然后将其全部存储在名为 SomethingRepository(ProductRepository 等)的服务中。 然而,在第二个链接中,每次我们使用服务(在任何组件中)时,我们都会直接从服务器接收数据。
关于它的最佳实践是什么?我只是担心如果我们使用书中介绍的方法,那么我们将不会总是获得“最新”的可能数据,因为如果另一个客户端同时更改了某些内容,那么我们仍然会处理我们下载时下载的数据。应用程序正在加载。另一方面,第二种方法可能会影响我们在组件之间共享数据的可能性。
我对此感到非常困惑,我不确定我是否真的应该将整个模型保留在我的应用程序中并拥有某种存储库,或者第二种方法可能更好。感谢您的帮助。
【问题讨论】:
标签: web-services angular angular2-services