--- title: "" description: "Nuxt provides component to handle any kind of links within your application." --- # `` Nuxt provides `` component to handle any kind of links within your application. `` is a drop-in replacement for both Vue Router's `` component and HTML's `` tag. It intelligently determines whether the link is _internal_ or _external_ and renders it accordingly with available optimizations (prefetching, default attributes, etc.) ## Examples ### Basic Usage In this example, we use `` component to link to a website. ```vue [app.vue] ``` :button-link[Open on StackBlitz]{href="https://stackblitz.com/github/nuxt/nuxt/tree/main/examples/routing/nuxt-link?terminal=dev&file=/pages/index.vue" blank} ### Internal Routing In this example, we use `` component to link to another page of the application. ```vue [pages/index.vue] ``` :button-link[Open on StackBlitz]{href="https://stackblitz.com/github/nuxt/nuxt/tree/main/examples/routing/nuxt-link?terminal=dev&file=/pages/index.vue" blank} ### `target` and `rel` Attributes In this example, we use `` with `target`, `rel`, and `noRel` props. ```vue [app.vue] ``` :button-link[Open on StackBlitz]{href="https://stackblitz.com/github/nuxt/nuxt/tree/main/examples/routing/nuxt-link?terminal=dev&file=/pages/index.vue" blank} ## Props - **to**: Any URL or a [route location object](https://router.vuejs.org/api/interfaces/RouteLocation.html) from Vue Router - **href**: An alias for `to`. If used with `to`, `href` will be ignored - **target**: A `target` attribute value to apply on the link - **rel**: A `rel` attribute value to apply on the link. Defaults to `"noopener noreferrer"` for external links. - **noRel**: If set to `true`, no `rel` attribute will be added to the link - **activeClass**: A class to apply on active links. Works the same as [Vue Router's `active-class` prop](https://router.vuejs.org/api/interfaces/RouterLinkProps.html#Properties-activeClass) on internal links. Defaults to Vue Router's default (`"router-link-active"`) - **exactActiveClass**: A class to apply on exact active links. Works the same as [Vue Router's `exact-active-class` prop](https://router.vuejs.org/api/interfaces/RouterLinkProps.html#Properties-exactActiveClass) on internal links. Defaults to Vue Router's default `"router-link-exact-active"`) - **replace**: Works the same as [Vue Router's `replace` prop](https://router.vuejs.org/api/interfaces/RouteLocationOptions.html#Properties-replace) on internal links - **ariaCurrentValue**: An `aria-current` attribute value to apply on exact active links. Works the same as [Vue Router's `aria-current-value` prop](https://router.vuejs.org/api/interfaces/RouterLinkProps.html#Properties-ariaCurrentValue) on internal links - **external**: Forces the link to be considered as external (`true`) or internal (`false`). This is helpful to handle edge-cases - **prefetch** and **noPrefetch**: Whether to enable prefetching assets for links that enter the view port. - **prefetchedClass**: A class to apply to links that have been prefetched. - **custom**: Whether `` should wrap its content in an `` element. It allows taking full control of how a link is rendered and how navigation works when it is clicked. Works the same as [Vue Router's `custom` prop](https://router.vuejs.org/api/interfaces/RouterLinkProps.html#Properties-custom) ::alert{icon=👉} Defaults can be overwritten, see [overwriting defaults](#overwriting-defaults) if you want to change them. :: ## Overwriting Defaults You can overwrite `` defaults by creating your own link component using `defineNuxtLink`. ```js [components/MyNuxtLink.ts] export default defineNuxtLink({ componentName: 'MyNuxtLink', /* see signature below for more */ }) ``` You can then use `` component as usual with your new defaults. :button-link[Open on StackBlitz]{href="https://stackblitz.com/github/nuxt/nuxt/tree/main/examples/routing/nuxt-link?terminal=dev&file=/components/MyNuxtLink.ts" blank} ### `defineNuxtLink` Signature ```ts defineNuxtLink({ componentName?: string; externalRelAttribute?: string; activeClass?: string; exactActiveClass?: string; prefetchedClass?: string; trailingSlash?: 'append' | 'remove' }) => Component ``` - **componentName**: A name for the defined `` component. - **externalRelAttribute**: A default `rel` attribute value applied on external links. Defaults to `"noopener noreferrer"`. Set it to `""` to disable - **activeClass**: A default class to apply on active links. Works the same as [Vue Router's `linkActiveClass` option](https://router.vuejs.org/api/interfaces/RouterOptions.html#Properties-linkActiveClass). Defaults to Vue Router's default (`"router-link-active"`) - **exactActiveClass**: A default class to apply on exact active links. Works the same as [Vue Router's `linkExactActiveClass` option](https://router.vuejs.org/api/interfaces/RouterOptions.html#Properties-linkExactActiveClass). Defaults to Vue Router's default (`"router-link-exact-active"`) - **prefetchedClass**: A default class to apply to links that have been prefetched. - **trailingSlash**: An option to either add or remove trailing slashes in the `href`. If unset or not matching the valid values `append` or `remove`, it will be ignored. ::LinkExample{link="/docs/examples/routing/nuxt-link"} ::