2013-08-15 2 views
1

я могу использовать express двумя способами, то есть я могу инициализировать его двумя способами:Разница между запуском экспресс-объекта в nodejs?

var app = express(); или var app = new express();

Судя по всему, оба вызова конструктора, так что есть на самом деле какая-то разница между два, я в основном прошу, чтобы производительность была мудра, есть ли какая-то разница, потому что я, похоже, не испытал ни одного.

Если нет никакой реальной разницы, то как каждый учебник, который я видел, делает это первым способом, а не вторым способом, потому что второй кажется более ясным.

ответ

3

В этом случае правильное назначение express().

https://github.com/visionmedia/express/blob/8a1e865e37016f279d957f04117007c36ac195e3/lib/express.js#L32

function createApplication() { 
    var app = connect(); 
    utils.merge(app, proto); 
    app.request = { __proto__: req, app: app }; 
    app.response = { __proto__: res, app: app }; 
    app.init(); 
    return app; 
} 

В основном это функция завод, не конструктор. Использование ключевого слова new создаст ненужный объект, который будет немедленно отброшен, так как createApplication возвращает объект, автоматический this, который создает ключевое слово new (это именно то, как работает язык JavaScript).

Так что ответы на обе версии работают нормально, но здесь new здесь не нужно.

Смежные вопросы