什么是常见的开发问题,陷阱和建议?

mvb*_*fst 5 node.js express

我一直在Node.js开发仅2周,并开始重新创建以前用PHP编写的网站.到目前为止一直这么好,看起来我可以在Node(使用Express)中做同样的事情,这是在相同或更短的时间内在PHP中完成的.

我遇到过你必须习惯的事情,比如使用模块,不共享公共环境的模块,养成使用回调进行文件系统和数据库操作等习惯.

但是,开发人员可能会发现很多事情,这对节点中的开发非常重要吗?其他所有在Node中开发的问题都有,但直到以后它们才会出现?陷阱?专业知识和新手没有的东西吗?

我将不胜感激任何建议和意见.

Pet*_*ons 19

以下是您可能要到达的事情:

  • 节点将暂停执行以最终/定期运行垃圾收集器.发生这种情况时,您的服务器将暂停打嗝.对于大多数人来说,这个问题不是一个重大问题,但它可能成为构建近期系统的障碍.请参阅在高负载下,由于垃圾收集,Node.js的可伸缩性是否受到影响?
  • 节点是单进程,因此默认情况下只使用1个CPU.有内置的集群支持来运行多个进程(通常每个CPU 1个),并且在大多数情况下,Node社区认为这是一个可靠的方法.不过,你可能对这个现实感到惊讶.
  • 由于事件队列,堆栈跟踪通常会丢失,因此您的日志记录和调试方法需要发生显着变化

这里有一些你可能会碰到一段时间的小绊脚石(我还是碰到了这些)

  • 记得做callback(null, value)一个成功的回调.将null作为第一个参数传递是很奇怪的,因此我忘了这样做.相反,我不小心做了callback(value),这被调用者解释为一个错误,直到我调试它一段时间并拍打我的额头.
  • return在guard子句中调用回调时忘记使用,并且不希望函数继续执行该点.有时这会导致回调被调用两次,从而导致各种不当行为.

这里有一些NICE你可能不知道最初的东西

  • 它是在node.js中容易得多,使用真棒流量控制的图书馆之一,做复杂的操作,如并行装载3的网络资源,进而实现2 DB串行电话,然后写2个日志文件并行,然后发送HTTP响应.这个东西在节点中是微不足道的,并且在许多同步环境中几乎不可能.
  • 所有节点的模块都是新的和现代的,在大多数情况下,您可以找到一个设计精美的模块,它具有出色的API,可以满足您的需求.Python现在也有很棒的库,但是将Node的cheerio或jsdom模块与python的BeautifulSoup进行比较,看看我的意思.将python的requests模块与节点进行比较superagent.
  • 通过与现代平台合作,人们专注于现代Web开发,可以获得社区效益.节点社区和PHP社区之间的对比不容小觑.