Что мы на самом деле импортируем из Express в программе Node.js - PullRequest
0 голосов
/ 08 января 2019

Обычно, когда мы импортируем что-то в Node, мы делаем что-то вроде:

const fs = require("fs");
... //use fs's methods for file system stuff

Однако, когда мы используем экспресс, мы делаем:

const express = require("express");
const app = express();
app.get( .... )

Какая разница с импортом? почему мы вызываем express() как функцию (я предполагаю, что она импортирует некоторую функцию, и если она это делает, что делает функция)? Если это не объясняется моими предыдущими вопросами, почему бы нам не вызвать функцию импортированного нами объекта express?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

export пакета express - это функция с именем createApplication (см. здесь ). Вызов этой функции производит объект. Я полагаю, что это сделано таким образом, чтобы mixin генерировались соответствующим образом во время выполнения.

Также имейте в виду, что в JavaScript нет типов . Ничто не является строго объектом. Эта функция, например, имеет функции-члены.

exports = module.exports = createApplication;
exports.query = require('./middleware/query');  // Assigning a member function to the `createApplication` function.

Из-за этого вы можете позвонить express(), но также позвонить express.query('whatever'). JavaScript - это глупость, если вы пытаетесь интерпретировать его как четко определенный объектно-ориентированный язык.

0 голосов
/ 08 января 2019

Ваш вопрос неверен, вы говорите

почему бы нам не вызвать функцию express объекта

но require("express") возвращает Function.

Это разница в том, что экспортируется. Один экспортирует объект со свойствами, прикрепленными к нему, а другой экспортирует функцию.

Экспресс делает последнее. См. Экспресс-источник :

exports = module.exports = createApplication;

function createApplication() {...};

В то время как узел делает первый, node fs source :

module.exports = fs = {...};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...