【问题标题】:How to structure a node cli application如何构建节点 cli 应用程序
【发布时间】:2018-06-27 05:59:41
【问题描述】:

我想编写一个节点 cli 应用程序,我想知道我应该如何构建应用程序。我对节点相当陌生,并且对构建此类应用程序时使用的所有设计模式感到困惑。 我希望能够从命令行调用应用程序,但也将其用作节点模块以进行更好的测试。

目前我有一个文件,其中包含许多直接从 cli 调用的函数,但我觉得这很难维护。

有没有关于如何做这些事情的好文章?我看了rimraf,但它让我更加困惑。感谢您的宝贵时间

【问题讨论】:

  • 我创建了一些简单的cli,你可以看看他们的结构here

标签: javascript node.js command-line-interface


【解决方案1】:

我不知道是否有“正确”的方法可以做到这一点,但我可以告诉你我是如何处理与你类似的问题的。我想创建一个 CLI 和一个 Visual Studio 代码插件,这样人们就可以使用 VSC 和 CLI 的功能(对于那些不使用 VSC 的人),所以我采取的方法是将所有逻辑在它自己的包中,然后创建另外两个包,其中包括第一个包,一个用于 CLI,一个 VSC 插件需要“逻辑”包。

在 CLI 包中,您只会有与命令处理严格相关的代码,然后真正的内容发生在逻辑包中。在我的例子中,VSC 插件包的代码行数很少,只有配置和对所需函数的调用。

然后关于代码结构的一些建议:

  • 只公开绝对必要的内容
  • 根据通用功能将您的代码隔离在不同的文件/类中(并转到第 1 点)
  • 测试您的代码
  • 检查您的代码

但这些都是常识和独立于语言的建议。

【讨论】:

    【解决方案2】:

    没有一种“标准”的方式来构建 Node.js 应用程序,但是您会注意到许多作者都遵循类似的模式。与其让一个文件包含所有代码,不如将其拆分为按功能分组的模块。看看 Github 上的这个 repo,它有一些关于 Node.js 最佳实践的非常好的建议https://github.com/i0natan/nodebestpractices#1-project-structure-practices

    我要补充几点:确保记录任何错误,考虑为此目的使用 Winston.js 之类的东西。如果发生严重错误,也有一些机制可以重新启动服务,例如Forever.js。

    确保你同样在进行单元测试,有一些很好的测试框架,Jasmine、Mocha、Cucumber.js。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 2020-03-10
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多