web-components について
web-componentsは、素のHTML、CSS、JavaScriptでインターフェースを構築・改修するための実装ガイドです。モジュール型ESMや小さな関数を重視し、フレームワークへの依存を避けます。
主な機能
- 01HTML、CSS、JavaScriptのみを使用
- 02モジュール型ESMとグローバル状態の回避
- 03ファイル構成と命名規則
- 04セマンティックHTMLと最新のDOM API
- 05CSSとJavaScriptの実践指針
活用シーン
- 01ネイティブなWebインターフェースの構築
- 02モーダル、タブ、ドロップダウンの実装
- 03プロジェクトからフレームワーク依存を削除
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ manzdev/ web-core --skill web-componentsインストール後、Claude Code で/web-componentsを入力して読み込まれたか確認します。
詳細
Vanilla Web(HTML/CSS/JS)
必須要件(譲れない条件)
- HTML/CSS/JS のみ(フレームワークは使用しない)
- モジュール化された JS(ESM)を使用する
- 小さく、目的を絞った関数と純粋なユーティリティを優先する
- グローバル状態を避ける
このスキルを有効にするタイミング(ユーザーが求めている内容)
- Vanilla JS/プレーンな HTML/CSS/JS/静的ページ/効率性
- フレームワークなし、React/Angular/Vue なし
- モーダル、タブ、ドロップダウン、フォーム検証など、DOM 上に直接構築する小さな UI コンポーネント
- フレームワークへの依存を取り除く、または JS の複雑さを減らすリファクタリング
出力に関する期待事項
- インポートやパスの不足を避ける
- TODO プレースホルダーを避ける
- 変更を小さく、テスト可能で、段階的なものにする
実装ワークフロー
1) 構成
-
次の構成を優先します。
src/ソースコードpublic/静的ファイル(フォント、画像など)index.htmlメインエントリーポイントmain.jsメイン JS エントリーポイントsrc/css/global.cssグローバルスタイルsrc/components/Web Components フォルダーsrc/modules/再利用可能なモジュールとユーティリティの JS
-
各モジュールは1つの役割を担います(DOM の接続、モジュールの状態、レンダリング、API、ユーティリティなど)。
-
グローバルな可変状態を避けます。状態が必要な場合は、モジュール内にカプセル化し、最小限の関数のみを公開します。
-
ファイル名には常に次の命名規則を使用します。
src/components/のコンポーネントには PascalCase を使用します。クラス名はファイル名と一致させます。CSS ファイルも同様です。src/modules/のモジュールには camelCase を使用します。関数名はファイル名と一致させます。
2) HTML ガイドライン
- 該当する場合は、セマンティックタグ(
<header>、<footer>、<article>、<main>、<nav>、<button>、<dialog>など)を使用します。 - div だらけの構成を避けます(必要最小限の要素にします)。
3) DOM ガイドライン
- 文字列テンプレートの代わりに、スタイルの作成には
CSSStyleSheetAPI を使用します。 new CSSStyleSheet()よりもimport属性のwithを優先します。プレーンな文字列テンプレートよりもnew CSSStyleSheet()を優先します。getElement*()API よりもquerySelector*()API を使用します。innerHTMLの代わりにsetHTMLUnsafe()/getHTML()を使用します。- 要素の追加には、最新の DOM API(
append()、prepend()、before()、after())を優先します。それ以外の場合は、古いappendChild()API よりもinsertAdjacent*()を使用します。
4) CSS ガイドライン
- シンプルで予測しやすい命名を優先します。
- BEM 命名よりも
@scopeルールを優先します。 - テーマの基本要素や、頻繁に再利用するデータには CSS 変数を使用します。
- レイアウトはデフォルトでレスポンシブにします(flex/grid)。
!importantよりも、詳細度の低い:where()を優先します。- 関連するブロッククラスをグループ化するには、CSS ネストを使用します。
5) JavaScript ガイドライン
type="module"と明示的なインポート/エクスポートを使用します。- デフォルトインポートよりも、名前付きインポートを優先します。
- 純粋なユーティリティと小さな関数を優先します。
- リストや動的 UI にはイベントデリゲーションを使用します。
- エラー(ネットワーク障害、DOM ノードの欠落、無効な入力)を明示的に処理します。
- ロジックを分割するため、小さなクラスメソッドを作成します。
- コード文字列のテンプレートには、
/* html */、/* css */、または/* svg */を先頭に付けます。
検証チェックリスト
作業を終える際は、次の点を確認します。
- 変更によって発生したコンソールエラー/警告がない
- 参照するすべてのアセットが解決できる(パス/インポート)
- インポートした項目を確認し、使用されていることを確かめる
- キーボードで操作でき、フレームワークのランタイムを必要とせずに機能する
推奨スクリプト
servorローカルサーバー開発を使うnpm run devを追加します
コメント
Markdown 対応