Node.js和复杂业务逻辑

时间:2013-08-29 16:07:17

标签: node.js functional-programming business-logic

我知道以下问题可能有点模糊,但我仍然需要一些答案。

我即将实施一个基于JSON的WebService,它将信息提供给几个网站和移动应用程序。

由于大部分时间我们都在进行CPU密集型MySQL查询并且需要缓存数据,因此PHP已经不够用了,我们决定转移到Node.js。

如何使用Node.js计划,管理,实现和维护复杂的业务逻辑,因为我们讨论的是完全异步编程,而不是像PHP,Java等运行时导向......?

我试图将一些非常简单的东西与Node.js放在一起,几分钟后我的所有代码开始都充满了令人讨厌的回调,过度依赖注入并且变得一团糟。我应该如何将典型的同步工作流转换为节点友好的?

我注意到大多数Node.js社区都在寻找前提作为解决这个问题的方法,但我仍然认为它不够,它仍然是一团糟...

任何提示?

1 个答案:

答案 0 :(得分:2)

可以使用节点管理复杂的业务逻辑。我可以给你一些提示:

代码组织的观点

Think async

很容易说,但是当我开始使用C编程的节点时,它根本不容易。

如果你有类似的话:

read(function(){
    //some stuff
    write(function(){
        //some other stuff
       [etc...]
    }
}

您的代码应该是:

var onRead = function(){
    //some stuff
    write(onWrite);
}
var onWrite = function(){
    //some other stuff
}
read(onRead);

甚至更好:制作onRead模块?这引出了我的第二个建议:

制作模块

很多人。并在开始时加载它们。 一个50线模块真的不会那么复杂,可以吗?

这需要一些时间才能适应这种情况,但你会很快感到宾至如归。

使用旨在删除“嵌套回调地狱”的模块

async就是其中之一。那里有很多。

我没有真正使用那些。通常它只是一个糟糕设计的解决方法,但它们在某些情况下非常有用。

软件架构的观点

不会像您期望的那样改变。大多数情况下,你会想要一些类似于你在无状态php应用程序上做的事情,应用上面的提示,它应该没问题。

如果您想要更精确的建议,也许您应该粘贴代表您的问题的代码示例,让我们解释如何改进它。