为什么bin / www文件在express-generator中没有扩展名?

时间:2019-07-10 17:15:39

标签: node.js express

我总是有这个疑问,我不知道为什么bin文件夹中的文件(用于创建简单的http服务器)没有.js扩展名。

这背后有原因吗?

2 个答案:

答案 0 :(得分:3)

Unix上的传统是可执行文件没有扩展名。

例如,在Linux和MacOS上列出您键入的目录:

ls

您没有键入

ls.exe

另一个示例,要在Linux上启动Dropbox服务,您可以输入

dropbox

您没有键入

dropbox.py

即使dropbox只是一个包含Python代码的文本文件。

Unix(以及Windows上的bash终端)具有一项功能,如果文件被标记为可执行文件(使用chmod命令)并且第一行包含:

#!

..然后,外壳程序(控制命令行的程序)将删除前两个字符(#!),并执行该第一行的其余部分。这通常称为shbang线(sh = shell,! = bang)。

因此,如果要在node.js中开发命令行程序,您所需要做的就是以#! /usr/bin/env node启动文件:

#! /usr/bin/env node
//       ^
//       |
//  the 'env' command will find the correct install path of node

console.log('hello world');

然后使用chmod使文件可执行:

chmod +x my-script.js

当然,创建以.js结尾的程序看起来并不“专业”。例如,您在运行gulp时不会键入gulp.js,而在运行npm.js时不会键入npm。因此,人们遵循传统并使其可执行脚本没有扩展名-这使人们更加难以意识到您不是用C或汇编语言编写程序的。

答案 1 :(得分:0)

因为www文件是可执行文件。

打开控制台,转到bin文件夹,然后键入./www。服务器将运行。