<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sacha Bouillez</title>
    <description>The latest articles on Forem by Sacha Bouillez (@prazdevs).</description>
    <link>https://forem.com/prazdevs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F247502%2F759ae881-d028-4de5-ac47-c58269050516.jpg</url>
      <title>Forem: Sacha Bouillez</title>
      <link>https://forem.com/prazdevs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/prazdevs"/>
    <language>en</language>
    <item>
      <title>Créez votre blog (presque) sans code avec Nuxt 3 et Nuxt/Content</title>
      <dc:creator>Sacha Bouillez</dc:creator>
      <pubDate>Thu, 28 Jul 2022 12:13:00 +0000</pubDate>
      <link>https://forem.com/prazdevs/creez-votre-blog-presque-sans-code-avec-nuxt-3-et-nuxtcontent-29n0</link>
      <guid>https://forem.com/prazdevs/creez-votre-blog-presque-sans-code-avec-nuxt-3-et-nuxtcontent-29n0</guid>
      <description>&lt;p&gt;Pour certain·e·s, c'est le désir de partager, pour d'autres, c'est une façon de prendre des notes, mais on a tous·tes, en tant que développeur·se, au moins une bonne raison de créer notre propre dev blog. Sauf que bien des fois, on peut se retrouver découragé·e devant la myriade de technologies à notre disposition pour créer un site web, et la potentielle courbe d'apprentissage de celles-ci.&lt;/p&gt;

&lt;p&gt;Et si je te dis que grâce à Nuxt 3 et au module Nuxt/Content, il devient beaucoup plus facile de créer un site dit "content-driven", comme le serait notre dev blog.&lt;/p&gt;

&lt;p&gt;Nuxt 3 est le framework "piles incluses" de Vue 3. Il est, à l'heure où j'écris cet article, encore en Release Candidate, mais peu de choses devraient changer d'ici la version finale.&lt;br&gt;
Le but de cet article n'est pas de faire une revue détaillée du fonctionnement de Nuxt puisque nous n'allons écrire que peu de code propre au framework mais je t'invite à jeter un oeil à &lt;a href="https://v3.nuxtjs.org/" rel="noopener noreferrer"&gt;la documentation&lt;/a&gt; pour te permettre d'aller plus loin par la suite.&lt;/p&gt;

&lt;p&gt;Nuxt/Content est un module Nuxt qui permet au framework de transformer des simples fichiers markdown en véritables pages pour nous permettre de créer un site en se concentrant sur le contenu. Il y a aussi &lt;a href="https://content.nuxtjs.org/" rel="noopener noreferrer"&gt;une documentation&lt;/a&gt; pour t'aider à approfondir sur le module.&lt;/p&gt;
&lt;h2&gt;
  
  
  Création du projet
&lt;/h2&gt;

&lt;p&gt;Dans ton terminal préféré, il te suffit de lancer la commande suivante pour initialiser un projet Nuxt :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx nuxi init mon-blog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour être tranquille pour la suite, nous allons installer ce dont on a besoin :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;mon-blog
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm i &lt;span class="nt"&gt;-D&lt;/span&gt; @nuxt/content
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Le dev server se lance avec la commande :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En navigant sur &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;, tu te retrouves alors sur la page de notre nouveau site, auto-générée par la CLI de Nuxt (nuxi).&lt;/p&gt;

&lt;p&gt;Afin de pouvoir utiliser le module content, il faut l'ajouter aux modules dans la config Nuxt &lt;code&gt;nuxt.config.ts&lt;/code&gt; comme ci-dessous :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineNuxtConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nuxt&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineNuxtConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;modules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@nuxt/content&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Un peu de code
&lt;/h2&gt;

&lt;p&gt;Désolé, il y aura quand même un peu de code... Il faut bien préparer la structure! &lt;/p&gt;

&lt;h3&gt;
  
  
  Une première page
&lt;/h3&gt;

&lt;p&gt;La première chose à faire est de préparer les pages. Nuxt, par convention, transformera chaque composant Vue déclaré dans le dossier &lt;code&gt;pages&lt;/code&gt; en page, dont le chemin sera le nom donné au fichier. Ainsi &lt;code&gt;pages/index.vue&lt;/code&gt; va créer une route qui correspond à l'index de notre site. Et c'est ce que nous allons faire avec un placeholder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- pages/index.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;index page&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensuite, il nous faut soit retirer le fichier &lt;code&gt;app.vue&lt;/code&gt; (et laisser Nuxt wrapper les pages lui même) ou l'éditer pour lui indiquer d'utiliser les pages (et layouts).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- app.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;NuxtLayout&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;NuxtPage/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/NuxtLayout&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si l'on essaie d'accéder à une quelconque adresse autre que l'index, Nuxt nous renverra une erreur 404. Ce qui est normal puisque nous n'avons configuré qu'une unique page.&lt;/p&gt;

