我刚开始在我的 Node.js 应用程序中学习 Express 4.0,我发现它生成了 ./bin/www
文件,在该文件上只写入了应用程序服务器和端口设置,并且中间件和路由等其他所有内容都在 ./app.js
文件中定义。
但是,我不确定这个 ./bin/www
的作用。我使用过 Express 3.x,我总是在相同的 ./app.js
文件上定义服务器和端口设置以及路由和中间件,并使用 node 启动我的 Node 应用程序app.js
。那么使用 ./bin/www
有什么意义呢?它只是将服务器和端口定义与其他定义分开吗?
现在,当我使用 express-generator 创建包时,package.json
包含以下定义:
"scripts": {
"start": "node ./bin/www"
}
但是,我想知道是否应该使用 node ./bin/www
或 npm start
来启动我的应用程序。我应该运行哪个命令来启动我的应用程序?
另外,当我将我的应用程序部署到 heroku 时,我应该在 Procfile
文件中写什么? web: node app.js
够了吗?
最佳答案
在 Express 3.0 中,您通常会使用 app.configure()
(或 app.use()
)来设置所需的你需要的中间件。您指定的那些中间件与 Express 3.0 捆绑在一起。
例子:
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
然而,在 Express 4.0 中,所有的中间件都已被移除,以便它们可以独立于核心 Express 进行维护和更新(静态中间件除外),因此它们需要单独调用(你请参阅 app.js
)。
bin/
目录是您可以定义各种启动脚本 的位置。 www
是将 express 应用程序作为 Web 服务器启动的示例。
最终,您可以有不同的脚本,如 test
、stop
或 restart
等。拥有这种结构可以让您有不同的启动配置,无需将所有内容都塞进 app.js
.
启动 Express 应用的正确方法是:
npm start
要将 Express 4.x 应用部署到 Heroku,请将其添加到您的 Procfile
:
web: npm start
或者,如果你可以在 package.json
中使用启动脚本,heroku 会自动使用它,阅读更多 here
"scripts": {
"start": "node ./bin/www",
}
关于javascript - "./bin/www"在 Express 4.x 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23169941/