Изучите Nuxt с коллекцией из 100+ советов!

Компоненты

Nuxt Kit предоставляет набор утилит, которые помогут вам работать с компонентами. Вы можете зарегистрировать компоненты глобально или локально, а также добавить директории для сканирования на наличие компонентов.

Компоненты - это строительные блоки вашего приложения Nuxt. Они представляют собой переиспользуемые инстансы Vue, которые могут быть использованы для создания пользовательского интерфейса. В Nuxt компоненты из директории components по умолчанию импортируются автоматически. Однако, если вам нужно импортировать компоненты из альтернативной директории или вы хотите выборочно импортировать их по мере необходимости, @nuxt/kit предоставляет методы addComponentsDir и addComponent. Эти утилиты позволяют настроить конфигурацию компонентов в соответствии с вашими потребностями.

Посмотрите видео от Vue School о внедрении компонентов.

addComponentsDir

Регистрирует директорию, которая будет сканироваться на наличие компонентов и импортироваться только при использовании. Помните, что при этом не происходит глобальной регистрации компонентов, пока вы не укажете опцию global: true.

Тип

async function addComponentsDir (dir: ComponentsDir, opts: { prepend?: boolean } = {}): void

interface ComponentsDir {
  path: string
  pattern?: string | string[]
  ignore?: string[]
  prefix?: string
  pathPrefix?: boolean
  enabled?: boolean
  prefetch?: boolean
  preload?: boolean
  isAsync?: boolean
  extendComponent?: (component: Component) => Promise<Component | void> | (Component | void)
  global?: boolean
  island?: boolean
  watch?: boolean
  extensions?: string[]
  transpile?: 'auto' | boolean
}

// При необходимости вы можете дополнить этот интерфейс (экспортированный из `@nuxt/schema`)
interface ComponentMeta {
  [key: string]: unknown
}

interface Component {
  pascalName: string
  kebabName: string
  export: string
  filePath: string
  shortPath: string
  chunkName: string
  prefetch: boolean
  preload: boolean
  global?: boolean
  island?: boolean
  mode?: 'client' | 'server' | 'all'
  priority?: number
  meta?: ComponentMeta
}

Параметры

dir

Тип: ComponentsDir

Обязательный: true

Объект со следующими свойствами:

  • path (обязательный)
    Тип: string
    Путь (абсолютный или относительный) к директории, содержащей ваши компоненты. Вы можете использовать алиасы Nuxt (~ или @) для ссылки на директории внутри проекта или напрямую использовать путь к пакету npm, аналогичный require.
  • pattern (опциональный)
    Тип: string | string[]
    Принимает паттерн, который будет запущен по указанному пути.
  • ignore (опциональный)
    Тип: string[]
    Игнорирует паттерны, которые будут выполняться по указанному пути.
  • prefix (опциональный)
    Тип: string
    Префикс всех найденных компонентов с помощью этой строки.
  • pathPrefix (опциональный)
    Тип: boolean
    Префикс имени компонента по его пути.
  • enabled (опциональный)
    Тип: boolean
    Игнорирует сканирование этой директории, если установлено значение true.
  • prefetch (опциональный)
    Тип: boolean
    Эти свойства (prefetch/preload) используются в продакшене для настройки того, как компоненты с префиксом Lazy будут обрабатываться webpack с помощью его магических комментариев. Узнайте больше в документации webpack
  • preload (опциональный)
    Тип: boolean
    Эти свойства (prefetch/preload) используются в продакшене для настройки того, как компоненты с префиксом Lazy будут обрабатываться webpack с помощью его магических комментариев. Узнайте больше в документации webpack
  • isAsync (опциональный)
    Тип: boolean
    Этот флаг указывает, что компонент должен быть загружен асинхронно (отдельным чанком) независимо от того, используется префикс Lazy или нет.
  • extendComponent (опциональный)
    Тип: (component: Component) => Promise<Component | void> | (Component | void)
    Функция, которая будет вызываться для каждого компонента, найденного в директории. Она принимает объект компонента и должна возвращать объект компонента или промис, который разрешается в объект компонента.
  • global (опциональный)
    Тип: boolean
    По умолчанию: false
    Если включено, регистрирует компоненты для глобальной доступности.
  • island (опциональный)
    Тип: boolean
    Если включено, регистрирует компоненты как острова.
  • watch (опциональный)
    Тип: boolean
    Следит за изменениями в указанном пути, включая добавление и удаление файлов.
  • extensions (опциональный)
    Тип: string[]
    Расширения, поддерживаемые сборщиком Nuxt.
  • transpile (опциональный)
    Тип: 'auto' | boolean
    Транспилирует указанный путь с помощью build.transpile. Если установлено значение 'auto', то будет установлено значение transpile: true, если node_modules/ находится по пути.