&lt;h3&gt;
  
  
  D'autres pages grâce au catch-all
&lt;/h3&gt;

&lt;p&gt;Pour garder une structure simple dans le cadre de cet article, nous considérerons, que toutes les autres pages sont potentiellement des articles du blog. Pour les exposer, il suffit alors de créer une page dite "catch-all". Sous le dossier &lt;code&gt;pages/&lt;/code&gt;, on appellera ce composant &lt;code&gt;[...slug].vue&lt;/code&gt;, c'est la convention retenue par Nuxt pour "attraper" tout autre chemin qui n'est pas clairement défini comme une page (comme l'est &lt;code&gt;index.vue&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- pages/[...slug].vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;ContentDoc&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et ça suffit pour le moment pour le code. Mais qu'est-ce que ce composant &lt;code&gt;ContentDoc&lt;/code&gt; et d'où sort-il ? &lt;/p&gt;

&lt;p&gt;Il s'agit d'un composant auto-importé par Nuxt, exposé par le module Content qui a deux fonctionnalités:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Récupérer le contenu d'un fichier markdown.&lt;/li&gt;
&lt;li&gt;Faire le rendu de celui-ci.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Où va-t-il récupérer le contenu ? C'est le sujet de la suite !&lt;/p&gt;

&lt;h2&gt;
  
  
  Ajouter du contenu
&lt;/h2&gt;

&lt;p&gt;Par convention, le module content ira chercher tout fichier markdown, yaml, json et même csv dans un dossier &lt;code&gt;content/&lt;/code&gt; situé à la racine.&lt;/p&gt;

&lt;p&gt;C'est donc parti pour écrire notre premier post en créant un fichier Markdown &lt;code&gt;content/mon-premier-post.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Mon premier post&lt;/span&gt;

Ceci est le contenu du premier post de mon blog Nuxt + Content.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et juste avec ça, nous venons de créer le premier post de notre blog! En navigant vers &lt;a href="http://localhost:3000/mon-premier-post" rel="noopener noreferrer"&gt;http://localhost:3000/mon-premier-post&lt;/a&gt;, on peut voir le contenu parsé et rendu en HTML équivalent à notre Markdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2ekql0zu3921mepaz8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2ekql0zu3921mepaz8s.png" alt="Rendu de page web avec pour titre 'Mon premier post' et un paragraphe exemple"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour donner un peu plus de contenu, nous allons créer un deuxième post avec &lt;code&gt;content/un-autre-post.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Un autre post

Et voici un autre post, le premier s'ennuyait.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et une autre page est ajoutée à notre site : &lt;a href="https://localhost:3000/un-autre-post" rel="noopener noreferrer"&gt;https://localhost:3000/un-autre-post&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Ajouter la navigation
&lt;/h1&gt;

&lt;p&gt;Maintenant que nous avons quelque posts, il serait intéressant de pouvoir accéder à ceux-ci depuis notre page d'accueil. Nuxt/Content expose le composant 'ContentNavigation', il s'agit d'un composant dit "renderless": ce composant ne fait aucun rendu mais expose des variables et méthodes à ses composants enfants. Reprenons notre page &lt;code&gt;index.vue&lt;/code&gt; comme ceci:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Mon blog Nuxt 3 + Content 2&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;nav&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;ContentNavigation&lt;/span&gt; &lt;span class="na"&gt;v-slot=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;{ navigation }"&amp;gt;
          &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;v-for=&lt;/span&gt;&lt;span class="s"&gt;"link of navigation"&lt;/span&gt; &lt;span class="na"&gt;:key=&lt;/span&gt;&lt;span class="s"&gt;"link._path"&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;NuxtLink&lt;/span&gt; &lt;span class="na"&gt;:to=&lt;/span&gt;&lt;span class="s"&gt;"link._path"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
              &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/NuxtLink&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/ContentNavigation&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/nav&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Le composant &lt;code&gt;ContentNavigation&lt;/code&gt; génère une liste de liens vers chacune des pages que nous avons créées et les expose auto-magiquement au travers de &lt;code&gt;navigation&lt;/code&gt;. Si cette mécanique Vue appelée "scoped slots" t'es inconnue, voici &lt;a href="https://vuejs.org/guide/components/slots.html#scoped-slots" rel="noopener noreferrer"&gt;la documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Allez plus loin
&lt;/h1&gt;

&lt;p&gt;Maintenant que nous avons une structure, il est temps d'ajouter un peu d'âme et de customisation à notre blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modifier les composants Markdown (Prose)
&lt;/h2&gt;

&lt;p&gt;Il est très facile de surcharger les composants utilisés par Nuxt/Content pour transformer le markdown en HTML. Voici la &lt;a href="https://content.nuxtjs.org/api/components/prose" rel="noopener noreferrer"&gt;liste des composants Prose&lt;/a&gt; que Nuxt/Content met à notre disposition.&lt;/p&gt;

&lt;p&gt;Ainsi, en déclarant un composant &lt;code&gt;ProseH1.vue&lt;/code&gt; dans un dossier &lt;code&gt;components/content/&lt;/code&gt; comme ceci:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- components/content/ProseH1.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&amp;lt;slot&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt; &lt;span class="na"&gt;scoped&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;style&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tous les &lt;code&gt;h1&lt;/code&gt; générés par les &lt;code&gt;#&lt;/code&gt; markdown sont maintenant rouge et en gras, comme décidé dans notre composant &lt;code&gt;ProseH1&lt;/code&gt; !&lt;/p&gt;

&lt;h2&gt;
  
  
  La syntaxe MDC
&lt;/h2&gt;

&lt;p&gt;Toujours dans l'optique de centrer la création des sites sur le contenu, le module Nuxt/Content apporte une syntaxe Markdown particulière : les MDC (ou MarkDown Components). Nous allons pouvoir créer des composants Vue et les réutiliser directement depuis nos fichiers de contenu en Markdown. Cette syntaxe va nous permettre d'utiliser les nombreuses API des composants Vue (props, slots...) depuis les fichiers Markdown.&lt;/p&gt;

&lt;p&gt;Voici un bouton pour l'exemple, qu'on mettre lui aussi dans &lt;code&gt;components/content&lt;/code&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- components/content/CustomButton --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"ts"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nx"&gt;defineProps&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sendAlert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello :)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"sendAlert"&lt;/span&gt; &lt;span class="na"&gt;:style=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;{ color }"&amp;gt;
    &lt;span class="nt"&gt;&amp;lt;slot&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allons éditer notre premier post pour y ajouter ce bouton :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Mon premier post&lt;/span&gt;

Ceci est le contenu du premier post de mon blog Nuxt + Content.

::CustomButton{color='red'}
clique sur moi!
::
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On peut directement passer des props au composant, comme nous avons passé &lt;code&gt;color&lt;/code&gt; dans cet exemple! Cette syntaxe supporte même les named slots. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fced6saaqyjjeaumcixao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fced6saaqyjjeaumcixao.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Je te laisse approfondir dans &lt;a href="https://content.nuxtjs.org/guide/writing/mdc" rel="noopener noreferrer"&gt;la documentation&lt;/a&gt;. Tout composant déclaré dans &lt;code&gt;components/content&lt;/code&gt; sera accessible depuis les fichier Markdown de contenu, les possibilités sont presque infinies!&lt;/p&gt;

&lt;p&gt;Cette article reste une introduction très basique à Nuxt et au module Content, mais j'espère qu'il te donne une idée du monde de possibilités que ces technologies offrent. A considérer aussi qu'à l'heure ou j'écris cet article, elles sont encore jeunes (&lt;code&gt;nuxt@3.0.0RC-6&lt;/code&gt; et &lt;code&gt;@nuxt/content@v2.0.1&lt;/code&gt;), et seront surement amenées à évoluer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tu peux retrouver le code de cet article sur &lt;a href="https://github.com/prazdevs/blog-nuxt-content-fr" rel="noopener noreferrer"&gt;ce repo&lt;/a&gt;. Je t'invite aussi à passer sur &lt;a href="https://praz.dev" rel="noopener noreferrer"&gt;mon dev blog&lt;/a&gt;, réalisé avec Nuxt3 et Nuxt/Content, dont tu peux retrouver le code &lt;a href="https://github.com/prazdevs/praz.dev" rel="noopener noreferrer"&gt;ici&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>vue</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>french</category>
    </item>
  </channel>
</rss>
