2016-12-23 45 views
7

背景故事通信应用:目前我公司已经有许多不同的内部应用程序是独立开发的,然后被的iFrame到网站“门户”。这些框架之间存在很多喋喋不休(通常检查状态或为其他应用程序设置某些状态),这些框架都托管在同一个域中(不跨域)。这种方法工作正常,但最近我们正在考虑转向REDX,因为这种方法看起来很肮脏,各个团队在全球范围内都抛弃了大量的数据。 会像终极版能够处理多个“应用”“的方式,不只是阅读和window.top设置变量或会变成这样的不当使用终极版更均匀沟通”?多阵营,虽然单店Redux的

回答

6

帧具有不同的上下文。您必须参考父母商店,例如通过window展示商店(及其dispatch)。这可以说是比随机变量更清洁。这说:如果他们是真正独立的应用程序,那么我可能会选择通过每个框架中的网络套接字来实现真正的独立,通过从后端(Elixir,Node等)提供的实时更新进行通信,这很好适合任务。这样做可以在分离出应用程序时提供更大的灵活性(例如,我只想在自己的窗口中运行应用程序Foo),获取帧间通信到公共总线上,以便查看这些消息中的任何其他内容可等

1

是的,你确实可以在顶级页面和调度行为给它一个共同的终极版商店。然而,如果你想让不同的iFrames听它更新,那么你需要一些Redux中间件来观察状态变化并允许iFrames订阅这些事件。

我希望,虽然,而这可能会构造代码,好一点与启动,如果你有很多不同的团队的所有猴子修补一个终极版店您的代码就会脏很快。

我建议在顶级页面中有一个pub/sub库,例如postal.js,用于在不同的应用程序之间传递消息,然后为共享数据创建一个简单的名称间隔对象存储,并保护它免于错过与无缝不可变的库一起使用。

1

这种方法工作正常,但最近我们正在考虑迁移到 Redux的,因为这种方法看起来很脏,各队都折腾数据对window.top(全球)很多 。

当事情到了这一步,我会考虑清理代码或实施REDX。我通常避免在全球或窗口上存储任何东西。

我会强烈建议执行终极版如果

  • 公司将使用该门户一会儿
  • 您想了解Redux的(这是真的很酷)
  • 有人在球队已经熟悉与终极版

为什么终极版?

  • 如果你正在跟踪跨倍数观点或帧的状态,这是伟大的,它利用真理的单一来源的所有国家
  • 超级模块化和喜悦在团队环境
  • 一起工作

根据您的描述,它看起来像你的REDX是你的问题的完美解决方案。

Redux是非常直接的,但取决于您的技术堆栈的其他部分是什么样子,您可能需要使用某种带有redux的中间件。

+0

实现redux并不能解决单独应用程序之间通信的根本问题,但是,不是吗?这是更清洁的INB,你只能在包含窗口上的商店,但你仍然有“竞争”该商店。 –