Nitro
Nitro - это TypeScript фреймворк с открытым исходный кодом для создания сверхбыстрых веб-серверов. Nuxt (и, по желанию, Nuxt Bridge) использует Nitro в качестве своего серверного движка. Вы можете использовать useNitro
для доступа к экземпляру Nitro, addServerHandler
для добавления обработчика сервера, addDevServerHandler
для добавления обработчика сервера, который будет использоваться только в режиме разработки, addServerPlugin
для добавления плагина для расширения поведения Nitro во время выполнения и addPrerenderRoutes
для добавления маршрутов для предварительного рендеринга Nitro.
addServerHandler
Добавляет обработчик сервера Nitro. Используйте его, если вы хотите создать серверную middleware или настраиваемый маршрут.
Тип
function addServerHandler (handler: NitroEventHandler): void
export interface NitroEventHandler {
handler: string;
route?: string;
middleware?: boolean;
lazy?: boolean;
method?: string;
}
Параметры
handler
Тип: NitroEventHandler
Обязательный: true
Объект обработчика со следующими свойствами:
handler
(обязательный)
Тип:string
Путь к обработчику событий.route
(опциональный)
Тип:string
Префикс пути или маршрут. Если используется пустая строка, то будет использоваться middleware.middleware
(опциональный)
Тип:boolean
Указывает, что это обработчик middleware. Middleware вызываются на каждом маршруте и обычно не должны возвращать ничего для передачи следующим обработчикам.lazy
(опциональный)
Тип:boolean
Использовать ленивую загрузку для импорта обработчика.method
(опциональный)
Тип:string
Метод сопоставления маршрутизатора. Если имя обработчика содержит имя метода, оно будет использоваться в качестве значения по умолчанию.
Примеры
// https://github.com/nuxt-modules/robots
import { createResolver, defineNuxtModule, addServerHandler } from '@nuxt/kit'
export default defineNuxtModule({
setup(options) {
const resolver = createResolver(import.meta.url)
addServerHandler({
route: '/robots.txt'
handler: resolver.resolve('./runtime/robots.get.ts')
})
}
})
addDevServerHandler
Добавляет обработчик сервера Nitro, который будет использоваться только в режиме разработки. Этот обработчик будет исключен из сборки для продакшена.
Тип
function addDevServerHandler (handler: NitroDevEventHandler): void
export interface NitroDevEventHandler {
handler: EventHandler;
route?: string;
}
Параметры
handler
Тип: NitroEventHandler
Обязательный: true
Объект обработчика со следующими свойствами:
handler
(обязательный)
Тип:string
Обработчик события.route
(опциональный)
Тип:string
Префикс пути или маршрут. Если используется пустая строка, будет использоваться в качестве middleware.
Примеры
import { createResolver, defineNuxtModule, addDevServerHandler } from '@nuxt/kit'
export default defineNuxtModule({
setup() {
const resolver = createResolver(import.meta.url)
addDevServerHandler({
handler: () => {
return {
body: `Ответ, сгенерированный в ${new Date().toISOString()}`
}
},
route: '/_handler'
})
}
})
// https://github.com/nuxt-modules/tailwindcss
import { joinURL } from 'ufo'
import { defineNuxtModule, addDevServerHandler } from '@nuxt/kit'
export default defineNuxtModule({
async setup(options) {
const route = joinURL(nuxt.options.app?.baseURL, '/_tailwind')
// @ts-ignore
const createServer = await import('tailwind-config-viewer/server/index.js').then(r => r.default || r) as any
const viewerDevMiddleware = createServer({ tailwindConfigProvider: () => options, routerPrefix: route }).asMiddleware()
addDevServerHandler({ route, handler: viewerDevMiddleware })
}
})
useNitro
Возвращает экземпляр Nitro.
useNitro()
только после хука ready
.Тип
function useNitro (): Nitro
export interface Nitro {
options: NitroOptions;
scannedHandlers: NitroEventHandler[];
vfs: Record<string, string>;
hooks: Hookable<NitroHooks>;
unimport?: Unimport;
logger: ConsolaInstance;
storage: Storage;
close: () => Promise<void>;
updateConfig: (config: NitroDynamicConfig) => void | Promise<void>;
}
Примеры
// https://github.com/nuxt/nuxt/blob/4e05650cde31ca73be4d14b1f0d23c7854008749/packages/nuxt/src/core/nuxt.ts#L404
import { defineNuxtModule, useNitro, addPlugin, createResolver } from '@nuxt/kit'
export default defineNuxtModule({
setup(options, nuxt) {
const resolver = createResolver(import.meta.url)
nuxt.hook('ready', () => {
const nitro = useNitro()
if (nitro.options.static && nuxt.options.experimental.payloadExtraction === undefined) {
console.warn('Использование экспериментального извлечения полезной нагрузки для полностью статического вывода. Вы можете отказаться от этого, установив `experimental.payloadExtraction` в значение `false`.')
nuxt.options.experimental.payloadExtraction = true
}
nitro.options.replace['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction)
nitro.options._config.replace!['process.env.NUXT_PAYLOAD_EXTRACTION'] = String(!!nuxt.options.experimental.payloadExtraction)
if (!nuxt.options.dev && nuxt.options.experimental.payloadExtraction) {
addPlugin(resolver.resolve(nuxt.options.appDir, 'plugins/payload.client'))
}
})
}
})
addServerPlugin
Добавление плагина для расширения runtime-поведения Nitro.
Тип
function addServerPlugin (plugin: string): void
Параметры
plugin
Тип: string
Обязательный: true
Путь к плагину. Плагин должен экспортировать функцию, принимающую экземпляр Nitro в качестве аргумента.
Примеры
import { createResolver, defineNuxtModule, addServerPlugin } from '@nuxt/kit'
export default defineNuxtModule({
setup() {
const resolver = createResolver(import.meta.url)
addServerPlugin(resolver.resolve('./runtime/plugin.ts'))
}
})
addPrerenderRoutes
Add routes to be prerendered to Nitro.
Тип
function function addPrerenderRoutes (routes: string | string[]): void
Параметры
routes
Тип: string | string[]
Обязательный: true
Добавляет маршруты для предварительного рендеринга в Nitro.
Примеры
import { defineNuxtModule, addPrerenderRoutes } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'nuxt-sitemap',
configKey: 'sitemap',
},
defaults: {
sitemapUrl: '/sitemap.xml',
prerender: true,
},
setup(options) {
if (options.prerender) {
addPrerenderRoutes(options.sitemapUrl)
}
}
})
addServerImportsDir
Добавьте директорию, которая будет сканироваться Nitro на предмет автоимпорта.
Тип
function addServerImportsDir (dirs: string | string[], opts: { prepend?: boolean }): void
Параметры
dirs
Тип: string | string[]
Обязательный: true
Директория или массив директорий, которые необходимо зарегистрировать для сканирования Nitro
Примеры
import { defineNuxtModule, createResolver, addServerImportsDir } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule',
},
setup(options) {
const resolver = createResolver(import.meta.url)
addServerImportsDir(resolver.resolve('./runtime/server/utils'))
}
})
addServerScanDir
Добавьте директории, которые будут сканироваться Nitro. Nitro будет проверять подкаталоги, которые будут зарегистрированы
так же, как и папка ~/server
.
Тип
function addServerScanDir (dirs: string | string[], opts: { prepend?: boolean }): void
Параметры
dirs
Тип: string | string[]
Обязательный: true
Директория или массив директорий, которые Nitro хочет зарегистрировать в качестве серверных директорий.
Примеры
import { defineNuxtModule, createResolver, addServerScanDir } from '@nuxt/kit'
export default defineNuxtModule({
meta: {
name: 'my-module',
configKey: 'myModule',
},
setup(options) {
const resolver = createResolver(import.meta.url)
addServerScanDir(resolver.resolve('./runtime/server'))
}
})
Шаблоны
Nuxt Kit предоставляет набор утилит, которые помогают вам работать с шаблонами. Эти функции позволяют вам генерировать дополнительные файлы во время разработки и сборки.
Resolving
Nuxt Kit предоставляет набор утилит, которые помогут вам разрешать пути. Эти функции позволяют вам разрешать пути, относительные к текущему модулю, с неизвестным именем или расширением.