vue-svg-loader n'est pas compatible avec vue 3. Pour importer un fichier SVG et l'utiliser comme composant, enveloppez simplement le contenu du fichier dans un ? modèle ?
En composante :
<template> <div class="title"> <span>Lorem ipsum</span> <Icon /> </div> </template> <script> import Icon from '~/common/icons/icon.svg'; export default { name: 'PageTitle', components: { Icon }, }; </script>
Webpack?:
{ test: /\.svg$/, use: ['vue-loader', path.resolve(__dirname, 'scripts/svg-to-vue.js')], }
scripts/svg-to-vue.js?:
module.exports = function (source) { return `<template>\n${source}\n</template>`; };
En fait, Vue CLI prend déjà en charge SVG de manière native. Il utilise file-loader en interne. Vous pouvez confirmer en exécutant la commande suivante sur le terminal?:
vue inspect --rules
Si ??svg?? est répertorié (il devrait l'être), alors il vous suffit de :
<template> <div> <img :src="myLogoSrc" alt="my-logo" /> </div> </template> <script lang="ts"> // 請(qǐng)使用`@`來(lái)引用項(xiàng)目的根目錄“src” import myLogoSrc from "@/assets/myLogo.svg"; export default defineComponent({ name: "MyComponent", setup() { return { myLogoSrc }; } }); </script>
Donc, si votre objectif est simplement d'afficher du SVG, vous n'avez besoin d'aucune bibliothèque tierce.
Bien s?r, pour satisfaire aux exigences de déclaration de type du compilateur TypeScript?:
declare module '*.svg' { // 它實(shí)際上是一個(gè)字符串,精確地說(shuō)是指向圖像文件的解析路徑 const filePath: string; export default filePath; }