将 react-redux 集成到现有 Angularjs 应用程序中

Integrating react-redux into an existing Angularjs application

我正在考虑将 react-redux 集成到 Angularjs 已有 3 年历史的代码库中。我不想一次重构所有代码库,而是通过我的团队将开发的新功能逐步引入 react-redux。

  1. 这样做有什么最佳做法吗? (任何资源将不胜感激)
  2. 旧功能(用 ng 编写)是否可以包含 react-redux 部分,或者我必须重写它?
  3. 如何避免进行相同的 API 调用? (如果两者需要相同的资源)
  4. 我应该一起避免更改吗?
  1. 我不知道有什么具体的最佳实践,但我最近开始使用 ng-redux(https://github.com/angular-redux/ng-redux) in my current Angular 1.5 app to great effect so far. It's been really nice for gaining the benefits of uni-directional data flow and structured state management from Redux while still maintaining the Angular core. This will also let you migrate over gradually, one entity model at a time. Although I haven't used it myself, I see that https://github.com/ngReact/ngReact 可用于在 Angular 指令中包装 React 组件。如果您正在寻找最终完全独立使用 react-redux,这可能是一个很好的垫脚石。
  2. 将 ng-redux 集成到现有功能中需要进行一些重构,但如果您已经在控制器外部维护数据模型,那也不错。 Ng-redux 允许您直接从您的控制器调用 Action Creator 函数,这通常会替换 UI 动作事件处理程序。
  3. 在使用 ng-redux 时,您可以使用带有 redux-thunk 的异步操作轻松进行 API 调用。您可以只使用现有的 Angular 服务向您的 API 发出请求,然后使用响应分派标准操作来更新状态。
  4. 我认为至少集成 ng-redux 来标准化应用程序的数据流绝对是值得的。它将有助于更好地组织您的项目,并可能根据您重构的方式提高性能。不过,我不太清楚 ngReact 的好处,除非你希望慢慢转换组件,直到你可以完全放弃 Angular 核心。

我已经 成功地 迁移了我在原始问题中指出的 brown-field 限制下的应用程序。

解决方案基于两种方法:

  1. 小组件 - 是几乎包含在内的组件。例如,通知下拉列表。
  2. 我还不能迁移的应用程序的全部部分 - 基本上一些 routes/views 仍然写在 Angular.

两种方法都使用与此处建议的技术类似的技术: http://softeng.oicr.on.ca/chang_wang/2017/04/17/Using-AngularJS-components-directives-in-React/?utm_source=reactnl&utm_medium=email

提示:如果您的 Angular 依赖项得到妥善管理,事情会容易得多。