Серверный плагин в Nuxt
Клиентские плагины в app/plugins
запускаются при создании приложения
в браузере и на сервере рендера.
Другая точка входа - server/plugins:
здесь код привязан к Nitro, серверному
движку Nuxt, и отрабатывает при
старте сервера один раз,
а не при каждом переходе между
страницами Vue.
Давайте разберём, зачем это нужно.
Плагин может подписаться на события
Nitro и дополнять объект event.context
для каждого входящего HTTP-запроса.
Обработчики в server/routes
и server/api читают те же
поля контекста, что подготовил плагин.
Минимальный плагин и маршрут, который проверяет флаг:
- /server/
- /plugins/
- ready.js
- /routes/
- check.js
- /plugins/
Код плагина с хуком request:
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook('request', (event) => {
event.context.started = true;
});
});
Маршрут прочитает event.context.started
и вернёт текст. После перезапуска
npm run dev GET на /check
даст server ok. Не путайте
server/plugins с app/plugins:
export default defineEventHandler((event) => {
if (event.context.started) {
return 'server ok';
}
return 'server wait';
});
Сделайте серверный плагин,
который записывает строку
ready в поле mark
объекта event.context
при каждом запросе.
Сделайте серверный маршрут,
который возвращает значение
event.context.mark в теле
ответа.