有哪些常见的发展问题、陷阱和建议



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

我遇到了一些你必须习惯的事情,例如使用模块、不共享公共环境的模块,以及养成使用回调进行文件系统和数据库操作的习惯等。

但是,开发人员以后可能会发现什么对node开发非常重要的东西吗?在 Node 中开发的其他人都有问题,但直到以后才浮出水面?陷阱?专业人士知道而菜鸟不知道的事情吗?

我将不胜感激任何建议和建议。

以下是您可能要到以后才意识到的事情:

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

这里有一些你可能会遇到一段时间的小绊脚石(我仍然会遇到这些)

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

这里有一些你最初可能没有意识到的东西

  • 在node.js中,使用一个很棒的流控制库来执行复杂的操作要容易得多,例如并行加载3个网络资源,然后串行进行2个数据库调用,然后并行写入2个日志文件,然后发送HTTP响应。这些东西在节点上是琐碎而美丽的,在许多同步环境中几乎是不可能的。
  • 所有node的模块都是新的和现代的,在大多数情况下,你可以找到一个设计精美的模块,有一个很棒的API来做你需要的事情。Python现在也有很棒的库,但是将Node的cheerio或jsdom模块与python的BeautifulSoup进行比较,看看我的意思。将python的requests模块与节点的superagent进行比较。
  • 使用人们专注于现代 Web 开发的现代平台会带来社区利益。节点社区和PHP社区之间的对比怎么强调都不为过。

最新更新