Vue でコンポーネントを一括インポート、登録、使用する方法

Vue でコンポーネントを一括インポート、登録、使用する方法

序文

コンポーネントは、非常に頻繁に使用されるものです。多くの人は、コンポーネントを 1 つのファイルごとに参照して登録することで使用します。この記事では、Vue でコンポーネントを一括導入、登録、使用する方法を紹介します。

1. 使用シナリオ

日常の開発では、次のような状況がよく発生します。

	'components/A' から A をインポートします
	'components/B' から B をインポートします
	'components/C' から C をインポートします
	'components/D' から D をインポートします

このような繰り返しコードに遭遇したとき、次のような最適化を行って、一度にすべてインポートできるのではないかと考えました。そこで、webpack API を見つけて、require.context を呼び出して処理しました。具体的なコードは次のとおりです。

2. 使用手順

関連するもの:

  • コンポーネント名はハイフンで区切られた関数であり、camelCase に変換されます。
  • コンポーネントの is プロパティです。

詳細な説明はコード内にあります:

1. ファイルディレクトリ

2. HTMLコード

<テンプレート>
  <div class="水分析">
    <div class="content-box" ref="contentbox">
      <a-tabs:default-active-key="activeComponent" @change="tabChangeHandle">
        <タブペイン
          v-for="tabList 内の項目"
          :key="アイテムキー"
          :tab="アイテム.タブ"
        </タブペイン>
      </a-タブ>
      <div class="タブペインボックス">
      	<!-- is 属性を通じて、対応するコンポーネント名をバインドし、対応するコンポーネントを表示します-->
        <コンポーネント:is="アクティブコンポーネント"></コンポーネント>
      </div>
    </div>
  </div>
</テンプレート>

3.jsコード

構文: require.context(directory, useSubdirectories, regExp)

  • ディレクトリ: 検索するファイルパス
  • useSubdirectories: サブディレクトリを検索するかどうか
  • regExp: ファイルに一致する正規表現

戻り値: 2 つのメソッドと 1 つのプロパティ

  • keys(): 一致したモジュールの名前の配列を返します。
  • 解決(): テストフォルダ下の一致するファイルの相対パスであるパラメータリクエストを受け取り、プロジェクト全体に対する一致するファイルの相対パスを返します。
  • id: 実行環境の ID。文字列として返されます。主に、ホット ローディングを行う module.hot.accept で使用されます。
<スクリプト>
// 中央の水平線をキャメルケースに変換します var camelCase = function (s) {
  s.replace(/-\w/g, 関数(x) {を返す
    x.slice(1).toUpperCase() を返します。
  });
};
// サブコンポーネントをバッチでインポートします。上記の構文を参照してください。const allComponents = require.context("./comp", false, /\.vue$/);

コンソールログ(allComponents.keys())
// ["./tem-a.vue", "./tem-b.vue", "./tem-c.vue", "./tem-d.vue"]

コンソールログ(allComponents.id)
//./src/views/tempManage/comp 同期 \.vue$

// コンポーネント配列を作成し、以下のコンポーネントに登録します。let resComponents = {};
allComponents.keys().forEach(comName => {
  name = camelCase(comName); とします。
  const comp = allComponents(comName);
  resComponents[name.replace(/^\.\/(.*)\.\w+$/, "$1")] = comp.default;
});

エクスポートデフォルト{
  名前: "WaterQuery",
  コンポーネント: resComponents、
  データ() {
    戻る {
      アクティブコンポーネント: "temA",
      タブリスト: [
        {
          キー: "temA",
          タブ:「コンポーネントA」、
        },
        {
          キー: "temB"、
          タブ:「Bコンポーネント」、
        },
        {
          キー: "temC",
          タブ: 「C コンポーネント」、
        },
        {
          キー: "temD",
          タブ:「Dコンポーネント」、
        },
      ]、
    };
  },
  作成された() {
    if (this.$route.query["val"]) {
      this.activeComponent = this.$route.query["val"];
    }
  },
  メソッド: {
    // タブバーを切り替える tabChangeHandle(val) {
      const {path} = this.$router;

      this.$router.push({
        パス、
        クエリ: {val},
      });
      this.activeComponent = val;
    },
  },
};
</スクリプト>

4. CSS コード (読む必要はありません。コードの完全性のためだけに書かれており、直接実行して表示できます)

<スタイルスコープ>
.水分析{
  高さ: 100%;
  オーバーフロー:自動;
}
.コンテンツボックス{
  高さ: 100%;
}
.タブペインボックス{
  高さ: calc(100% - 62px);
}
</スタイル>

結論

Vue コンポーネントのバッチインポート、登録、使用方法についてはこれで終わりです。Vue コンポーネントのバッチインポートに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  MySQL で複数のテーブルにビューを作成する方法

>>:  Centos7 に nginx をインストールした後、conf.d ディレクトリに default.conf ファイルがないために「Welcome to nginx on Fedora!」というエラーが表示される問題を解決します。

推薦する

Docker: /etc/default/docker の DOCKER_OPTS パラメータを変更しても反映されない

デフォルトでは、 /etc/default/docker 設定は有効になりません。docker 環境...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

Reactは感情を使ってCSSコードを書く

目次導入:感情のインストール:一般的な CSS コンポーネントを追加します。既存のコンポーネントにス...

デザイナーの「職業病」について

デザイナーは世界で最も繊細で感情的な人々だと私はいつも感じています。私がこう言うときに優越感を感じる...

Vue の状態管理: Vuex の代わりに Pinia を使用する

目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...

動的テーブルを実装するための要素サンプルコード

目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...

MySQL マルチバージョン同時実行制御 MVCC の実装

目次MVCCとはMVCC 実装MVCC はファントム リードを解決しますか? MVCCとはMVCC ...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

MySQL InnoDBとMyISAMの違いを簡単に理解する

序文MySQL は、myisam、innodb、memory、archive、example など、...

EChartsマルチチャート連携機能の実装プロセス

表示するデータが多い場合、1 つのチャートに表示しても効果はよくありません。このとき、2 つのチャー...

複数ページ通信を実現する JavaScript の sharedWorker の詳細な例

こんなことがありました。今日はGitHubで遊んでいました。最初はログインせずにいくつかのページを閲...

IE8 互換性について: X-UA-compatible 属性の説明

問題の説明:コードをコピーコードは次のとおりです。 <meta http-equiv=&quo...

ウェブサイトのデザインを改善するための役立つ提案を提供します

<br />ウェブサイトを科学的にデザインする: アイトラッキング研究から学ぶ 23 の...

MySQL遅延レプリケーションライブラリ方式の詳細な説明

簡単に言えば、遅延レプリケーションとは、スレーブ データベースがマスター データベースより 1 時間...

Ubuntu での Subversion (SVN) の詳細なインストールと設定

ソフトウェア開発者であれば、Subversion に精通している必要があります。 Subversio...