The`components/`directory is where you put all your Vue components which can then be imported inside your pages or other components ([learn more](https://v3.vuejs.org/guide/component-basics.html)).
For clarity, it is recommended that the component file name matches its name. (So, in the example above, you could rename `Button.vue` to be `BaseFooButton.vue`.)
To dynamically import a component (also known as lazy-loading a component) all you need to do is add the `Lazy` prefix to the component name.
```html{}[layouts/default.vue]
<template>
<div>
<TheHeader/>
<Nuxt/>
<LazyTheFooter/>
</div>
</template>
```
This is particularly useful if the component is not always needed. By using the `Lazy` prefix you can delay loading the component code until the right moment, which can be helpful for optimizing your JavaScript bundle size.
Nuxt provides the `<ClientOnly>` component for purposely rendering a component only on client-side. To import a component only on the client, register the component in a client-side only plugin.
```html{}[pages/example.vue]
<template>
<div>
<Sidebar/>
<ClientOnly>
<!-- this component will only be rendered on client-side -->
<Comments/>
</ClientOnly>
</div>
</template>
```
Use a slot as fallback until `<ClientOnly>` is mounted on client-side.
```html{}[pages/example.vue]
<template>
<div>
<Sidebar/>
<ClientOnly>
<!-- this component will only be rendered on client-side -->