我总是有这个疑问,我不知道为什么bin文件夹中的文件(用于创建简单的http服务器)没有.js扩展名。
这背后有原因吗?
答案 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
。服务器将运行。