使用 node.js + react 服务器端渲染 + 通量 + mongodb 时的数据耦合策略

Posted

技术标签:

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

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

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

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

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

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

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

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

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

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

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

【问题讨论】:

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

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

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

【讨论】:

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

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

【讨论】:

这是一个有效的解决方案,我宁愿把它留到最后。

以上是关于使用 node.js + react 服务器端渲染 + 通量 + mongodb 时的数据耦合策略的主要内容,如果未能解决你的问题,请参考以下文章

react服务端渲染路由改写

react服务端渲染(同构)

react.js在服务器端渲染有啥好处?渲染是怎么个流程

编程学习之如何在Node.js中优化服务器端渲染?[图]

React 服务端渲染完美的解决方案

React 服务器渲染原理解析与实践