# Link
A Link-component with sensible defaults and Vue Router (opens new window) integration.
API
The Link-component has a dedicated API documentation.
# Installation
$ npm install @vue-cdk/link --save
Weak Dependencies
If you want to use @vue-cdk/link's Vue Router integration make sure to also install and properly configure Vue Router (opens new window).
# Rationale & Features
At first, a link-component might seem silly. However, there are things that you can do wrong – even with seemingly trivial things. @vue-cdk/link tries to make it easy to do the right things.
# Security Issues
Consider the following example:
<a href="https://example.org">
  Our Sponsor
</a>
This renders a native anchor-element and from a pure functionality perspective the link will work. Linking to external and potentially untrusted sites can be a security issue. One security issue that is relevant for the example above is called tabnabbing (opens new window).
There are also other side issues like a sub-optimal performance for external link that don't receive special are.
@vue-cdk/link fixes this by attaching special attributes to external links. The attributes that are attached to external links are:
| Attribute | Value | 
|---|---|
| target | _blank | 
| rel | noopener noreferrer | 
External links are automatically detected by @vue-cdk/link.
# Vue Router Integration
If you are using href then internal links will receive no special handling:
<CLink href="/my/other/page">
  My other Page
</CLink>
This will render a normal anchor-element without any special handling.
Link also has a to-prop. If set, then Link will render a RouterLink. This allows you to use the same component for internal–, external– and router–links:
<CLink to="/my/route">
  Router Link to /my/route
</CLink>
# Demo
Nothing special here – just two examples:
# Internal Link
 Show Code  
 <template>
  <CLink to="/internal-path/">/internal-path/</CLink>
</template>
<script>
import VueRouter from 'vue-router'
const router = new VueRouter({
  mode: 'hash',
  routes: [
    {
      path: '/internal-path',
      component: {
        render(h) {
          return h('div', 'hrhr')
        },
      },
    },
  ],
})
export default {
  router,
}
</script>
# External Link
 Show Code  
 <template>
  <CLink href="https://example.org">External Link (example.org)</CLink>
</template>
