我一直有这个疑问,我不知道为什么创建简单 http 服务器的 bin 文件夹中的文件没有.js扩展名。
这背后有什么原因吗?
Unix的传统是可执行文件没有扩展名。
例如,在 Linux 和 MacOS 上列出您键入的目录:
ls
你不输入
ls.exe
另一个例子,要在Linux上启动Dropbox服务,你可以输入
dropbox
你不输入
dropbox.py
即使Dropbox只是一个包含Python代码的文本文件。
Unix(以及Windows上的bash终端)有一个功能,如果一个文件被标记为可执行文件(使用chmod
命令),并且第一行包含:
#!
然后shell(控制命令行的程序)将删除前两个字符(#!
)并执行第一行的其余部分。这通常被称为 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
时不键入npm.js
。因此,人们遵循传统,使他们的可执行脚本没有扩展名 - 这使得人们更难意识到你不是用C或汇编语言编写程序的。
因为www
文件是可执行的。
打开控制台,转到bin
文件夹,然后键入./www
。服务器将运行。