node.js命令行工具



我正在用node.js编写我的第一个命令行工具。我熟悉异步io的概念,并理解使用它的好处。然而,我很想知道,因为这个工具可以做以下事情:

  1. 执行一些FS操作(例如创建文件夹、写入某些文件)
  2. 提出网络请求(例如,将一些内容下载到此文件夹中)
  3. 生成一个结果(意味着一堆文件)
  4. 退出

我真的应该为这些方法使用所有的异步版本吗?例如,mkdirp()也可用作mkdirpSync()(来自fs-extra模块),因此真正的问题是:

为什么我甚至要在一个程序中使用异步函数,而这个程序将在完成时终止?并且在应用程序线程被阻塞的情况下没有实际影响?

谢谢。

简单回答:在所描述的场景中,您不必麻烦。

长话短说:这取决于这个应用程序的真正目的是什么。如果这只是快速&肮脏的原型来测试一些东西,或者向你的老板展示你可以制作节点应用程序——使用异步或同步——没有人会在乎。

但如果你打算把这个应用程序还给社区,你肯定应该考虑异步方法。如果有人偶然发现你的代码&会想重复使用它,例如在吞咽/咕哝任务中,然后呢?除非有人将代码重写为异步,否则您的代码将毫无用处。

此外,正如您所提到的,这是您在节点中的第一个应用程序,因此您应该从一开始就养成正确的习惯,例如在处理文件系统或网络时使用异步功能。

如果你对异步方法中的所有这些回调感到恼火,试着在你的工作流程中加入一些类似承诺的东西(例如令人惊叹的Bluebird或q)-这将帮助你实现非常干净的&易于维护的代码完全异步+可以用过程风格编写

希望这会有所帮助!

我不是nodejs方面的专家,但我确实在node中开发了部分应用程序
如果我错了,欢迎你纠正我

为什么要麻烦使用异步函数,是因为当您运行同步脚本时,整个过程会停止。Nodejs基本上是一个事件循环,所以当你运行同步函数时,循环会停止,直到同步函数完成,这会破坏它的目的

如果您的应用程序是为单个用户设计的,那么在我看来这不会是什么大问题,但如果它是为多个用户设计的那么您应该使用异步函数

在您的情况下,如果您对FS操作使用同步功能,那么在这段时间内,您将无法向节点服务器发出任何其他请求。尽管这不会花费太多时间,但使用异步函数始终是可取的。

最新更新