<NuxtLink>
<NuxtLink> - это встроенная замена как компонента Vue Router <RouterLink>, так и HTML-тега <a>. Он умно определяет, является ли ссылка внутренней или внешней, и рендерит ее соответствующим образом с помощью доступных оптимизаций (предварительная загрузка, атрибуты по умолчанию и т.д.)Внутренний роутинг
В этом примере мы используем компонент <NuxtLink> для перехода на другую страницу приложения.
<template>
<NuxtLink to="/about">
About page
</NuxtLink>
<!-- <a href="/about">...</a> (+Vue Router & предварительная загрузка) -->
</template>
Передача параметров динамическим маршрутам
В этом примере мы передаем параметр id для ссылки на маршрут ~/pages/posts/[id].vue.
<template>
<NuxtLink :to="{ name: 'posts-id', params: { id: 123 } }">
Post 123
</NuxtLink>
</template>
Обработка 404
При использовании <NuxtLink> для файлов директории /public или при указании на другое приложение в том же домене, вам следует использовать входной параметр external.
Использование external приводит к тому, что ссылка рендерится как тег a вместо Vue Router RouterLink.
<template>
<NuxtLink to="/the-important-report.pdf" external>
Download Report
</NuxtLink>
<!-- <a href="/the-important-report.pdf"></a> -->
</template>
Внешняя логика применяется по умолчанию при использовании абсолютных URL-адресов и при предоставлении входного параметра target.
Внешний роутинг
В этом примере мы используем компонент <NuxtLink> для перехода по ссылке на веб-сайт.
<template>
<NuxtLink to="https://nuxtjs.org">
Nuxt website
</NuxtLink>
<!-- <a href="https://nuxtjs.org" rel="noopener noreferrer">...</a> -->
</template>
Атрибуты target и rel
Атрибут rel с noopener noreferrer применяется по умолчанию к абсолютным ссылкам и ссылкам, которые открываются в новых вкладках.
noopenerустраняет ошибку безопасности в старых браузерах.noreferrerулучшает конфиденциальность для ваших пользователей, не отправляя заголовокRefererна сайт, на который дана ссылка.
Эти значения по умолчанию не оказывают негативного влияния на SEO и считаются лучшей практикой.
Когда вам нужно перезаписать это поведение, вы можете использовать входные параметры rel и noRel.
<template>
<NuxtLink to="https://twitter.com/nuxt_js" target="_blank">
Nuxt Twitter
</NuxtLink>
<!-- <a href="https://twitter.com/nuxt_js" target="_blank" rel="noopener noreferrer">...</a> -->
<NuxtLink to="https://discord.nuxtjs.org" target="_blank" rel="noopener">
Nuxt Discord
</NuxtLink>
<!-- <a href="https://discord.nuxtjs.org" target="_blank" rel="noopener">...</a> -->
<NuxtLink to="https://github.com/nuxt" no-rel>
Nuxt GitHub
</NuxtLink>
<!-- <a href="https://github.com/nuxt">...</a> -->
<NuxtLink to="/contact" target="_blank">
Contact page opens in another tab
</NuxtLink>
<!-- <a href="/contact" target="_blank" rel="noopener noreferrer">...</a> -->
</template>
Входные параметры
RouterLink
Если не используется external, <NuxtLink> поддерживает все входные параметры RouterLink от Vue Router
to: Любой URL-адрес или объект расположения маршрута из Vue Routercustom:<NuxtLink>должен обернуть свое содержимое в элемент<a>. Это позволяет полностью контролировать отображение ссылки и работу навигации при нажатии на нее. Работает так же, как и входной параметрcustomу Vue RouterexactActiveClass: Класс, который будет применяться к точным активным ссылкам. Работает так же, как и входной параметрexact-active-classу Vue Router для внутренних ссылок. По умолчанию используется значение по умолчанию от Vue Router ("router-link-exact-active")replace: Работает так же, как и входной параметрreplaceу Vue Router для внутренних ссылокariaCurrentValue: Значение атрибутаaria-current, которое будет применяться к конкретным активным ссылкам. Работает так же, как и входной параметрaria-current-valueу Vue Router для внутренних ссылокactiveClass: Класс, применяемый к активным ссылкам. Работает так же, как и входной параметрactive-classу Vue Router для внутренних ссылок. По умолчанию используется значение по умолчанию от Vue Router ("router-link-active")
NuxtLink
href: Алиас дляto. При использованииto,hrefбудет проигнорированnoRel: Если установлено вtrue, атрибутrelне будет добавлен к ссылкеexternal: Заставляет ссылку рендериться как тегaвместоRouterLinkу Vue Router.prefetch: Когда включено, будет выполняться предварительная загрузка middleware, layouts и payloads (при использовании payloadExtraction) ссылок в области просмотра. Используется в экспериментальной конфигурации crossOriginPrefetch.prefetchOn: Allows custom control of when to prefetch links. Possible options areinteractionandvisibility(default). You can also pass an object for full control, for example:{ interaction: true, visibility: true }. This prop is only used whenprefetchis enabled (default) andnoPrefetchis not set.noPrefetch: Отключает предварительную загрузку.prefetchedClass: Класс, применяемый к ссылкам, которые были предварительно загружены.
Якорь
target: Значение атрибутаtarget, применяемое к ссылке.rel: Значение атрибутаrel, применяемое к ссылке. По умолчанию для внешних ссылок используется"noopener noreferrer".
Перезапись значений по умолчанию
В Nuxt Config
Вы можете перезаписать некоторые значения по умолчанию для <NuxtLink> в вашем nuxt.config
app.config или в директорию app/.export default defineNuxtConfig({
experimental: {
defaults: {
nuxtLink: {
// значения по умолчанию
componentName: 'NuxtLink',
externalRelAttribute: 'noopener noreferrer',
activeClass: 'router-link-active',
exactActiveClass: 'router-link-exact-active',
prefetchedClass: undefined, // может быть любым допустимым строковым именем класса
trailingSlash: undefined // может быть 'append' или 'remove'
}
}
}
})
Пользовательский компонент ссылки
Вы можете перезаписать значения по умолчанию <NuxtLink>, создав свой собственный компонент ссылок с помощью defineNuxtLink.
export default defineNuxtLink({
componentName: 'MyNuxtLink',
/* подробнее смотрите в сигнатуре ниже */
})
Затем вы можете использовать компонент <MyNuxtLink /> как обычно с вашими новыми настройками по умолчанию.
Сигнатура defineNuxtLink
interface NuxtLinkOptions {
componentName?: string;
externalRelAttribute?: string;
activeClass?: string;
exactActiveClass?: string;
trailingSlash?: 'append' | 'remove'
prefetch?: boolean
prefetchedClass?: string
prefetchOn?: Partial<{
visibility: boolean
interaction: boolean
}>
}
function defineNuxtLink(options: NuxtLinkOptions): Component {}
componentName: Имя компонента. По умолчанию используетсяNuxtLink.externalRelAttribute: Значение атрибутаrelпо умолчанию, применяемое к внешним ссылкам. По умолчанию используется"noopener noreferrer". Установите значение"", чтобы отключитьactiveClass: Класс по умолчанию, применяемый к активным ссылкам. Работает так же, как и параметрlinkActiveClassу Vue Router. По умолчанию используется значение по умолчанию от Vue Router ("router-link-active")exactActiveClass: Класс по умолчанию, применяемый к точным активным ссылкам. Работает так же, как и параметрlinkExactActiveClassу Vue Router. По умолчанию используется значение по умолчанию от Vue Router ("router-link-exact-active")trailingSlash: Возможность добавлять или удалять слэши в конце вhref. Если значение не задано или не соответствует допустимым значениямappendилиremove, оно будет проигнорировано.prefetch: Whether or not to prefetch links by default.prefetchOn: Granular control of which prefetch strategies to apply by default.prefetchedClass: A default class to apply to links that have been prefetched.