Retour aux articles
Développement21 avr. 20265 min de lecture

Comment créer des composants en JavaScript Natif ? (sans framework)

Apprends à créer des composants réutilisables en Vanilla JS sans framework grâce aux Web Components. Guide simple, performant et SEO-friendly.

Comment créer des composants en JavaScript Natif ? (sans framework)

Créer des composants sans framework : quand le vanilla JS suffit

On a souvent le réflexe d’ouvrir React, Vue ou Svelte dès qu’on commence un projet web, car ces outils offrent une structure et des fonctionnalités prêtes à l’emploi. Mais est-ce vraiment nécessaire pour un projet avec seulement quelques pages et un blog ? Pas forcément. Le JavaScript natif permet de créer des composants réutilisables, propres et performants, sans alourdir ton projet inutilement.

Pourquoi utiliser des composants ?

Sur un site multi-pages, certains éléments reviennent partout : la navigation, le footer, des boutons, des champs de formulaire... Sans composants, tu te retrouves à copier-coller le même HTML sur chaque page. Et quand tu dois modifier quelque chose, tu dois tout repasser à la main. C'est chronophage et source d'erreurs. Les composants règlent ce problème car tu écris le code une seule fois et tu l'utilises partout. Voici quelques exemples :

Option 1 : les Web Components natifs

Les Web Components sont une fonctionnalité native du navigateur bien documentée sur MDN. Pas besoin d'installer quoi que ce soit, ça marche partout. Le principe est simple : tu crées une classe JavaScript qui étend HTMLElement, tu écris ton HTML dans connectedCallback(), et tu enregistres ton élément avec customElements.define(). C'est aussi simple que ça ! Voici un exemple simple avec un footer :

File.js
class MonFooter extends HTMLElement {
  connectedCallback() {
    this.innerHTML = `
      <footer>
        <p>© 2026 Benjamin Drouin</p>
      </footer>
    `;
  }
}

customElements.define("mon-footer", MonFooter);

Pour l'utiliser dans une page HTML :

File.html
<!-- Dans le <head> -->
<script src="/src/components/mon-footer.js" defer></script>

<!-- Dans le <body> -->
<mon-footer></mon-footer>

C'est tout. Tu ajoutes ces deux lignes dans chaque page, et si tu modifies le footer un jour, tu n'as qu'un seul fichier à toucher. Tu peux aller beaucoup plus loin avec les Web Components : gérer des props, écouter des événements, utiliser le Shadow DOM pour isoler les styles... MDN propose des exemples complets sur github si tu veux creuser le sujet.

Option 2 : centraliser les styles des éléments UI

Pour des éléments plus simples comme des boutons ou des champs de formulaire, pas besoin de JavaScript. Il suffit de définir les styles une seule fois dans ton CSS.

File.css
/* Un bouton réutilisable partout */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.625rem 1.25rem;
  border-radius: 0.5rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s ease;
}

.btn--primary {
  background: var(--color-primary);
  color: #fff;
}

.btn--primary:hover {
  background: var(--color-primary-dark);
}

Résultat : tous tes boutons ont le même style, sans copier-coller. Et si tu veux changer quelque chose, une seule ligne à modifier dans le CSS.

Pas besoin d'un framework pour tout

React, Next.js, Nuxt... ces outils sont très bien, mais ils ont un coût réel : des dépendances à maintenir, un build à configurer, du JavaScript supplémentaire envoyé au navigateur. Pour une application avec beaucoup d'interactions et d'états, ça se justifie. Pour un site vitrine ou un blog, c'est souvent inutilement lourd. Partir sur du vanilla JS, c'est avoir un site plus rapide, un meilleur score SEO, un éco-index plus propre, et zéro dépendance à mettre à jour dans six mois. La bonne stack, c'est celle qui correspond au projet — pas celle qui fait le plus beau CV.

Et si tu veux de l'aide sur ton projet ?

Je peux t'accompagner sur la conception et le développement de ton site, en choisissant ensemble la stack vraiment adaptée à ce que tu veux construire. Contacte-moi et nous discuterons de ton projet ensemble !

Benjamin Drouin

Benjamin Drouin

Développeur Full-Stack · Bretagne, France

À propos

Autres articles