2016-11-28 1 views
0

Узел Экспресс-х Routing guide приводит следующий пример для создания маршрутов в виде модулей:Узлы экспресс-маршрутов как модули: куда поставить `require`s?

/birds.js:

var express = require('express') 
var router = express.Router() 

// middleware that is specific to this router 
router.use(function timeLog (req, res, next) { 
    console.log('Time: ', Date.now()) 
    next() 
}) 
// define the home page route 
router.get('/', function (req, res) { 
    res.send('Birds home page') 
}) 
// define the about route 
router.get('/about', function (req, res) { 
    res.send('About birds') 
}) 

module.exports = router 

/app.js:

var birds = require('./birds') 

// ... 

app.use('/birds', birds) 

Я хочу знать, почему они поставили fi первые две строки birds.js там, а не в app.js.

Во-первых, app.js называет метод app. Как app предполагается определить в пределах app.js? Я полагаю, что они (как ни странно) пренебрегают включением этого необходимого кода для учебника.

Во-вторых, скажите, что мне нужен второй маршрут в качестве модуля, как для собак, так и для птиц, в файле под названием dogs.js. Может ли он выглядеть идентично birds.js WRT первые две строки? AFAIK, что приведет к двум экземплярам экспресс. (Или три, если это необходимо в app.js?)

+0

Я согласен, что это очень неясно. В '/ birds.js' он должен быть« var app = express(); «где-то ... Кроме того, я полагаю, что до тех пор, пока вы определяете ** сразу ** ваше экспресс-приложение, это не имеет значения где вы его определяете (приложение или модуль). – Ksyqo

+0

@Valberthe thanks - так было бы * ok * определить экспресс-приложение * больше *, чем однажды? – Jodes

+0

Нет. Вы всегда должны вызывать один экземпляр экземпляра. – Ksyqo

ответ

0

Пример не завершен. Вся установка приложения не учитывается (i asume, потому что это объясняется далее в документации в любом случае и заменено на // ...). В вашем app.js вам нужно как минимум:

var express = require('express'); 
var app = express(); 

Первая 2 строка в bird.js не имеет ничего общего с двумя (отсутствующими) линиями в app.js. Вам нужны они для создания маршрутизатора.

И в отношении вашего последнего вопроса: Да, вы создали бы другой маршрутизатор точно так же, как птичий маршрутизатор. Маршрутизатор не является экспресс-приложением/экземпляром, и вполне возможно, что у вас есть несколько приложений в вашем приложении.

+0

Отлично, спасибо - так бы вы порекомендовали просто добавить две строки, которые вы указали в 'app.js'? Или это все еще не было бы полной или хорошей практикой, учитывая остальную часть кода? – Jodes

+0

ну, да. Но вы можете захотеть добавить другой материал, необходимый всем маршрутам, как bodyparser, ... –

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