Node.js和复杂的业务逻辑

Node.js和复杂的业务逻辑,node.js,functional-programming,business-logic,Node.js,Functional Programming,Business Logic,我知道下面的问题可能有点模糊,但我仍然需要一些答案 我将要实现一个基于JSON的Web服务,它将向几个网站和移动应用程序提供信息 由于大部分时间我们都在进行CPU密集型MySQL查询,并且需要缓存数据,因此PHP不再足够,我们决定迁移到Node.js 既然我们谈论的是完全异步编程,而不是像PHP、Java等面向运行时的编程,那么如何使用Node.js规划、管理、实现和维护复杂的业务逻辑呢 我试着将一些非常简单的东西与Node.js结合在一起,几分钟后,我所有的代码开始时都充满了讨厌的回调,过度的

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

我将要实现一个基于JSON的Web服务,它将向几个网站和移动应用程序提供信息

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

既然我们谈论的是完全异步编程,而不是像PHP、Java等面向运行时的编程,那么如何使用Node.js规划、管理、实现和维护复杂的业务逻辑呢

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

我注意到Node.js社区的大多数人都把premiss作为解决这个问题的一种方法,但我仍然认为这是不够的,它仍然是一团混乱


有什么建议吗

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

代码组织观点 异步思考 说起来容易,但当我从C编程开始使用node时,一点也不容易

如果您有以下情况:

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行的模块读起来不会那么复杂吧

这需要一些时间来适应,但你会很快感到宾至如归

使用设计用于删除“嵌套回调hell”的模块 是其中之一。外面有很多

我真的不用那些。通常,这只是一个解决糟糕设计的方法,但在某些情况下,它们确实很有用

软件体系结构观点 没有你想象的那么多变化。大多数情况下,你会想要一些类似于你在无状态php应用程序上所做的事情,应用上面的提示,应该就可以了


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

有许多库可以帮助您在没有大量嵌套回调的情况下管理异步代码。例如管理起来其实并不特别困难。没有神奇的解决方案可以让您编写类似同步的代码。如果这是您想要的,Node.js可能不适合您。我不想要神奇的解决方案,我正在寻找将di转换为asyc的理想方法,以及在哪里学习它的最佳方法;)您有没有尝试过任何现有的用于此目的的库?你必须看看哪一个在风格和功能上最适合你。我们无法真正帮助您做出决定。我已经查看了node seq,但它仍然。。。我不知道,我想我还不习惯。你想在单线程技术上运行CPU密集型的东西吗?