hyf0/vue-jsx-best-practices

Bonnes pratiques pour la syntaxe JSX dans Vue (ex. : class vs className, configuration du plugin JSX).

Qu'est-ce que vue-jsx-best-practices ?

Ce skill fournit un guide complet sur l'utilisation de la syntaxe JSX dans les projets Vue.js, en clarifiant les différences clés comme l'utilisation de `class` au lieu de `className`, ainsi que la configuration du plugin JSX pour Vue. Il est utile pour les développeurs qui souhaitent adopter un style de développement basé sur JSX dans Vue tout en respectant les conventions et performances optimales. Compatible avec Vue 3 et les outils modernes (Vite, Babel), ce skill explique comment configurer `@vitejs/plugin-vue-jsx` ou `@vue/babel-plugin-jsx`, gérer les fragments, les événements, et la syntaxe des directives. Il sert également de référence pour les bonnes pratiques d'écriture de composants Vue en JSX, aidant à éviter les erreurs courantes et à maintenir un code lisible et cohérent.

Compatible avec~Claude Code~Codex CLI~Cursor
Part ofReact
npx skills add https://github.com/hyf0/vue-skills/tree/main/skills/vue-jsx-best-practices

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait vue-jsx-best-practices ?

Bonnes pratiques pour la syntaxe JSX dans Vue (ex. : class vs className, configuration du plugin JSX).

Introduction

Ce guide couvre les bonnes pratiques pour utiliser JSX dans les projets Vue.js. Il aborde les différences syntaxiques avec le JSX de React, la configuration requise et les recommandations pour écrire du code maintenable.

Différences clés

  • Attribut class : Dans Vue JSX, utilisez class (et non className comme dans React). Exemple : <div class={dynamicClass}>...</div>.
  • Attribut style : Accepte un objet ou une chaîne de caractères. Exemple : <div style={{ color: 'red', fontSize: '14px' }}>.
  • Événements : Utilisez la syntaxe on suivi du nom d'événement en camelCase. Exemple : <button onClick={handleClick}>Cliquez</button>.
  • Directives : Les directives telles que v-if, v-for, v-model peuvent être utilisées avec JSX via des approches spécifiques (voir ci-dessous).

Configuration

Avec Vite (recommandé)

Installez et configurez le plugin Vite officiel :

npm install @vitejs/plugin-vue-jsx -D

Ajoutez-le dans votre fichier vite.config.js :

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

export default defineConfig({
  plugins: [vue(), vueJsx()],
})

Avec Babel (alternative)

Si vous utilisez Babel, installez le plugin officiel :

npm install @vue/babel-plugin-jsx -D

Configurez-le dans babel.config.js :

module.exports = {
  presets: ['@vue/cli-plugin-babel/preset'],
  plugins: ['@vue/babel-plugin-jsx'],
}

Utilisation de base

Composant simple

import { defineComponent } from 'vue'

export default defineComponent({
  setup() {
    return () => <div class="container">Bonjour Vue JSX</div>
  },
})

Avec des événements

const App = defineComponent({
  setup() {
    const count = ref(0)
    const increment = () => count.value++
    return () => (
      <button onClick={increment}>Compteur : {count.value}</button>
    )
  },
})

v-model

Utilisez v-model comme attribut :

<input v-model={inputValue} />

v-if / v-for

Utilisez des expressions JavaScript directement :

const condition = true
const items = [1, 2, 3]

return (
  <div>
    {condition && <span>Condition vraie</span>}
    {items.map(item => <p key={item}>Élément {item}</p>)}
  </div>
)

Bonnes pratiques

  1. Toujours utiliser class : Évitez className car cela peut causer des confusions et n'est pas supporté nativement par Vue JSX.
  2. Événements en camelCase : Utilisez onClick, onChange, etc., pour rester cohérent avec le JSX standard.
  3. Fragments : Si vous devez retourner plusieurs éléments racines, utilisez des fragments vides <>...</> ou <Fragment>...</Fragment>.
  4. Clés dans les listes : Toujours définir une key unique lors de l'utilisation de map() pour aider Vue à optimiser le rendu.
  5. Props dynamiques : Utilisez la syntaxe {...props} pour passer plusieurs attributs dynamiquement.

Ressources supplémentaires

Licence

Ce contenu est fourni à titre éducatif. Veuillez consulter les licences respectives des outils mentionnés.

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

Skills associés