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

5
express-generator 工具创建了一个名为 bin/www 的文件,并将其用作应用程序的主入口点。我相信还有其他几个模块也是这样做的,但绝大多数模块只使用 index.js
背后的原理是什么?当然,我明白为什么要将服务器和设置程序的代码拆分成单独的模块,但为什么不是 index.js 而是 bin/www?为什么要将主入口点嵌套到比它调用的内容深两层的程序中?而且,还去掉了文件扩展名,使其更不具描述性?
这背后有巧妙、非显而易见的原因吗?我应该在我的 node-modules 中也使用这个方法吗?
谢谢!
2个回答

6

你习惯于运行npm run,但系统管理员不会这样做。他会在bin目录中寻找可执行文件(属性为x)。

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

因为它是程序而不是脚本,所以会去除扩展名。这些类型的文件没有扩展名。


4
express-generator 创建了一个基本的 express 应用程序结构,按照惯例,应用程序的入口点是 index.js 或 app.js。实际上,express-generator 在应用程序根目录下创建一个 app.js 文件,其中包含了 express 的初始设置。
同样按照惯例,bin/ 目录用于存储二进制文件,也可以用于直接启动脚本(请注意 www 文件第一行的 shebang)。在 Linux 上,二进制文件通常没有扩展名,这可能解释了为什么选择保留此文件的命名习惯。
再次按照惯例,www 用于命名 Web 应用程序(如 Apache 服务器中的 /var/www/html)。
无论如何,正如文档所说,
引用: 应用程序生成器创建的应用程序结构只是众多结构 Express 应用程序的一种方式。请随意使用此结构或修改它以最适合您的需求。
还可以参见这个答案,其中介绍了 express 版本3和版本4之间的核心结构,并删除了外部模块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接