4

express-generator工具创建一个名为的文件bin/www并将其用作应用程序的主要入口点。我相信我已经看到其他几个模块也这样做了,但绝大多数只是使用index.js.

这背后的原因是什么?我当然理解你为什么要将服务器和设置程序的代码拆分为单独的模块,但为什么bin/wwwindex.js呢?为什么要将主入口点嵌套到比它调用的东西更深两层的程序?删除文件扩展名,使其更具描述性?

这背后是否有一个聪明的、不明显的原因?我也应该将它用于我的节点模块吗?

谢谢!

[编辑]:

所有好的答案,谢谢各位!我已经接受指出这是包含可执行文件的包的标准行为。这是我在这方面遇到的更多阅读:

4

2 回答 2

3

您习惯于运行npm run,但不习惯于 sysadmin。他将在目录中查找可执行文件(属性x) 。bin

入口点index.js是节点模块。所有提供在控制台上运行的命令的包都包含该bin目录。

该扩展被删除,因为它不是脚本,而是作为程序。而且这些没有扩展名。

于 2019-04-01T10:29:49.213 回答
3

express-generator为express应用程序创建一个基本结构。按照惯例,应用程序的入口点是 index.js 或 app.js。实际上,express-generator在应用程序的根目录下创建了一个 app.js,初始设置为express

同样按照惯例,bin/ 目录用于存放二进制文件,并且通过扩展名用于您可以直接启动的脚本(注意 www 文件第一行的 shebang)。这在 Linux 上很常见,二进制文件没有扩展名,这可以解释为该文件保留此习惯的选择。

www,再次按照惯例,用于命名 Web 应用程序(如Apache服务器中的 /var/www/html)

无论如何,正如文档所说,

生成器创建的应用程序结构只是构建 Express 应用程序的众多方法之一。随意使用此结构或对其进行修改以最适合您的需求。

另请参阅此答案,该答案讨论了版本 3 和 4 之间express的核心结构,并删除了外部模块。

于 2019-04-01T10:30:47.837 回答