为什么使用bin / www而不使用index.js?

时间:2019-04-01 08:47:05

标签: javascript node.js express code-structure express-generator

express-generator工具将创建一个名为bin/www的文件,并将其用作应用程序的主要入口点。我相信我也看到过其他一些模块也可以执行此操作,但是绝大多数模块仅使用index.js

这背后的原理是什么?当然,我知道您为什么将服务器和用于设置程序的代码分成一个单独的模块,但是为什么bin/www而不是index.js呢?为什么将主入口点嵌套到比其调用的内容深两个级别的程序? 然后删除文件扩展名,使其更具描述性吗?

这背后有一个聪明的,非显而易见的理由吗?我也应该将其用于我的节点模块吗?

谢谢!

[编辑]:

所有好的答案,谢谢大家!我接受了一个指出这是包含可执行文件的软件包的标准行为的人。这是我在此遇到的更多阅读内容:

2 个答案:

答案 0 :(得分:1)

您已经习惯运行npm run,但没有系统管理员的权限。他将在x目录中查找可执行文件(属性bin)。

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

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

答案 1 :(得分:1)

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

按照惯例,bin /目录用于二进制文件,扩展名用于可以直接启动的脚本(请注意www文件第一行的shebang)。在Linux上,二进制文件没有扩展名是很常见的,它可以解释选择保留此文件习惯的方法。

再次按照惯例,

www用于命名Web应用程序(例如 Apache 服务器中的/ var / www / html)

无论如何,如文档所述,

  

由生成器创建的应用程序结构只是以下几种方法之一   构建Express应用。随意使用或修改此结构   最适合您的需求。

另请参阅this answer,他们讨论了版本3和版本4之间的 express 的核心结构,并删除了外部模块。