Nuxt offers an incredible developer experience, with a lot of performance and application setup best practices baked in. In recent releases, they’ve been working on taking this developer experience to the next level, with some newer features that speed up and simplify developer processes. Let’s explore some today.
I set up a repo and site for you to explore some of these features! You can check them out here:
![A recipe page for crab cakes with red pepper. The recipe directions and ingredients are noted on the left and a featured image of the finished dish on the right.](https://i0.wp.com/css-tricks.com/wp-content/uploads/2021/08/CleanShot-2021-07-04-at-15.56.04@2x.png?resize=1600%2C1095&ssl=1)
Nuxt Content
You no longer have to pair Nuxt with an external headless CMS and do all of the setup, particularly if you’re not looking for something at a huge scale, but something smaller like a blog. Nuxt content offers a git-based headless CMS where you can write configuration in markdown, CSV, YAML, or XML, based on your preference. There are some out of the box configuration settings available to you, and writing custom configurations is as simple as creating a property.
What this means for development: you can write static Markdown files in a directory, and that can be your blog! We’re using the same dynamic pages API that you would typically use in Nuxt to generate this content.
It also offers full-text search out of the box, which is a lovely feature to add so quickly to a blog without having to integrate a third-party service.
This tutorial by Debbie O’Brien is an incredible guide, it walks you through every piece of setting it up, highly recommended.
Nuxt Components
One thing I noticed I was doing again and again and again was typing import code in all my components. I do have some snippets to make this a bit faster, but adding them each in every file was still interrupting the flow of my work just a bit.
Nuxt component module scans, imports, and registers components, so that we no longer need to do this. The components must be in the components directory, but we can use them in layouts, pages, and components themselves.
The addition of this module is a small change to our nuxt.config.js
:
export default {
components: true
}
Seriously, that’s it!
If you’d like a deep dive, this incredibly comprehensive guide by Kruite Patel has you covered.
If you use the component repeatedly, Nuxt will do some nice optimizations such as automatically creating a shared chunk for the component. Be mindful when using this on huge projects, though, as it may impact build times.
Nuxt Image
Nuxt Image is a newer module that offers seamless and quick resizes and transforms for optimized responsive images. You can use their built-in optimizer, or work with 10+ ready-to-use popular providers such as Cloudinary or Fastly.
The code output from using their API are standard <img>
and <picture>
tags, so there’s no obfuscation when integrating them into your workflow.
After adding the module, you’ll be able to add configuration to the images via an images property in the nuxt.config.js
, and designate breakpoints, providers, and other configurations:
export default {
image: {
// The screen sizes predefined by `@nuxt/image`:
screens: {
xs: 320,
sm: 640,
md: 768,
lg: 1024,
xl: 1280,
xxl: 1536,
'2xl': 1536
},
// Generate images to `/_nuxt/image/file.png`
staticFilename: '[publicPath]/images/[name]-[hash][ext]',
domains: [
'images.unsplash.com'
],
alias: {
unsplash: 'https://images.unsplash.com'
}
}
}
This is just a sampling of some of the options available to you, provided as an example. The full documentation is here.
And then the usage is similar to any Vue component:
<nuxt-img src="/nuxt-icon.png" />
or
<nuxt-picture src="/nuxt-icon.png" />
Further information and all options are documented here. Hat tip to Ben Hong for letting me know this was available. He has a few Nuxt resources out there that are worth exploring, too!
Sample Repo
I’ve created a sample repo for you to explore that uses all of this functionality. It’s a small recipe blog with nuxt-content for the recipe entries, Nuxt components so that I didn’t need to define imports, and nuxt-image for the image transformations.
You can visit it here to see it all in action, fork it, play around with it, and make it your own.
You can see in it how I used the $img
API in Nuxt image for background images here, too, which is not yet fully documented.
Nuxt offers incredible developer experience. Nuxt is even coming out with a new version soon with more updates, always expertly implemented. It’s why using Nuxt is continually such a joy, and proves to be a great framework for teams and single developers alike.