オンデマンドで Vue コンポーネントを自動的にインポートする方法

オンデマンドで Vue コンポーネントを自動的にインポートする方法

Vueでは、グローバルコンポーネントとローカル登録を通じてコン​​ポーネントを使用することができます。

グローバル登録

app.component を通じてグローバルコンポーネントを作成する

'vue' から {createApp} をインポートします。
'./components/HelloWorld' から HelloWorld をインポートします。

const アプリ = createApp({})

// hello-wolrd という名前のコンポーネントをグローバルに登録します。app.component('hello-wolrd', HelloWorld);

コンポーネントをグローバルに登録すると、どこでも使用できるようになります: <hello-world/>

グローバル登録により、Vue は TypeScript サポートを失うことに注意してください。Vue 3 には、グローバル コンポーネントのインターフェイスを拡張する PR があります。現在、Volar はすでにこの使用法をサポートしています。ルート ディレクトリに components.d.ts ファイルを追加することで、すべてのゲーム コンポーネントに TypeScript サポートを追加できます。

モジュール 'vue' を宣言します {
  エクスポートインターフェース GlobalComponents {
    HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
  }
}

部分登録

ファイルから vue コンポーネントを直接インポートできます。

単一ファイルコンポーネント(SFC)

<テンプレート>
  <HelloWorld msg="Vue.js アプリへようこそ"/>
</テンプレート>

<スクリプト>
'./components/HelloWorld.vue' から HelloWorld をインポートします。

エクスポートデフォルト{
  名前: 'アプリ'、
  コンポーネント:
    こんにちは世界
  }
}
</スクリプト>

JSXの場合

'./components/HelloWorld.vue' から HelloWorld をインポートします。
エクスポートデフォルト{
  名前: "アイテム",
  与える(){
    戻る (
      <HelloWorld msg="Vue.js アプリへようこそ"/>
    )
  }
}

ローカルに登録されたコンポーネントは他のコンポーネントではアクセスできず、親コンポーネントや子コンポーネントでも使用できないため、コンポーネントが使用される各場所でコンポーネントを再導入して登録する必要があります。

'./components/HelloWorld.vue' から HelloWorld をインポートします。

しかし、コンポーネントを直接インポートするこの方法には別の利点があります。インポートされたコンポーネントが TypeScript を使用している場合、プラグインなしでコンポーネント内でスマートなプロンプトと型チェック機能を利用できます。

ローカル自動登録

ローカル登録の利点は明らかですが、使用するたびに繰り返しインポートする必要があります。ただし、コンポーネントの数が多い場合は、コンポーネント登録コードが長くなる可能性があります。unplugin-vue-components を使用すると、必要に応じてコンポーネントを自動的にインポートできます。コンポーネントは必要に応じてインポートされますが、コンポーネントをインポートして登録する必要はありません。

このプラグインは、TypeScript サポートを取得するために使用されるコンポーネントの components.d.ts を自動的に生成します。

プラグインをインストールする

ヴィテ

// vite.config.ts
'unplugin-vue-components/vite' からコンポーネントをインポートします。

デフォルトのdefineConfigをエクスポートする({
  プラグイン: [
    コンポーネント({ /* オプション */ }),
  ]、
})

ロールアップ

// ロールアップ.config.js
'unplugin-vue-components/rollup' からコンポーネントをインポートします。

エクスポートデフォルト{
  プラグイン: [
    コンポーネント({ /* オプション */ }),
  ]、
}

ウェブパック

// webpack.config.js
モジュール.エクスポート = {
  /* ... */
  プラグイン: [
    require('unplugin-vue-components/webpack')({ /* オプション */ })
  ]
}

その後、テンプレート内で通常通りコンポーネントを使用すると、次の変換が自動的に実行されます。

<テンプレート>
  <div>
    <HelloWorld メッセージ="こんにちは Vue 3.0 + Vite" />
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'アプリ'
}
</スクリプト>

変換する

<テンプレート>
  <div>
    <HelloWorld メッセージ="こんにちは Vue 3.0 + Vite" />
  </div>
</テンプレート>

<スクリプト>
'./src/components/HelloWorld.vue' から HelloWorld をインポートします。

エクスポートデフォルト{
  名前: 'アプリ'、
  コンポーネント:
    こんにちは世界
  }
}
</スクリプト>

デフォルトでは、src/components ディレクトリ内のコンポーネントを検索します。dirs パラメータを使用してコンポーネント ディレクトリをカスタマイズできます。その他の設定については、github.com/antfu/unplu… を参照してください。

