gpt4 book ai didi

web-services - Angular 2 服务 : where to keep the data

转载 作者:太空狗 更新时间:2023-10-29 17:26:40 25 4
gpt4 key购买 nike

我已经学习了 angular 2 几个星期了。我对一件事有点困惑。请在此处比较数据的存储/共享方式:

https://github.com/Apress/pro-angular-2ed/blob/master/Angular%202.0/08%20-%20SportsStore%20-%20Orders%20and%20Checkout/SportsStore/app/model/product.repository.ts

这里:

https://github.com/gothinkster/angular2-realworld-example-app/blob/master/src/app/shared/services/comments.service.ts

第一个链接显示了 Adam Freeman 的书“Pro Angular”中是如何完成的。我们可以看到有一个名为 ProductRepository 的服务,它是存储所有产品的地方。这个服务有一个构造函数,它从另一个服务初始化它的数据,称为 StaticDataSource(在本书的后面,它被更改为从 rest api 获取数据)。总结一下:我们有一个组件,它被注入(inject)了一个名为 ProductRepository 的服务。然后它使用此服务的 getProducts() 方法来接收所有产品(实际上这些产品只是存储在该服务的数组中)。

现在让我们看看第二个链接:

在这里我们有一个 CommentsService。这次数据没有存储在这个服务中。我们只有一个名为 getComments() 的方法,它会依次执行来自 api 服务的另一个方法。总结一下:我们有一个组件 (ArticleComponent),它被注入(inject)了 CommentsService。然后它调用该服务上的 getComments(),实际上每次调用它时都会向服务器发送一个 http.get 请求。


现在我的问题是这些方法和结果之间的区别。据我了解,在第一种情况下,所有数据仅从服务器获取一次(当应用程序加载时),然后将其全部存储在名为 SomethingRepository(ProductRepository 等)的服务中。然而,在第二个链接中,每次我们使用服务(在任何组件中)时,我们都会直接从服务器接收数据。

关于它的最佳实践是什么?我只是担心,如果我们使用书中介绍的方法,那么我们将不会总是获得“最新鲜”的可能数据,因为如果另一个客户端同时更改了某些内容,那么我们仍然会处理我们下载时下载的数据应用程序正在加载。另一方面,第二种方法可能会影响我们在组件之间共享数据的可能性。

我真的对此感到困惑,我不确定我是否真的应该将整个模型保留在我的应用程序中并拥有某种存储库,或者第二种方法更好。感谢您的帮助。

最佳答案

随着您在该网站上花费的时间,一组产品不太可能发生变化。在这种情况下,这使得实际缓存所获得的数据更加相关。

一组评论,例如在活跃的留言板上,可以在单页访问期间更改多次。这可能就是为什么他们选择在获取集合时始终从服务调用。尽管在我看来,这不是正确的做法。更好的方法是使用 websocket 连接,并从服务器更新集合,而不是每次都获取集合,很有可能什么都没有改变。

Sooooo,总而言之,这取决于具体情况、集合与集合,以及您想使用哪种缓存。但我的建议是只调用服务器一次,如果它是像产品数组这样的静态数据。而当它是动态数据时,你应该使用websockets来维护集合

关于web-services - Angular 2 服务 : where to keep the data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43394145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com