javascript - 为什么 Visual Studio Node.js 项目使用 shebang/bash 脚本来启动服务器?

标签 javascript node.js visual-studio-2015

在 Visual Studio Node.js 项目中,它们有一个 bin 目录,其中包含一个名为 www 的文件,其内容如下:

#!/usr/bin/env node

var app = require('../app');

app.set('port', process.env.PORT || 3300);

var server = app.listen(app.get('port'), function() {
    console.log('server up and running on port ' + app.get('port'));
});

这个 bash 脚本的正确名称是吗?为什么要采用这种方法而不是仅仅将其放在 app.js 中?它与部署或可移植性有关吗?

提前致谢!

最佳答案

Node 应用程序中的约定是,我们在 bin/ 文件夹中名为 www 的文件中创建主 js 文件来运行服务器,该文件将由 node.exe。原因之一是将应用程序逻辑与起点分开。当然,您可以将其内联添加到 app.js 中,或者实际上在 app.js 的同一目录下有一个 server.js 文件来执行此操作一样的东西。您可以选择应用程序的入口点。对于部署,再次取决于您的具体环境。某些服务(例如 Azure Web APP)默认运行 server.js(当然您可以包含一个配置文件来指定您的入口点)。

此外,这仍然是一个 javascript 文件,而不是 bash:

#!/usr/bin/env node

表示由/usr/bin/env 中的可执行 Node 运行

#!/bin/bash

表示由位于/bin/bash 的可执行 bash 运行

两者的语法不同。如果变量 foo 为偶数则打印的示例代码

Bash 脚本:

if [ $((foo%2)) -eq 0 ];
then
    echo "even";
else
    echo "odd";
fi

Javascript:

if(foo%2==0)
    console.log(“even”);
else
    console.log(“odd”);

关于javascript - 为什么 Visual Studio Node.js 项目使用 shebang/bash 脚本来启动服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35704292/

相关文章:

javascript - 同时验证表单和一些输入

php - 如何将文本值传递到使用 php 分配的另一个表单

javascript - 如何在 Protractor 上按住 Ctrl 并单击?

javascript - 如何使 jshint 缩进选项起作用

javascript - 我可以读取 iframe 的对象,但我无法修改它的 CSS

javascript - 如何根据id显示特定的div,id将是动态的

javascript - 将 JSOn 对象转换为平面 JSON 数组

asp.net - 将 visual studio 2015 中的 asp.net 5 发布到 linux

c# - 在 Visual Studio 2015 UML 类图中生成代码不起作用

c# - Visual Studio 2015 - C# Windows 通用应用程序缺少程序集引用