Vue3 でサードパーティのコンポーネントライブラリをオンデマンドでロードする方法

Vue3 でサードパーティのコンポーネントライブラリをオンデマンドでロードする方法

序文

Element Plus を例に、コンポーネントとスタイルのオンデマンド読み込みを構成します。

環境

  • vue3.0.5
  • ビット2.3.3

Element Plusのインストール

糸追加要素プラス
# または
npm インストール element-plus --save

完全な紹介

'vue' から {createApp} をインポートします。
'element-plus' から ElementPlus をインポートします。
'element-plus/lib/theme-chalk/index.css' をインポートします。
'./App.vue' からアプリをインポートします。

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

Element Plus の js ファイルと css ファイルのサイズはかなり大きく、時間がかかることがわかります。

オンデマンドロード

vite-plugin-importerプラグインをインストールする

インストール

yarn に vite-plugin-importer を追加
# または
npm インストール vite-plugin-importer --save

Vite公式サイトにはプラグインコラムがあり、コミュニティ推奨プラグインを利用できます


このうち、vite-plugin-importer は babel-plugin-import を統合したもので、 babel-plugin-importコンポーネントとコンポーネント スタイルをオンデマンドで読み込むことができるため、 vite-plugin-importerでも同様に読み込むことができます。


vite.config.js を構成する

'vite' から {defineConfig} をインポートします
'@vitejs/plugin-vue' から vue をインポートします
'vite-plugin-importer' から usePluginImport をインポートします

// https://vitejs.dev/config/
デフォルトのdefineConfigをエクスポートする({
  プラグイン: [
    vue(),
    プラグインインポート({
      ライブラリ名: 'element-plus',
      カスタムスタイル名: (名前) => {
        `element-plus/lib/theme-chalk/${name}.css` を返します。
      },
    })、
  ]、
  解決する: {
    エイリアス: {
      'vue': 'vue/dist/vue.esm-bundler.js'
    },
  },
})

メイン.js

'vue' から {createApp} をインポートします。
'./App.vue' からアプリをインポートします。
'element-plus' から { ElButton、ElSelect } をインポートします。

const app = createApp(App)
app.component(ElButton.name, ElButton);
app.component(ElSelect.name, ElSelect);
app.mount('#app')

vite-plugin-importerを使用してコンポーネントとスタイルをオンデマンドでロードすると、明らかな効果があります。

vite-plugin-style-importをインストールする

インストール

yarn に vite-plugin-style-import -D を追加します
# または
npm i vite-plugin-style-import -D

Element Plus の公式 Web サイトでは、vite-plugin-style-import オンデマンド読み込み方式が提供されています。

構成

設定ファイル

'vite' から {defineConfig} をインポートします
'@vitejs/plugin-vue' から vue をインポートします
'vite-plugin-style-import' から styleImport をインポートします。

// https://vitejs.dev/config/
デフォルトのdefineConfigをエクスポートする({
  プラグイン: [
    vue(),
    スタイルインポート({
      ライブラリ: [
        {
          ライブラリ名: 'element-plus',
          esModule: true、
          スタイルファイルを確認する: true,
          解決スタイル: (名前) => {
            `element-plus/lib/theme-chalk/${name}.css` を返します。
          },
          解決コンポーネント: (名前) => {
            `element-plus/lib/${name}` を返します。
          },
        },
      ]、
    })、
  ]、
  解決する: {
    エイリアス: {
      'vue': 'vue/dist/vue.esm-bundler.js' 
    },
  },
})

メイン.js

'vue' から {createApp} をインポートします。
'./App.vue' からアプリをインポートします。
'element-plus' から { ElButton、ElSelect } をインポートします。

const app = createApp(App)
app.component(ElButton.name, ElButton);
app.component(ElSelect.name, ElSelect);
app.mount('#app')

ご覧のとおり、 vite-plugin-style-import要求に応じてコンポーネント スタイルのみを読み込みます。

要約する

  • vite-plugin-importer は、必要に応じてコンポーネントとコンポーネント スタイルを読み込むことができます。
  • vite-plugin-style-import は、要求に応じてのみコンポーネント スタイルを読み込むことができます。
  • サードパーティのコンポーネント ライブラリを一度ロードするよりも、オンデマンドでロードする方が優れています。

Vue3 がサードパーティのコンポーネントライブラリをオンデマンドでロードする方法についての記事はこれで終わりです。Vue3 のオンデマンドコンポーネントライブラリのロードに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue.js のモバイル コンポーネント ライブラリ mint-ui は、より多くのメソッドを読み込むために無限スクロールを実装します。
  • オンデマンドでロードされる Vue コンポーネント ライブラリの構築方法を説明します (概要)
  • Vue コンポーネント ライブラリをオンデマンド読み込みで置き換える方法

<<:  MySQL における in と exists の使い方と違いの紹介

>>:  Linux 3.X/4.x/5.x でパゴダ パネルのパスワードを忘れた場合の解決方法

推薦する

MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。

インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...

vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. アイデア2. 準備2. ...

3 階層ナビゲーション メニューを実現するための js+css

この記事の例では、3レベルのナビゲーションメニューを実装するためのjs + cssの具体的なコードを...

モバイルウェブページのサイズ調整を実装する方法

ようやく手元のプロジェクトが終了し、行方不明だった人たちが戻ってきました!プロジェクトを進める過程で...

Bootstrap 3.0 学習ノートのページレイアウト

今回はレイアウトを中心に学習しますが、これは基本的なHTMLタグのほとんどにも存在するため、比較的簡...

CSS3 border-radius 丸角の実装方法と使い方の詳しい説明

以前は、角を丸くするのは非常に面倒でしたが、CSS3 では、角を丸くするのは非常に簡単になり、bor...

MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]

この記事では、例を使用して、MySQL 外部キー制約の一般的な操作について説明します。ご参考までに、...

WeChatアプレットの下部にあるタブバーがコンテンツをブロックする問題に対処する簡単な方法

WeChatアプレットでタブバーを設定すると、重要なコンテンツがブロックされ、iPhoneXなどの異...

MySQLで大きなテーブルを正常に削除する方法の詳細な説明

序文テーブルを削除するには、無意識に思い浮かぶコマンドは、DROP TABLE "テーブル...

JavaScript で二分探索木を実装する

JavaScriptでの検索二分木実装は参考までに。具体的な内容は以下のとおりです。バイナリ検索木 ...

HTML マークアップ言語 - フォーム

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Ubuntu16.04 インストール mysql5.7.22 グラフィックチュートリアル

VMware12.0+Ubuntu16.04+MySQL5.7.22 インストールチュートリアルの詳...

Vueデータ双方向バインディング実装方法

目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...

LambdaProbe を使用して Tomcat を監視する方法

導入: Lambda Probe (旧称 Tomcat Probe) は、Apache Tomcat...

ウェブページでmp3またはフラッシュプレーヤーコードを再生する

コードをコピーコードは次のとおりです。 <オブジェクト id="player1&qu...