在 express-generator 中使用 bin 文件而不是 .js 的好处

Posted

技术标签:

【中文标题】在 express-generator 中使用 bin 文件而不是 .js 的好处【英文标题】:Benefits of using bin files over .js in express-generator 【发布时间】:2017-08-27 10:10:28 【问题描述】:

如果想在 Node.js 中使用 express 启动一个项目。有人会使用express-generator。创建新项目后,您的文件树将如下所示

.
├── app.js
├── bin
│   └── www
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
    ├── error.pug
    ├── index.pug
    └── layout.pug

对我来说突出的一件事是,要运行应用程序,您需要执行 node bin/www 或预定义的快捷方式 npm run。我的问题是为什么要按原样使用www,而不是添加.js 扩展名并从文件顶部删除#!/usr/bin/env node?这样做有什么好处吗?还是个人喜好?

【问题讨论】:

bin\ 目录作为一个位置,您可以在其中定义各种启动脚本,www 是其外观的示例,最终您可以拥有启动脚本,如测试、停止或重新启动等. 有了这个结构,你就可以在不接触 app.js 的情况下拥有不同的配置。 ***.com/questions/23169941/… @RatanKumar 感谢您的评论。我明白了,我的问题是为什么是www 而不是www.js,这样做是否有好处? 【参考方案1】:

我们来看bin/www文件的第一行:

#!/usr/bin/env node

shebang 告诉 *nix 操作系统如果您尝试将其作为程序运行,如何解释该文件。

所以这个文件可以作为程序启动。并且在 Linux 中传统的可执行文件没有扩展名。

【讨论】:

谢谢你的回答,我明白这一行告诉计算机如何执行这段代码,我的问题是你为什么要这样做而不是在上面加上.js扩展名。 @AntK : ...Linux traditionally executable files do not have an extension... 我知道了,谢谢。我只是想知道为什么这比拥有"start": "node bin/www.js" 更可取,因为你的www.js 也可以被检查、测试以及你可以对应用程序中的 js 文件执行的其他操作。 @AntK 我认为主要的好处是您可以仅从终端或 cron 等启动服务:/var/www/projects/express-app/bin/www 但也没有什么能阻止你输入node /var/www/projects/express-app/bin/www.js,对我来说这似乎很不方便,但我可能错过了一些东西

以上是关于在 express-generator 中使用 bin 文件而不是 .js 的好处的主要内容,如果未能解决你的问题,请参考以下文章

nodejs脚手架express-generator

带有 express-generator 的 Nodejs 应用程序,并尝试添加 primus websocket

express-generator 自动生成服务器基本文件

脚手架express-generator创建项目

Express-Generator - 包括 socket.io (bin/www)

Nodejs搭建基于express的应用,使用脚手架工具--express-generator