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!」というエラーが表示される問題を解決します。

推薦する

Vue+SSMは画像アップロードのプレビュー効果を実現します

現在の要件は、ファイルのアップロード ボタンがあることです。ボタンをクリックすると、アップロードする...

MySQLテーブル構造を変更するコマンドを表示する

簡単な説明エディターはデータベースのエンコードが間違っているために問題に遭遇することが多く、これは頭...

CSSはBEM命名規則の実践を使用する

クラスを見るとき、どのような情報を得たいですか?このクラスはどこで使用され、その機能は何ですか?この...

uniappを使用してWeChatミニプログラムでEChartsを使用する方法

今日は、uniapp を使用して Echarts を統合し、マップ チャートを表示します。 mpvu...

Vue + 要素の動的複数ヘッダーと動的スロット

目次1. 需要2. 効果3. すべてのコード1. 需要ユーザーが自分でテーブルを構成できるようになり...

Vue パッケージ化後の空白ページの解決策

1. vue-cli がプロジェクト パッケージを作成した後にページが空白になる問題の解決方法コマン...

Vueブラウザが監視を再開するための具体的な手順

序文ページを共有するときに、ブラウザの戻るボタンをクリックしてプロジェクトのホームページに戻り、訪問...

Tomcatの再構成後に起動が遅くなる問題を迅速に解決

Jenkins+Tomcatサーバーの設定中に、Tomcat設定ファイルが変更され、サーバーのTom...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...

Hbase 入門

1. HBaseの概要1.1 HBaseとはHBase は、高い信頼性、高いパフォーマンス、列ストレ...

MySQLクエリ速度を最適化する方法

前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...

Mysql-connector-java ドライバのバージョン問題の概要

Mysql-connector-java ドライバのバージョンの問題私のデータベースのバージョンは ...

Dockerにelasticsearchとkibanaをインストールする方法

Elasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを知らないと軽蔑...

Vue+element ui はアンカーの配置を実現します

この記事では、アンカー配置を実現するためのVue +要素UIの具体的なコードを例として紹介します。具...