Javascript 何时需要使用状态管理?(角度、反应、Vue)

Javascript 何时需要使用状态管理?(角度、反应、Vue),javascript,angular,reactjs,vue.js,frontend,Javascript,Angular,Reactjs,Vue.js,Frontend,我是一名初级前端开发人员。我的公司是一家小公司,开始使用Angular有几个月了。包括我在内,我们的前端应用程序由两个人编写 这是一个通用的前端框架问题。你什么时候真正意识到你的应用程序需要使用状态管理库???在组件中编写业务逻辑是否不好 这是一个特定于Angular的问题:因为Angular有DI,为什么要使用第三方redux,比如中央存储(NGRx,NGXs),而不是每个模块的可观察服务??我已经编写Angular应用程序几年了,我从来没有找到使用NGRx或状态管理库的理由。角度是非常复杂的

我是一名初级前端开发人员。我的公司是一家小公司,开始使用Angular有几个月了。包括我在内,我们的前端应用程序由两个人编写

这是一个通用的前端框架问题。你什么时候真正意识到你的应用程序需要使用状态管理库???在组件中编写业务逻辑是否不好


这是一个特定于Angular的问题:因为Angular有DI,为什么要使用第三方redux,比如中央存储(NGRx,NGXs),而不是每个模块的可观察服务??

我已经编写Angular应用程序几年了,我从来没有找到使用NGRx或状态管理库的理由。角度是非常复杂的开始,所以我的建议是从小处开始。当您需要使用状态管理库时,您将知道它

可观察的数据模式在大部分情况下运行良好,但在某一点上,您的项目可能会变得很大,而这些服务的数量可能会变得非常混乱。在这一点上,也许你会考虑一个状态管理库。这只是我的观点,但我还没有参与过一个规模如此之大的项目,在这个项目中,可观测的数据服务是不够的

我通常不使用Javascript编写业务逻辑。为此,我一直在使用服务器技术。如果您编写业务逻辑,我会将它们全部放在易于重用和测试的服务中。这也可以鼓励纯函数,这可以帮助您避免状态地狱。只是刚开始时遇到的事情。编写测试用例将有所帮助,因为您将更好地使用Angular,并且以后可能需要重构。测试你可以运行可以给你信心没有打破

祝你好运

角度样式指南有一些很好的指导原则:

如中所述,您的业务逻辑应该存在于服务中,而组件应该只负责与UI相关的逻辑

服务是在彼此不认识的类之间共享信息的好方法

在Angular中,不建议将业务逻辑写入组件。所有组件都有自己的状态,这些状态描述了它们实现的UI

也就是说:

何时需要使用状态管理

一般来说,随着应用程序的增长,跟踪事件和数据更改、获取数据的方式、错误处理的位置以及缓存数据的方式将变得更加困难。在某些条件下,很快就很难预测应用程序的行为

显然需要协调应用程序中的所有参与者(UI、后端、web工作人员…),这些参与者同时更新状态


国家管理就是要设计一个明确的规范,说明这些参与者之间以及共享/地方政府之间如何互动。

我建议阅读这篇文章:在规划解决方案之前等待事态发展不是一个好方法。不要犯你的错误。在小型应用程序上使用NGRX。再做一次。然后又是。到第三个应用程序时,你将知道什么时候需要使用它,什么时候不需要。康拉德,你现在工具箱里有了一个额外的工具。我也不认为NGRX everything是一个好的解决方案。我不相信让一个项目变得比时间和维护都需要的复杂。其他开发人员可能需要在这方面进行工作,现在他们必须在一个小应用程序上学习复杂的设计模式(仅举一个例子)。可观测数据服务是状态管理的一个可行选项。为了更清楚一点,我编辑了我的答案,但如果你有充分的理由这么做的话,你应该使用NGRX,而不仅仅是因为它是一个热门话题。状态管理有很多选择