さまざまなソリューションの比較

グローバル登録部分登録vueコンポーネントのプラグインを解除する
TypeScript サポートcomponents.d.tsファイルを定義するデフォルトのサポートcomponents.d.ts ファイルを自動的に生成する
コンポーネントの範囲グローバル地元地元
使い方グローバル登録後に使用現地登録後の使用プラグインを追加して使用

コンポーネント名について

コンポーネント名を定義する方法は 2 つあります。

ケバブケースの使用:

Vue.component('コンポーネント名', { /* ... */ })
ケバブケース(ダッシュで区切られた名前)を使用してコンポーネントを定義する場合、
また、カスタム要素を参照するときには、ケバブケースを使用する必要があります (例: <my-component-name> )。

パスカルケースを使用する

Vue.component('MyComponentName', { /* ... */ })
PascalCaseを使用してコンポーネントを定義する場合、
カスタム要素を参照するときは、どちらの命名法も使用できます。
つまり、<my-component-name> と <MyComponentName> の両方が許容されます。
ただし、DOM 内で直接使用される場合 (つまり、文字列以外のテンプレートの場合) は、ケバブケースのみが有効であることに注意してください。

したがって、一般的には、コンポーネントではケバブケース命名方法を使用することをお勧めします。

参照する

v3.cn.vuejs.org/guide/comp…

v3.cn.vuejs.org/guide/types…

github.com/antfu/unplu…

要約する

オンデマンドでVueコンポーネントを自動導入する方法についての記事はこれで終了です。オンデマンドでVueコンポーネントを自動導入する方法の詳細については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueのサブコンポーネント導入方法の詳細な説明
  • vueプロジェクトにelementUIコンポーネントを導入する方法の詳細な説明
  • Vue のすべてのパブリックコンポーネントを簡潔かつ明確に一度に紹介する方法
  • 新しいVueプロジェクトを作成し、コンポーネント要素を導入する方法の詳細な説明
  • Vueがサブコンポーネントエラーを引き起こす問題を解決する
  • Vue でコンポーネントを一括インポート、登録、使用する方法

<<:  MySQL データベースの制約とデータ テーブルの設計原則

>>:  VMware 仮想マシン ubuntu18.04 インストール チュートリアル

推薦する

DockerはRedisを起動し、パスワードを設定します

RedisはRedisバージョン5のapline(Alps)イメージを使用します。これは小さくて高速...

CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...

Windows 10 での MySQL 5.7.21 winx64 のインストールと設定方法のグラフィック チュートリアル

mysql 5.7.21 winx64 のインストールと設定方法: MySQLのコミュニティバージョ...

Vue サーバーに js 構成ファイルをインポートする方法

目次背景成し遂げるvue-cli2.0での設定方法の補足要約する背景プロジェクトにはローカル構成ファ...

MySQLデータベースのマスタースレーブレプリケーションと読み取り書き込み分離に関する詳細なチュートリアル

目次序文1. MySQL マスタースレーブレプリケーション1. サポートされているレプリケーションの...

NFS サーバーの原理と、その構築、構成、展開の手順を簡単に分析します。

目次NFS サービスの概要NFS とは何ですか? NFS マウントの原則NFS サーバーはデータ転送...

Linux の grep コマンドと egrep コマンドの詳細な説明

反復/egrep構文: grep [-cinvABC] 'word' ファイル名-c...

WeChatアプレットで数字当てゲームを実装する実際のプロセス

目次機能紹介レンダリング1. ホームページレンダリング用のコード(index03) 2. ゲーム開始...

nginx.pid を開く際の失敗と無効の解決策

目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...

MySQL 8.0.20 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.20 winx64 のインストールと設定方法を次のように説明します...

MySQL でインデックス構造として B+ ツリーを使用する利点は何ですか?

序文MySQL では、Innodb と MyIsam の両方がインデックス構造として B+ ツリーを...

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

MySQL でデータベースを作成した後、ユーザー 'root'@'%' によるデータベース 'xxx' へのアクセスが拒否される問題を解決する

序文最近、仕事で問題が発生しました。データベースを作成した後、データベースに接続するときにエラーが発...

MySQLのユーザー権限の確認と管理方法の詳細な説明

この記事では、例を使用して、MySQL ユーザー権限を確認および管理する方法を説明します。ご参考まで...

Vueのシンプルな状態管理ストアモードを理解する方法

目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...