
Créer un blog avec Nuxt Content et Tailwind Typography
Introduction
Dans ce tutoriel, vous allez créer un blog simple à l’aide de et . Vous créerez une page listant vos articles, la page de visualisation des articles, un en-tête et un pied de page. Vous retrouverez quelques idées pour aller plus loin à la fin de cet article.
Pour mener à bien la création de ce blog, vous aurez besoin de certains prérequis :
- Être familier avec les languages du web et l’utilisation du terminal,
- Avoir installé sur votre machine (version 18.0.0 ou supérieure),
- Posséder un éditeur de texte tel que ou (j’utiliserais Visual Studio Code dans mes exemples).
Création de la base du projet
Commençons sans tarder par initialiser un projet Nuxt Content en utilisant le template fourni par Nuxt :
npx nuxi@latest init blog -t content --packageManager npm --gitInit
Ensuite, installons TailwindCSS puis Tailwind Typography :
npx nuxi@latest module add tailwindcss
npm install @tailwindcss/typography
npx tailwindcss init --ts
Ouvrons notre projet dans Visual Studio Code pour poursuivre la configuration :
code blog
Configurons Tailwind :
import type { Config } from 'tailwindcss'
export default {
content: [],
theme: {
extend: {},
},
plugins: [
require('@tailwindcss/typography'),
],
} satisfies Config
@tailwind base;
@tailwind components;
@tailwind utilities;
Et rajoutons quelques options facultatives à la configuration de Nuxt Content :
export default defineNuxtConfig({
devtools: { enabled: true },
modules: ['@nuxt/content'],
routeRules: {
'/': { prerender: true }
},
content: {
// Permet d'avoir des blocs de code en couleur
highlight: {
theme: 'github-light'
},
// Définir la langue de notre blog
defaultLocale: "fr-FR"
},
})
En l’état, votre blog est fonctionnel. Vous pouvez l’essayer en lançant Nuxt :
npm run dev -- --open
Création des pages
Page d’accueil
Commençons par créer notre page d’accueil. Elle sera composée d’un en-tête avec le nom de notre blog, de la liste des articles qui le compose puis d’un pied de page.

Nous allons commencer par créer un nouveau fichier Vue qui correspondra à notre page d’accueil :
<script setup lang="ts">
const {data: navigation} = await useAsyncData('navigation', () => fetchContentNavigation())
</script>
<template>
<Head>
<Title>Mon blog</Title>
</Head>
<main class="2xl:max-w-[1400px] p-8 w-full mx-auto min-h-screen">
<NavBar />
<section v-if="navigation" class="mt-16">
<div class="prose">
<h1 class="my-8">Articles</h1>
</div>
<div class="flex flex-col">
<NuxtLink
v-for="(page, index) in navigation"
:key="page.title"
:to="page._path"
class="prose"
:class="index !== navigation.length - 1 ? 'mb-4 pb-4 border-b' : ''"
>
<h3>{{ page.title }}</h3>
</NuxtLink>
</div>
</section>
</main>
<Footer />
</template>
<template>
<nav class="font-semibold text-lg">
Mon Blog
</nav>
</template>
<template>
<footer class="xl:max-w-[900px] px-8 py-2 mt-8 text-xs opacity-80 mx-auto text-center">
Mon Blog © 2024 - Tous droits réservés
</footer>
</template>
Nous avons créé ici trois fichiers :
index.vue
: ce fichier correspond à la page d’accueil de notre site.NavBar.vue
etFooter.vue
: ces fichiers sont des composants qui contiennent du code que nous pourrons réutiliser à plusieurs endroits sans duplications.
Maintenant, vous avez une page d’accueil fonctionnelle qui affichera tous les articles que vous ajouterez au dossier content/
.
Page de visualisation
Vient ensuite la page la plus importante du blog : la page de l’article
<script setup lang="ts">
const route = useRoute()
const { data } = await useAsyncData('page', () => queryContent(route.path).findOne())
</script>
<template>
<Head>
<Title>{{ data?.title }}</Title>
</Head>
<main class="2xl:max-w-[1400px] p-8 w-full mx-auto min-h-screen">
<NavBar />
<article v-if="data" class="mt-16 prose lg:prose-xl mx-auto">
<ContentRenderer :value="data" />
</article>
</main>
<Footer />
</template>
Félicitations, vous avez créé votre blog avec Nuxt Content et Tailwind Typography !
Pour aller plus loin
Voici quelques idées de ce qui pourrait être amélioré dans votre blog (classées par ordre de difficulté) :
- Ajouter des suggestions d’articles populaires à la fin de chaque article pour créer plus d’engagement de la part de vos utilisateurs.
- Personnaliser certains éléments de typographie de vos articles tels que la couleur des liens.
- Ajouter une table des matières sur la gauche des articles pour aider le lecteur à se repérer.
- Ajouter des propriétés personnalisées telles que
description
etcover
à vos articles pour créer une page d’accueil plus engageante.