Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

Vue プロジェクトで SVG コンポーネントをパッケージ化して構成する手順

最近新しい会社に入社しました。プロジェクトに携わった後、タイトルアイコンが svg で作られているという興味深い点を発見しました。この記事ではその使い方を詳しく説明します。

1. Vue プロジェクトを作成します (CLI を使用してスキャフォールディングを構築します。このテスト プロジェクトは Vue CLI4 で構成されています)

2. カスタムコンポーネントを作成する

ここに画像の説明を挿入

具体的なコードは次のとおりです。

<テンプレート>
  <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
    <use :xlink:href="iconName" rel="external nofollow" />
  </svg>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: "SvgIcon",
  小道具: {
    アイコンクラス: {
      タイプ: 文字列、
      必須: true、
    },
    クラス名: {
      タイプ: 文字列、
      デフォルト: ""、
    },
  },
  計算: {
    アイコン名() {
      `#icon-${this.iconClass}` を返します。
    },
    svgクラス() {
      if (this.className) {
        "svg-icon " + this.className を返します。
      } それ以外 {
        "svg-icon" を返します。
      }
    },
  },
};
</スクリプト>

<スタイルスコープ>
.svgアイコン{
  幅: 1em;
  高さ: 1em;
  垂直位置合わせ: -0.15em;
  塗りつぶし: 現在の色;
  オーバーフロー: 非表示;
}
</スタイル>

3. ルートディレクトリにアイコンを作成し、新しい index.js を作成します (これは後でグローバルにインポートされます)。また、svg 画像を保存するための新しい svg ディレクトリを作成します (svg のダウンロード方法については、Alibaba のアイコンフォントからダウンロードできます。Baidu で検索してください)。

ここに画像の説明を挿入

index.js の具体的なコードは次のとおりです。

'vue' から Vue をインポートします
import SvgIcon from '@/components/svgIcon' // svg コンポーネント // グローバルに登録
Vue.component('svg-icon', SvgIcon)

const req = require.context('./svg', false, /\.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
すべて必須(必須)

4.導入のためにmain.jsをグローバルにインポートする

ここに画像の説明を挿入

5. この時点で、プロジェクトはvue.config.jsも設定する必要があります(そうしないと表示されません)

定数パス = require('path')
モジュール.エクスポート = {
    チェーンWebpack: config => {
        svgRule は config.module.rule('svg') に定義されます。
        svgRule.uses.clear()
        svgルール
            .test(/\.svg$/)
            .include.add(path.resolve(__dirname, './src/icons')).end()
            .use('svg-sprite-loader')
            .loader('svg-sprite-loader')
            .オプション({
                シンボルID: 'icon-[名前]'
            })
        定数 fileRule = config.module.rule('file')
        fileRule.uses.clear()
        ファイルルール
            .test(/\.svg$/)
            .exclude.add(path.resolve(__dirname, './src/icons'))
            。終わり()
            .use('ファイルローダー')
            .loader('ファイルローダー')
    }
}

それでおしまい;

6. プロジェクトでコンポーネントを使用する

ここでは関数コンポーネントを使用して紹介しますが、これは通常のコンポーネントの使用方法でも紹介できます。

<スクリプト>
エクスポートデフォルト{
  機能的: 真、
  小道具: {
    レベル:
      タイプ: 数値、
      必須: true、
    },
  },
  レンダリング: 関数 (h, コンテキスト) {
    console.log(コンテキスト);
    vnodes = [] とします。
    { レベル } = context.props;
    // vnodes.push(<i class="el-icon-edit" style="width:19px"></i>);
    vnodes.push(<svg-icon icon-class="date"></svg-icon>);
    vnodes.push(<span class="span">{レベル}</span>);
    vnode を返します。
  },
};
</スクリプト>
<スタイルスコープ>
.span {
  フォントサイズ: 50px;
}
</スタイル>

注: icon-class の値は、svg のファイル名そのものになります。

これで、Vue プロジェクトで SVG コンポーネントをカプセル化して構成する手順に関するこの記事は終了です。Vue SVG コンポーネントのカプセル化と構成の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue3 再帰コンポーネントカプセル化の全プロセス記録
  • Vue ポップアップ ボックス コンポーネントのカプセル化のサンプル コード
  • Vueは画像プレビューコンポーネントのカプセル化と使用を実装します
  • コンポーネントのカプセル化からの Vue スコープ スロットの実装
  • Vuejs ページの地域化とコンポーネントのカプセル化の実装
  • Vue の全選択コンポーネントのカプセル化についてどれくらい知っていますか?

<<:  Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

>>:  CSSでフレックス配置を表示する(レイアウトツール)

推薦する

WeChatアプレットは水平および垂直スクロールを実現

この記事の例では、WeChatアプレットの水平スクロールと垂直スクロールを実現するための具体的なコー...

Vue はスクロール可能なポップアップウィンドウ効果を実装します

この記事では、スクロール可能なポップアップウィンドウ効果を実現するためのVueの具体的なコードを参考...

Mysqlがデータベースに接続するときのホストとユーザーのマッチングルールについての簡単な説明

--データベースに接続するとき、ホストとユーザーのマッチングルール公式ドキュメント: https:/...

mysql 8.0.19 win10 クイックインストールチュートリアル

このチュートリアルでは、参考までにMySQL 8.0.19のインストールチュートリアルを共有します。...

MySQL バージョンは、2 つのタイムスタンプ型の値をサポートしていないバージョンよりも低いです。

MySQL エラー:エラー コード: 1293 テーブル定義が正しくありません。CURRENT_T...

HTML テーブル マークアップ チュートリアル (1): テーブルの作成

<br />これは 123WORDPRESS.COM が提供する一連のチュートリアルです...

Vueは透かし効果を簡単に実現します

序文: Vueプロジェクトで透かし効果を使用するには、コンテナを指定できます効果画像: 1. コンテ...

CentOS7にMariaDB 10.2.4をインストールする方法の詳細な説明

CentOS 6 以前のバージョンでは、MySQL サーバー/クライアント インストール パッケージ...

WEBAPP開発スキルのまとめ(モバイルWebサイト開発の注意点)

1. レスポンシブな Web を開発するには、ページを画面サイズに適応させる必要があります。前の記...

CocosCreator システムイベントがどのように生成され、トリガーされるかについての詳細な説明

目次環境まとめモジュール機能関連文書ソースコード分析CCGame.js CCInputManager...

React 並行関数エクスペリエンス (フロントエンド並行モード)

React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...

Nginxにモジュールを動的に追加する方法

前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...

Node.js のワーカー スレッドの詳細な理解

目次概要Node.js における CPU バウンド アプリケーションの歴史CPUを集中的に使用する操...

VMware 構成 VMnet8 ネットワーク方法の手順

目次1. はじめに2. 設定手順1. はじめに1. NAT モード (VMnet8) は、仮想マシン...

Dockerのヘルス検出メカニズム

コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...