При запуске express
генерируемый app.js
является следующим: (на дату этого сообщения)
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
app.use(function(req, res, next) {
...
});
if (app.get('env') === 'development') {
...
}
app.use(function(err, req, res, next) {
...
});
module.exports = app;
Для простоты я удалил комментарии.
Мой вопрос очень прост:
Я видел много примеров nodeJS на сайтах, блогах и документах, где они используют одно из следующих:
require('http').createServer(app).listen(3000);
или
app.listen(3000);
Если я выполняю свое сгенерированное экспресс-приложение (npm start
), он запускается. Я могу перейти на localhost: 3000 с браузером, и он обслуживается. Итак… насколько релевантно использовать listen(port)
?
Я спрашиваю об этом, потому что мне нравится иметь полный контроль над вещами.
Кроме того, некоторые примеры модулей используют listen
, например. модуль Sequelize
Статья: “Использование с Express.JS”,
ссылка: http://sequelizejs.com/articles/express,
app.js
------
db
.sequelize
.sync({ force: true })
.complete(function(err) {
if (err) {
throw err[0]
} else {
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'))
})
}
})
Это заставляет меня думать, что я должен синхронизировать, прежде чем начинать слушать.
Если я не использую listen
и позволяю ему автоматически слушать (как это делает сгенерированный код), я получу проблемы из-за синхронизации и прослушивания в одно и то же время?
Если вы посмотрите на файл package.json, вы, вероятно, найдете его запуск /bin/www или некоторый такой сценарий запуска. Это будет иметь “отсутствующий” оператор прослушивания.