description: Найдите ответы на часто задаваемые вопросы по Express.js: структура приложения, модели, аутентификация, движки шаблонов, обработка ошибок и другое.¶
FAQ¶
Как структурировать приложение?¶
Однозначного ответа на этот вопрос нет. Все зависит от масштаба приложения и команды, которая над ним работает. Чтобы сохранить максимальную гибкость, Express не навязывает конкретную структуру.
Маршруты и прочая логика приложения могут находиться в любом количестве файлов и любой структуре каталогов. Для вдохновения посмотрите примеры:
Также есть сторонние расширения для Express, которые упрощают часть этих шаблонов:
Как определять модели?¶
В Express нет встроенного понятия базы данных. Это оставлено сторонним Node-модулям, поэтому вы можете работать почти с любой СУБД.
Посмотрите LoopBack — это фреймворк на базе Express, ориентированный на модели.
Как аутентифицировать пользователей?¶
Аутентификация — еще одна область, где Express не навязывает подход. Вы можете использовать любую схему аутентификации. Для простого варианта с логином/паролем см. этот пример.
Какие движки шаблонов поддерживает Express?¶
Express поддерживает любой движок шаблонов, который соответствует сигнатуре (path, locals, callback). Для унификации интерфейсов и кэширования посмотрите проект consolidate.js. Движки, которых нет в списке, тоже могут поддерживать сигнатуру Express.
Подробнее см. Using template engines with Express.
Как обрабатывать ответы 404?¶
В Express ответ 404 не считается ошибкой, поэтому middleware обработки ошибок его не перехватывает. Это поведение объясняется тем, что 404 просто означает отсутствие подходящего обработчика: Express выполнил все middleware и маршруты и не нашел ответа. Нужно лишь добавить middleware в самый низ стека (ниже остальных), чтобы вернуть 404:
1 2 3 | |
Добавляйте маршруты динамически во время выполнения на экземпляр express.Router(), чтобы их не перекрывал middleware-обработчик.
Как настроить обработчик ошибок?¶
Middleware обработки ошибок определяется так же, как и обычный middleware, но принимает четыре аргумента вместо трех — сигнатура (err, req, res, next):
1 2 3 4 | |
Подробнее см. Error handling.
Как рендерить обычный HTML?¶
Никак — в этом обычно нет необходимости. Не нужно «рендерить» HTML через res.render(). Если у вас есть конкретный файл, используйте res.sendFile(). Если нужно раздавать много ресурсов из каталога, используйте express.static().
Какая версия Node.js требуется для Express?¶
- Express 4.x требует Node.js 0.10 или выше.
- Express 5.x требует Node.js 18 или выше.