Vue3でアイコンを使用する2つの例

Vue3でアイコンを使用する2つの例

テクノロジースタックとバージョン Vite2 + Vue3 + fontAwesome5

Vue3 でアイコンを使用する方法、fontAwesome はシンプルで使いやすいのですが、必要なアイコンが見つからない場合もあります。 svg方式を使用すると、必要なものを直接ダウンロードして使用できます。種類がより充実しており、基本的にニーズを満たさないアイコンはありません。ただし、fontAwesomeほど簡単ではなく、毎回対応する画像をダウンロードする必要があります。

1. SVGを使用する

使用したいSVG画像をダウンロードし、src/iconsフォルダに保存します。

b fsとsvgに依存するローダーをインストールする

コマンド: npm install svg-sprite-loader

コマンド: npm install --save fs

c テンプレートファイルindex.vueを作成する

テンプレートファイルコード

<テンプレート>
    <svg :class="svgClass" v-bind = "$attrs">
        <use :xlink:href="アイコン名"></use>
    </svg>
</テンプレート>


<スクリプトの設定>

「vue」から、defineProps、computed をインポートします。

const props = defineProps({
    名前: {
      タイプ: 文字列、
      必須: true
    },
    色:
      タイプ: 文字列、
      デフォルト: ''、
    }
})

const iconName = computed(()=>`#icon-${props.name}`);
const svgClass = 計算済み(()=> {
    // console.log(props.name,'props.name');
    if (props.name) {
        `svg-icon icon-${props.name}` を返します
    }
      'svg-icon' を返す
});

</スクリプト>

<スタイル スコープ lang ="scss">
    .svg-アイコン{
        幅: 3em;
        高さ: 3em;
        塗りつぶし: 現在の色;
        境界線: 実線 2px 赤;
        垂直位置合わせ: 中央;
    }
</スタイル>>

d グローバル登録 main.js

'./components' から { svgIcon } をインポートします。
.component('svg-icon',svgアイコン)

e インポート処理関数を作成し、プラグインにsvgBuilder.jsを作成する

コード

'fs' から { readFileSync, readdirSync } をインポートします。


idPerfix = '' とします
const svgTitle = /<svg([^>+].*?)>/
const clearHeightWidth = /(幅|高さ)="([^>+].*?)"/g

const hasViewBox = /(viewBox="[^>+].*?")/g

定数クリアリターン = /(\r)|(\n)/g

関数 findSvgFile(dir) {
  定数svgRes = []
  定数 dirents = readdirSync(dir, {
    ファイルタイプ: true
  })
  for (const dirent of dirents) {
    (dirent.isDirectory())の場合{
      svgRes.push(...SvgFile を検索(dir + dirent.name + '/'))
    } それ以外 {
      const svg = readFileSync(dir + dirent.name)
        .toString()
        .replace(クリアリターン、'')
        .replace(svgTitle, ($1, $2) => {
        
          幅を0にする
          高さを0にする
          コンテンツ = $2.replace(
            クリア高さ幅、
            (s1, s2, s3) => {
              s2 === '幅'の場合{
                幅 = s3
              } そうでない場合 (s2 === '高さ') {
                高さ = s3
              }
              戻る ''
            }
          )
          if (!hasViewBox.test($2)) {
            コンテンツ += `viewBox="0 0 ${幅} ${高さ}"`
          }
          `<symbol id="${idPerfix}-${dirent.name.replace( を返します。
            '.svg',
            ''
          )}" ${content}>`
        })
        .replace('</svg>', '</symbol>')
      svgRes.push(svg)
    }
  }
  svgResを返す
}

エクスポート const svgBuilder = (path, perfix = 'icon') => {
  if (path === '') 戻り値
  idPerfix = パーフィックス
  const res = findSvgFile(パス)
  
  戻る {
    名前: 'svg-transform',
    変換インデックスHTML(html) {
      html.replace() を返す
        '<本文>',
        `
          <本文>
            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" スタイル="位置: 絶対; 幅: 0; 高さ: 0">
              ${res.join('')}
            </svg>
        `
      )
    }
  }
}

f 設定ファイルを変更し、svgBuilderを設定ファイルにインポートします。

vite.config.js を変更する

'./src/plugins/svgBuilder' から { svgBuilder } をインポートします。'

