2016-07-25 8 views
0

В документации API Экспресс говорится шаблон для функции „(функция [путь] [функция ...]) app.use“Express.js функции API параметр спутанность

Однако в app.js файл, который создается после выполнения генератора экспресс есть эта строка кода, «app.use('/', routes);» и маршрут объявлен в верхней части как var routes = require('./routes/index');

после просмотра index.js и его соответствующие module.exports, я изо всех сил, чтобы понять, как маршруты являются просто функцией или как само приложение является функцией и может быть передано в var server = http.createServer(app);, когда в его документации также указывается, что его единственный вариант Параметр al - это функция.

+0

Спасибо за ответ. Я понимаю эту структуру папок, но я больше смущен тем, как объекты маршрутизатора или приложения являются просто функциями и могут быть переданы как допустимые аргументы в app.use (...) и http.createserver (...). Просто глядя на файлы ./routes/index.js и ./app.js, они кажутся мне сложными объектами. – 4Matt

+0

'function foo() {....}; bar (foo); '- простой пример того, как передать функцию (' foo') другой функции ('bar'). В этом нет ничего волшебного. Функции - это значения, как и любые другие. –

+0

Да, я знаю, что в функциях javascript есть объекты, и поэтому они могут передаваться в другие функции в качестве аргументов. Я в тупике о том, как приложение и маршрутизатор являются функциями в первую очередь – 4Matt

ответ

0

Также функции являются переменными или параметрами! Это шаблон в конкретных языках программирования, таких как JS. Не все языки поддерживают это, но их много.

https://en.wikipedia.org/wiki/First-class_function

В информатике язык программирования, как говорят, функции первого класса, если он рассматривает функции как граждане первого класса. В частности, это означает, что язык поддерживает функции передачи в качестве аргументов для других функций, возвращая их как значения из других функций и назначая их переменным или сохраняя их в структурах данных.

Точно это происходит. Для того, чтобы структурировать файлы и файловую систему представления они экспортируются и в конце концов вы найдете то, что отлично справляется функция (Req, Рез) {}

0
var routes = require("./routes/index"); 

//inject your route middleware 

app.use("/",routes); 
app.use("/users",users); //prefix users in url eg: /users/getUsers 

Вот ваши задает, какой маршрут промежуточного слоя будет использоваться для запрос без префикса «/» вам просто нужен файл router index.js, где вы будете определять свои пользовательские маршруты и указывать экспресс, чтобы использовать его в качестве промежуточного программного обеспечения для всего вашего запроса.

Поэтому он попытается сопоставить каждый запрос, который поступает на сервер, на маршруты, определенные в этом файле, и выполнить соответствующий запрос в файле routes/index.js.

+0

Я понимаю, что происходит с маршрутизацией, промежуточным программным обеспечением и файловой структурой.Я просто не понимаю, как переменные маршрутизатора и приложения могут быть функциями и, следовательно, действительными аргументами для app.use (...) и http.createserver (...). – 4Matt

+0

вы можете предоставить фрагмент, для которого переменные приложения и маршрутизатора? –

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