Цей документ може бути застарілим, в порівнянні з оригінальною англійською версією документації.
Немає єдиної відповіді на дане питання. Все залежить від розміру вашого застосунку та від команди, яка приймає участь у його розробці. Щоб бути на стільки гнучким, на скільки це можливо, Express не спирається на фіксовану структуру.
Маршрути та інша логіка застосунку може розміщуватись у файлах довільної кількості, та поміщатись в каталоги будь-якої структури. Розгляньте наступні патерни проектування:
Також, існують сторонні розширення для Express, які спрощують деякі з перелічених патернів проектування:
В Express немає засобів для роботи з базою даних. Їх надають деякі сторонні модулі Node.js, що дозволяють вам взаємодіяти практично з будь-якою базою даних.
Ознайомтесь з LoopBack - цей фреймворк створено на базі Express, він зорієнтований на роботу з моделями.
Ідентифікація - це ще одна чутлива область, яку Express не ризикнув охопити. Ви можете використовувати будь-яку схему ідентифікації. Проста схема “логін / пароль”, представлена в цьому прикладі.
Express підтримує будь-які шаблонізатори, що узгоджуються з сигнатурою (path, locals, callback)
.
Додаткову інформацію, стосовно нормалізації інтерфейсів шаблонізаторів та кешування, можна знайти в проекті
consolidate.js. Цей список може й не містити певних шаблонізаторів,
проте вони можуть все ж підтримувати сигнатуру Express.
В Express, 404-ті відповіді не генеруються в результаті помилок, а тому проміжні обробники помилок не перехоплюють їх. Така поведінка існує оскільки 404-ту відповідь ми отримуємо через відсутність відповідної функції в переліку проміжних обробників при маршрутизації. Все що треба зробити в такому випадку, - це додати проміжну функцію в самий низ черги обробників, яка якраз і буде призначатись для формування 404-тої відповіді:
app.use(function(req, res, next) {
res.status(404).send('Вибачте, такої сторінки не існує!');
});
Проміжні обробники помилок визначаються точно так само, як і інші проміжні обробники,
тільки передається до них чотири параметра, а не три; точніше, вони мають таку сигнатуру (err, req, res, next)
:
app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Щось поламалось!');
});
Більш детально, можна проглянути розділ обробка помилок.
Не треба! Не потрібно “відмальовувати” HTML за допомогою функції res.render()
.
Якщо ви маєте окремий файл, скористайтесь функцією res.sendFile()
.
Якщо ви маєте великий набір файлів в певній директорії, використовуйте проміжну функцію express.static()
.