How To Properly Fetch Nuxt Content Data and Render It in Nuxt Pages

How To Properly Fetch Nuxt Content Data and Render It in Nuxt Pages

Here we will learn How To Properly Fetch Nuxt Content Data and Render It in Nuxt Pages

1st Mar 2023

nuxtnuxt-content

Introduction

Nuxt.js is a popular open-source framework for building Vue.js applications. With the release of Nuxt 3, developers have access to new features and improvements to streamline the development process. One of these features is Nuxt Content v2, which allows you to create and manage content in a simple and efficient way. In this blog post, we will guide you through the steps to connect Nuxt Content v2 with Nuxt 3.

Step 1: Install the necessary dependencies

The first step is to install the necessary dependencies for Nuxt Content v2. To do this, run the following command:

npm install @nuxt/content@next

Step 2: Configure Nuxt Content v2

Once the dependencies are installed, you need to configure Nuxt Content v2 in your Nuxt 3 project. To do this, create a new file named nuxt.config.js in the root directory of your project and add the following code:

export default {
  // Enable Nuxt Content module
  modules: [
    '@nuxt/content'
  ],

In the above code, we have enabled the Nuxt Content module and set the directory where your content will be stored.

Step 3: Create content files

Once Nuxt Content v2 is configured, you can create content files in the specified directory. By default, Nuxt Content v2 supports Markdown and YAML file formats. You can create a new file in the content directory with the following structure:

---
title: 'Hello, world!'
---

# Welcome to Nuxt Content v2

This is an example of a Markdown file created using Nuxt Content v2.

In the above code, we have created a Markdown file with a title and a sample content.

Step 4: Display content on a page

Now that we have created content files, we can display the content on a page. To do this, create a new Vue component in the components directory with the following code:

<script setup lang="ts">
const { path } = useRoute()
const articles = await queryContent(path).findOne()
</script>

<template>
  <main>
    <div>
      <ContentRenderer :value="articles">
        <template #empty>
          <p>No content found.</p>
        </template>
      </ContentRenderer>
    </div>
  </main>
</template>