【问题标题】:Strategies for data coupling when working with node.js + react server side rendering + flux + mongodb使用 node.js + react 服务器端渲染 + 通量 + mongodb 时的数据耦合策略
【发布时间】:2015-11-30 06:56:31
【问题描述】:

我试图找到一种方法来降低处理三层信息时出错的可能性。让我试着解释一下。

我正在构建一个网络应用程序:

  • Node.js
  • mongodb
  • react(使用服务器端渲染)
  • 通量 (alt.js)
  • 浏览

数据流可以是以下两种之一:

  1. 用户请求页面 -> 数据助手从 db 中获取正确的数据 -> 传递给 alt.js 引导程序以填充所有商店 -> 要求做出反应以构建应用程序 (renderToString) 和渲染查看 -> 重新调整到客户端

  2. 用户更新某些东西 -> 发送通量操作(使用 ajax 调用服务器) -> 数据助手准备要保存在数据库中的数据 -> 保存并将结果返回给客户端 -> 存储更新状态-> react 组件更新他的视图

需要了解数据结构的三个地方:

  1. 服务器中的数据助手,从数据结构中导出适当的数据并发送到 mongodb 或从 db 中获取数据并构建数据结构
  2. 在用户操作后更新状态的通量存储
  3. 从状态渲染视图的组件

这意味着如果我想更改数据结构(即使更改其中一个属性的名称),我将不得不在三个地方进行更改,这可能会非常冒险并且容易出错。

有没有办法在JS中实现数据耦合?

【问题讨论】:

  • 在大多数项目中,数据是相当静态的,并且是设计中首先要解决的问题之一。如果您的数据结构将发生很大变化,您可以使用工厂动态显示数据。另一种选择可能是中继。
  • 不会有太大变化,我只是想让开发者更容易维护和添加新功能。
  • 通量存储不需要知道数据结构,因为它正在获取一条记录或一组记录。根据您希望如何显示数据,视图需要知道。中继可能是最接近您正在寻找的东西。中继的想法似乎是在组件级别定义结构。我还没试过所以不知道怎么玩。
  • 通量应该知道数据结构,因为当数据改变时它需要更新状态。你能给我举个继电器的例子吗?
  • 中继是另一种 Facebook 技术。见facebook.github.io/react/blog/2015/02/20/…。除非需要在字段级别进行更新,否则通量存储可能只需要查看记录级别的更改。因此,通量存储不需要知道这些字段。

标签: javascript node.js mongodb reactjs


【解决方案1】:

我一直在研究这一点,但仅限于客户端应用程序。我们考虑采用immutable datastructure 解决方案,其中有几个。

最后,我们采用了基于PubSubJS 的消息总线解决方案,将消息更改状态发送到应用程序的所有部分。我们将其与负责更新数据结构状态的辅助函数相结合,以便所有更新都由该函数控制。

【讨论】:

  • 嗯,这不是我所需要的。我想要一个可以完成的服务器端+客户端解决方案,因为服务器和客户端都使用javascript。我们已经在使用不可变数据结构和总线解决方案 (flux)
【解决方案2】:

我认为您想要的功能是语法检查,这是编译器功能之一。并且 javascript 不是编译语言。所以我的建议是改变一种语言。对我来说,我与Typescript 合作了很长时间,对我来说效果很好。它是一种编译语言,而 javascript 就是它编译成的东西。我认为它可以满足您定义界面后的需求。

【讨论】:

  • 这是一个有效的解决方案,我宁愿把它留到最后。
猜你喜欢
  • 2020-04-02
  • 2015-03-10
  • 1970-01-01
  • 2019-08-07
  • 2013-11-16
  • 1970-01-01
  • 2020-06-29
  • 2019-10-05
  • 1970-01-01
相关资源
最近更新 更多