在 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 的好处的主要内容,如果未能解决你的问题,请参考以下文章
带有 express-generator 的 Nodejs 应用程序,并尝试添加 primus websocket