ホームページ >ウェブフロントエンド >Vue.js >vue3+vite2でsvgメソッドを使用する方法

vue3+vite2でsvgメソッドを使用する方法

WBOY
WBOY転載
2023-05-11 17:55:061683ブラウズ

1. vite-plugin-svg-icons をインストールします

ここで fast-glob 関連の依存関係もインストールする必要があります。そうしないと、npm run dev の実行時に vite が「モジュール 'fast-glob' が見つかりません」エラーを報告します。

npm i fast-glob@3.x -D
npm i vite-plugin-svg-icons@2.x -D

2. src/components/svgIcon に新しいコンポーネントindex.vue を作成します

<template>
  <svg aria-hidden="true" class="svg-icon">
    <use :xlink:href="symbolId" rel="external nofollow"  :fill="color" />
  </svg>
</template>

<script setup lang="ts">
import { computed } from &#39;vue&#39;;

const props = defineProps({
  prefix: {type: String,default: &#39;icon&#39;,},
  iconClass: {type: String,required: true,},
  color: {type: String,default: &#39;&#39;}
})

const symbolId = computed(() => `#${props.prefix}-${props.iconClass}`);
</script>

<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  overflow: hidden;
  fill: currentColor;
}
</style>

3. tsconfig.json

types に設定を追加して、必要なモジュールを指定します含める場合、ここにリストされているモジュールの宣言ファイルのみがロードされます。追加する必要はありません。2 つのデモをテストしたとき、1 つは必要で、もう 1 つは必要ありませんでした。問題がある場合は、vite に

{
  "compilerOptions": {
    "types": ["vite-plugin-svg-icons/client"]
  }
}

4. 設定プラグインを追加してみてください。 config.ts

import { resolve } from &#39;path&#39;
import { createSvgIconsPlugin } from &#39;vite-plugin-svg-icons&#39;

export default defineConfig({
  plugins: [
    createSvgIconsPlugin({
      // 指定需要缓存的图标文件夹
      iconDirs: [resolve(process.cwd(), &#39;src/assets/imgs/svg&#39;)],
      // 指定symbolId格式
      symbolId: &#39;icon-[dir]-[name]&#39;,
    })
  ]
})

5. main.ts

import { createApp } from &#39;vue&#39;
import App from &#39;./App.vue&#39;
import router from &#39;@/router&#39;
import { store, key } from &#39;@/store&#39;

const app = createApp(App)

import &#39;virtual:svg-icons-register&#39; // 引入注册脚本
import SvgIcon from &#39;@/components/svgIcon/index.vue&#39; // 引入组件
app.component(&#39;svg-icon&#39;, SvgIcon)

app.use(router).use(store, key).mount(&#39;#app&#39;)

にコンポーネントをグローバルに登録します。 6. ページ内で

<template>
  <svg-icon icon-class="category"></svg-icon>
  <svg-icon icon-class="accountant" ></svg-icon>
</template>

を使用します。 7. ファイルのディレクトリ構造とその効果の表示 # ##################################

以上がvue3+vite2でsvgメソッドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。