mar*_*c08 6 web-services angular2-services angular
我已经学习了角度2几周.我有点困惑一件事.请比较这里存储/共享数据的方式:
和这里:
第一个链接显示了Adam Freeman的书"Pro Angular"中是如何完成的.我们可以看到有一个名为ProductRepository的服务,那就是存储所有产品的地方.这个服务有一个构造函数,它从另一个服务初始化它的数据,称为StaticDataSource(书中的后面更改为从其余的api获取数据).总而言之:我们有一个组件,它会注入一个名为ProductRepository的服务.然后它使用此服务中的getProducts()方法来接收所有产品(实际上它们只是存储在该服务的数组中).
现在让我们看看第二个链接:
在这里,我们有一个CommentsService.这次数据不存储在此服务中.我们只使用名为getComments()的方法,该方法又从api服务执行另一种方法.总结一下:我们有一个组件(ArticleComponent),它会注入CommentsService.然后它在该服务上调用getComments(),实际上每次调用时都会向服务器发送一个http.get请求.
现在我的问题是这些方法与后果之间的区别.据我所知,在第一种情况下,所有数据仅从服务器获取一次(当应用程序加载时),然后将其全部存储在名为SomethingRepository(ProductRepository等)的服务中.然而,在第二个链接中,每次我们使用服务(在任何组件中),我们都直接从服务器接收数据.
它的最佳实践是什么?我只是担心,如果我们使用书中提出的方法,那么我们不会总是获得"最新鲜"的可能数据,因为如果另一个客户在此期间改变了某些东西,那么我们仍然处理我们下载时下载的数据应用正在加载.另一方面,第二种方法可能会影响我们在组件之间共享数据的可能性.
我真的对此感到困惑,我不确定我是否应该将整个模型保留在我的应用程序中并拥有某种存储库,或者第二种方法可能更好.感谢您的任何帮助.
当您在该网站上花费时间时,一系列产品不太可能发生变化。在这种情况下,这使得实际缓存所获得的数据更加相关。
评论的集合(例如活动留言板中的评论)可以在单个页面访问期间多次更改。这可能就是为什么他们选择在获取集合后始终从服务中调用的原因。尽管在我看来,这不是正确的做法。更好的方法是使用 websocket 连接,并从服务器更新集合,而不是每次都获取集合,因为很可能什么都没有改变。
Sooooo,总而言之,这取决于具体情况、集合到集合、您想使用哪种缓存。但我的建议是,如果它是产品数组等静态数据,则仅调用服务器一次。当它是动态数据时,你应该使用 websockets 来维护集合
| 归档时间: | 
 | 
| 查看次数: | 1898 次 | 
| 最近记录: |