ホームページ  >  に質問  >  本文

Vue 3 に svg ファイルをインポートするにはどうすればよいですか?

<p>次のことを試しました: <br /> <a href="https://github.com/visualfanatic/vue-svg-loader/tree/master">https://github.com /visualfanatic/vue-svg-loader/tree/master</a></p> <p>しかし、vue-template-compiler は Vue 2 で使用されているため、バージョンの競合が発生します。 </p> <p>試してみました:<br /> <a href="https://github.com/visualfanatic/vue-svg-loader">https://github.com/visualfanatic/vue-svg -loader</a></p> <p>しかし、特定の Vue 依存関係がありません。 </p> <p>TypeScript を使用する場合、型定義ファイルを宣言する必要があるという注意事項があることに気付きました。ただし、依然として「モジュール '../../assets/myLogo.svg' またはそれに対応する型宣言が見つかりません」というエラーが表示されます。 </p> <p>これは私が追加したものです: </p> <p>vue.config.js</p> <pre class="brush:php;toolbar:false;">module.exports = { chainWebpack: (config) => { const svgRule = config.module.rule('svg'); svgRule.uses.clear(); svgルール .use('vue-loader-v16') .loader('vue-loader-v16') 。終わり() .use('vue-svg-loader') .loader('vue-svg-loader'); }、 configureWebpack: process.env.NODE_ENV === 'production' ? {} : { 開発ツール: 'ソースマップ' }、 publicPath: process.env.NODE_ENV === 'production' ? '/パーソナルウェブサイト/' : '/' }</pre> <p>shims-svg.d.ts</p> <pre class="brush:php;toolbar:false;">モジュール '*.svg' を宣言 { 定数の内容: 任意; デフォルトのコンテンツをエクスポートします。 }</pre> <p>MyComponent.vue</p> <pre class="brush:php;toolbar:false;"><テンプレート> <div> <マイロゴ /> </div> </テンプレート> <script lang="ts"> import * as MyLogo from "../../assets/myLogo.svg"; デフォルトのエクスポートdefineComponent({ 名前: "MyComponent"、 コンポーネント: { マイロゴ }、 小道具: { }、 セットアップ(小道具) { 戻る { 小道具 }; } }); </script></pre> <p><br /></p>
P粉021854777P粉021854777393日前681

全員に返信(2)返信します

  • P粉676588738

    P粉6765887382023-08-24 00:48:35

    vue-svg-loader は vue 3 と互換性がありません。 svg をインポートしてコンポーネントとして使用するには、ファイルの内容を「テンプレート」で囲むだけです

    コンポーネント内:

    リーリー

    ウェブパック:

    リーリー

    scripts/svg-to-vue.js:

    リーリー

    返事
    0
  • P粉587970021

    P粉5879700212023-08-24 00:34:09

    実際、Vue CLI はすでに SVG をネイティブにサポートしています。内部では file-loader を使用します。ターミナルで次のコマンドを実行して確認できます:

    リーリー

    「svg」がリストされている場合 (そうであるはずです)、必要なのは次のことだけです。

    リーリー

    したがって、目的が SVG を表示することだけであれば、サードパーティのライブラリは必要ありません。

    もちろん、TypeScript コンパイラーの型宣言要件を満たすために:

    リーリー

    返事
    0
  • キャンセル返事