Перш ніж запитати про app.router
мене, я думаю, що мені слід пояснити принаймні те, що, на мою думку, відбувається під час роботи з середнім програмним забезпеченням. Для використання середнього програмного забезпечення використовується функція app.use()
. Коли програмне забезпечення середнього програмного забезпечення виконується, воно або зателефонує до наступного середнього програмного забезпечення за допомогою, next()
або зробить його таким чином, щоб більше не викликали середнє програмне забезпечення. Це означає, що порядок, в якому я розміщую свої посередницькі дзвінки, є важливим, оскільки деяке проміжне програмне забезпечення залежить від іншого проміжного програмного забезпечення, а якесь середнє програмне забезпечення в кінці може навіть не називатися.
Сьогодні я працював над моєю програмою, і мій сервер працював у фоновому режимі. Я хотів внести деякі зміни та оновити свою сторінку і побачити зміни негайно. Зокрема, я вносив зміни до свого макета. Я не зміг змусити його працювати, тому я шукав відповідь на переповнення стека і знайшов це запитання . Це говорить, щоб переконатися, що express.static()
це внизу require('stylus')
. Але коли я дивився на код цього ОП, то побачив, що він app.router
дзвонив в самому кінці викликів середнього програмного забезпечення, і я спробував з’ясувати, чому це було.
Коли я зробив свою програму Express.js (версія 3.0.0rc4), я застосував команду, express app --sessions --css stylus
і в моєму файлі app.js встановлено код налаштування з моїм app.router
вище як express.static()
і require('stylus')
викликами. Тож здається, що якщо це вже встановлено таким чином, то воно повинно залишатися таким.
Після перестановки коду, щоб я міг побачити зміни мого Stylus, він виглядає приблизно так:
app.configure(function(){
//app.set() calls
//app.use() calls
//...
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});
app.get('/', routes.index);
app.get('/test', function(req, res){
res.send('Test');
});
Тому я вирішив, що першим кроком буде з’ясувати, чому важливо навіть мати app.router
свій код. Тому я прокоментував це, запустив додаток і перейшов до /
. Він відображав мою індексну сторінку просто чудово. Гм, можливо, це спрацювало, тому що я експортував маршрутизацію з мого файлу маршрутів (route.index). Тож далі я перейшов, /test
і він відобразив Тест на екрані. Ха-ха, гаразд, я поняття не маю, що app.router
робить. Незалежно від того, включений він у мій код чи ні, моє маршрутизація чудово. Тож мені певно чогось не вистачає.
Тож ось моє запитання:
Невже хто-небудь може пояснити, що app.router
це означає, важливість цього і де я повинен розміщувати це в своїх проміжних дзвінках? Було б також непогано, якби я отримав коротке пояснення express.static()
. Наскільки я можу сказати, express.static()
це кеш моєї інформації, і якщо програма не зможе знайти потрібну сторінку, вона перевірить кеш, щоб перевірити, чи існує.