tes*_*123 23 service state angularjs
最近,我和一些同事正在讨论AngularJS服务是否应该有州.我们提出了一些支持和反对的论据,我希望得到关于这个主题的更多想法和反馈.在我的搜索中,我发现了这一点,但似乎没有提到任何明确的最佳实践.在无客户端的世界中,服务永远不应该保持状态,但我开始认为它可能是客户端可接受的,因为它是一个不同的问题.
服务持有状态的原因:
服务不成立的原因:
可能在"for services holding state"部分中解决#2的一种方法是在rootScope上设置包含应用程序当前状态的appState对象.然后将所有州聚集在一个位置,然后您只需在服务中提取所需的内容.我发现了这个并且想知道
Jos*_*ler 15
它可能取决于你所说的"州",但在很多情况下我认为答案是肯定的:服务应该保持状态.
例如,如果您有一个负责与API通信的服务,则该服务可以保持身份验证状态.
顺便说一句,我不确定Ideular在多大程度上对AngularJS服务很重要 - 它们是单身人士,因此本身就有一些状态.您可以(并且在某些情况下必须)在服务上创建幂等方法,但这是一个单独的问题.
Val*_*nov 11
在AngularJS中,服务通过工厂函数传递.基本上它们是可以包含某些状态的对象(例如,用于缓存或存储执行其操作所需的数据).
可以采用/不具有状态的一个好的解决方案是返回包含状态的对象的服务(可能实际上是函数).
看看$http服务:您可以获得此服务的实例调用
var x = $http({url:'...'});
Run Code Online (Sandbox Code Playgroud)
然后打电话给
var result = x.get() //actually `$http.get` is shortcut of this operation
Run Code Online (Sandbox Code Playgroud)
与以下相同ngResource:使用服务可以获得具有某些可以执行所需操作的状态的对象.
所以基本上我认为这是最好的选择:从一个方面你可以通过将可被操作修改的状态移动到单独的对象中来避免"副作用",而不是存储在服务本身中,但可以在该对象中具有特定的状态以便能够存储自定义信息(如身份验证信息等).
| 归档时间: |
|
| 查看次数: |
11393 次 |
| 最近记录: |