デフォルトのdefineConfigをエクスポートする({
プラグイン: [
      vue(),
      // 対応する関数を呼び出して svg を処理する svgBuilder('./src/icons/') // 対応するフォルダー。そうでない場合は見つかりません]
})

SVGの使用

コア部分

  <svg-icon name="questionmark" />//name svgイメージを取得します

2. fontAwesomeを使用する

npmインストール依存関係

$ npm i --save @fortawesome/fontawesome
$ npm i --save @fortawesome/vue-fontawesome

$ npm i --save @fortawesome/fontawesome-free-solid
$ npm i --save @fortawesome/fontawesome-free-regular
$ npm i --save @fortawesome/fontawesome-free-brands

b mian.js グローバル登録

    // オンデマンドでインポート import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
    '@fortawesome/fontawesome-svg-core' から { ライブラリ } をインポートします。
    '@fortawesome/free-solid-svg-icons' から { faAd } をインポートします
    
    '@fortawesome/free-solid-svg-icons' から { faAddressBook } をインポートします。
    
    ライブラリを追加します(faAddressBook)
    // すべてをインポートする import { fas } from '@fortawesome/free-solid-svg-icons'
    '@fortawesome/free-brands-svg-icons' から { fab } をインポートします。
    ライブラリを追加します(fas,fab)
    
    .component('font-awesome-icon', FontAwesomeIcon)
    

c 使用

    //オンデマンドインポートの使用<font-awesome-icon icon="address-book" class="fa-spin fa-lg"/>
    //グローバルインポートの使用 <font-awesome-icon :icon="['fas','address-book']" />

3 ソース

ソースフォントAwesome https://www.jb51.net/article/228944.htm

ソース svg https://www.jb51.net/article/228948.htm

4 結論

対応するテクノロジー スタックとバージョンを決定し、手順に従えば問題は発生しません。

これで、Vue3 でアイコンを使用する 2 つの方法についての記事は終了です。Vue3 でアイコンを使用する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue3でelement-plusを使用する方法の詳細な説明
  • Vue3 の element-plus で Icon アイコンをグローバルに使用するプロセスの詳細な説明

<<:  HTML の長いテキストは、タグの幅を超えると自動的に切り捨てられます。

>>:  グリッド共通レイアウトの実装

推薦する

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

Docker は固定コンテナ IP アドレスを実現するためにカスタム ネットワークを作成します。

デフォルトのブリッジ ネットワークのため、コンテナーを再起動すると IP アドレスが変更されます。シ...

MySQL フェイルオーバー ノート: アプリケーション対応設計の詳細な説明

1. はじめに周知のように、データベース ミドルウェアの読み取り/書き込み分離のアプリケーション シ...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

JavaScript におけるイベント バブリング メカニズムの詳細な分析

バブリングとは何ですか? DOM イベント フローには、イベント キャプチャ ステージ、ターゲット ...

Vue+Websocketはチャット機能を実装するだけです

この記事では、チャット機能を簡単に実装するためのVue+Websocketの具体的なコードを参考まで...

SQL文の最適化の一般的な手順の詳細な説明

序文この記事では主に、SQL ステートメントの最適化の一般的な手順について説明します。これは、参考と...

VMware 仮想マシンのインストール Apple Mac OS の超詳細なチュートリアル

目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...

VirtualBox で作成された Debian 仮想マシンは Windows ホストとファイルを共有します

用語: 1. VM: 仮想マシンステップ: 1. Windows 10 に VirtualBox 6...

HTMLウェブページテーブル構造化マークアップの応用に関する簡単な説明

Web テーブルの構造マークアップについて説明する前に、いくつかの画像を見てみましょう。 HTML ...

Nginx でバージョン番号を隠す方法

Nginx はバージョン番号を非表示にする実稼働環境では、セキュリティ上の脆弱性の漏洩を避けるために...

JS 非同期スタック トレース: await が Promise よりも優れている理由

概要async/await と Promise の基本的な違いは、await fn() は現在の関数...

MySQL データ ウェアハウスを保護するための 5 つのヒント

さまざまなソースからデータを集約することで、中央倉庫を作成できます。データ ウェアハウスは、ビジネス...

Windows での MySQL 5.7.18 のインストールと設定のチュートリアル

この記事では、WindowsでのMySQL 5.7.18のインストールと設定のチュートリアルを参考ま...

MacOS に MySQL 8.0 をインストールして MySQL にログインする方法

公式チュートリアルに従って、インストール パッケージをダウンロードし、[インストール] をクリックし...