opts

Обязательный: false

  • prepend (опциональный)
    Тип: boolean
    Если установлено значение true, директория будет добавлена в массив с помощью unshift() вместо push().

addComponent

Регистрирует компонент для автоматического импорта.

Тип

async function addComponent (options: AddComponentOptions): void

interface AddComponentOptions {
  name: string,
  filePath: string,
  pascalName?: string,
  kebabName?: string,
  export?: string,
  shortPath?: string,
  chunkName?: string,
  prefetch?: boolean,
  preload?: boolean,
  global?: boolean,
  island?: boolean,
  mode?: 'client' | 'server' | 'all',
  priority?: number,
}

Параметры

options

Тип: AddComponentOptions

Обязательный: true

Объект со следующими свойствами:

  • name (обязательный)
    Тип: string
    Название компонента.
  • filePath (обязательный)
    Тип: string
    Путь к компоненту.
  • pascalName (опциональный)
    Тип: pascalCase(options.name)
    Имя компонента в PascalCase. Если имя не указано, оно будет сгенерировано из имени компонента.
  • kebabName (опциональный)
    Тип: kebabCase(options.name)
    Имя компонента в kebab-case. Если имя не указано, оно будет сгенерировано из имени компонента.
  • export (опциональный)
    Тип: string
    По умолчанию: 'default'
    Устанавливает именованный экспорт или экспорт по умолчанию. Если не указано, то будет установлено значение 'default'.
  • shortPath (опциональный)
    Тип: string
    Короткий путь к компоненту. Если он не указан, то будет сгенерирован из пути к компоненту.
  • chunkName (опциональный)
    Тип: string
    По умолчанию: 'components/' + kebabCase(options.name)
    Имя чанка для компонента. Если имя не указано, оно будет сгенерировано из имени компонента.
  • prefetch (опциональный)
    Тип: boolean
    Эти свойства (prefetch/preload) используются в продакшене для настройки того, как компоненты с префиксом Lazy будут обрабатываться webpack с помощью его магических комментариев. Узнайте больше в документации webpack
  • preload (опциональный)
    Тип: boolean
    Эти свойства (prefetch/preload) используются в продакшене для настройки того, как компоненты с префиксом Lazy будут обрабатываться webpack с помощью его магических комментариев. Узнайте больше в документации webpack
  • global (опциональный)
    Тип: boolean
    По умолчанию: false
    Если включено, регистрирует компонент для глобальной доступности.
  • island (опциональный)
    Тип: boolean
    Если включено, регистрирует компонент как остров. Подробнее об островах вы можете прочитать в описании компонента <NuxtIsland/>.
  • mode (опциональный)
    Тип: 'client' | 'server' | 'all'
    По умолчанию: 'all'
    Эта опция указывает, где компонент должен отображаться - на клиенте, сервере или и там, и там. По умолчанию он будет отображаться как на клиенте, так и на сервере.
  • priority (опциональный)
    Тип: number
    По умолчанию: 1
    Приоритет компонента: если несколько компонентов имеют одинаковое имя, будет использоваться тот, у которого самый высокий приоритет.