Communityコーディング&開発github.com

hyf0/vue-jsx-best-practices

VueでのJSX構文の使用に関するベストプラクティス(例:class vs className、JSXプラグイン設定)。

vue-jsx-best-practices とは?

このスキルは、Vue.jsプロジェクトにおいてJSX構文を効果的に使用するためのベストプラクティスを提供します。具体的には、HTML属性の`class`とJSXでの`className`の使い分け、JSXプラグイン(@vitejs/plugin-vue-jsxなど)の設定方法、そしてVueのテンプレート構文とJSXの併用時の注意点をカバーしています。Vue 3およびViteベースのプロジェクトを主な対象としており、開発者がJSXを使用する際に直面する一般的な問題(属性名の違い、プラグインのインストールと構成、型定義など)を解決します。このスキールドは、効率的な開発ワークフローの確立と、コードの可読性・保守性の向上に役立ちます。

対応~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 コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

vue-jsx-best-practices は何をしますか?

VueにおけるJSX構文のベストプラクティス(例:class vs className、JSXプラグイン設定)。

概要

このドキュメントでは、Vue.jsプロジェクトでJSX(またはTSX)を使用する際の推奨される方法と設定について説明します。

主な違い

class vs className

  • Vueのテンプレートでは、クラスを指定するために class 属性を使用します。
  • JSXでは、className を使用します(Reactと同様)。

例:

// Vueテンプレート
<template>
  <div class="foo"></div>
</template>

// Vue JSX
const element = <div className="foo"></div>;

style の扱い

  • テンプレートでは、style にオブジェクトまたは文字列をバインドできます。
  • JSXでは、常にオブジェクトを使用します(キャメルケースのプロパティ名)。

例:

// Vueテンプレート
<div :style="{ color: 'red' }"></div>

// Vue JSX
const element = <div style={{ color: 'red' }}></div>;

JSXプラグイン設定

ViteプロジェクトでJSXを有効にするには、@vitejs/plugin-vue-jsx プラグインをインストールして設定します。

インストール

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

Vite設定 (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(),
  ],
})

型定義

TypeScriptを使用する場合、型定義が正しく設定されていることを確認してください。

// tsconfig.json
{
  "compilerOptions": {
    "jsx": "preserve",
    "jsxImportSource": "vue"
  }
}

推奨事項

  1. 一貫性を保つ: プロジェクト全体でテンプレートかJSXのどちらかに統一することを推奨します(状況に応じて混在も可能)。
  2. スロットの使用: JSXでは、スロットを v-slots または slots プロパティとして指定します。
  3. ディレクティブの代替: v-if は三項演算子、v-for は map() メソッドに置き換えます。

参考リンク

Individual skills in this repo

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

関連スキル