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 で遅いクエリ SQL を見つけて最適化する詳細な例

目次1. 遅いクエリSQLを見つけて最適化する方法a. スローログに基づいてスロークエリSQLを見つ...

MySQLの不合理なMaxIdleConnsにより接続が短くなる

1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...

Vueコンポーネントドキュメント生成ツールライブラリのメソッド

目次.vue ファイルの解析文書情報を抽出するコンポーネント名、説明、プロパティ、メソッド、モデルを...

背景位置パーセンテージ原則の詳細な説明

今日、誰かがコードを調整するのを手伝っていたとき、次のようなスタイルを見つけました。 背景位置: 5...

MySql 自動切り捨て例の詳細な説明

MySql 自動切り捨て例の詳細な説明友人が質問しました。プロジェクト内で挿入または更新ステートメン...

Windows に異なる (2 つの) バージョンの MySQL データベースをインストールする詳細なチュートリアル

1. 原因: SQL ファイルをインポートする必要があるのですが、インポートできません。この文を実行...

Vueは新しいウィンドウを開き、パラメータ転送のグラフィック例を実装します。

私が実現したい機能は、新しいウィンドウを開いて新しいページを表示することですが、パラメータを渡す必要...

ドメイン名を nginx サービスにバインドする方法

nginx.conf で複数のサーバーを設定します。 http リクエストを処理する際、nginx ...

W3Cチュートリアル(16):その他のW3Cの活動

このセクションでは、その他の重要かつ興味深い W3C アクティビティの概要を説明します。このセクショ...

hrefパラメータ転送における中国語の文字化けについて

パラメータを渡すために href が必要で、パラメータが中国語の場合、文字化けした文字が表示されます...

MySQL 5.7 における基本的な JSON 操作ガイド

序文プロジェクトのニーズにより、ストレージ フィールドは JSON 形式で保存されます。プロジェクト...

MySQL 最適化: キャッシュ最適化 (続き)

MySQL 内部には至るところにキャッシュがあります。MySQL のソースコードを読むと、キャッシ...

CentOS 上の Docker に Jupyter をインストールしてポートを開く方法

目次jupyterをインストールするDocker ポートマッピングjupyterをインストールするp...

1つの記事でJavaScript DOM操作の基本を学ぶ

DOM の概念DOM: ドキュメント オブジェクト モデル: ドキュメント オブジェクト モデルは、...

Alibaba Cloud Server Tomcatにアクセスできません

目次1. はじめに2. 解決策2.1 ファイアウォールを設定してポートを開く2.3 ポートを確認し、...