Rumah > Soal Jawab > teks badan
P粉6765887382023-08-24 00:48:35
vue-svg-loader tidak serasi dengan vue 3. Untuk mengimport svg dan menggunakannya sebagai komponen, hanya bungkus kandungan fail dalam 'template'
Dalam komponen:
<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>
Pek web:
{ 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>`; };
P粉5879700212023-08-24 00:34:09
Malah, Vue CLI sudah pun menyokong SVG secara asli. Ia menggunakan pemuat fail secara dalaman. Anda boleh mengesahkan dengan menjalankan arahan berikut pada terminal:
vue inspect --rules
Jika "svg" disenaraikan (sepatutnya), maka anda hanya perlu:
<template>
<div>
<img :src="myLogoSrc" alt="my-logo" />
</div>
</template>
<script lang="ts">
// 请使用`@`来引用项目的根目录“src”
import myLogoSrc from "@/assets/myLogo.svg";
export default defineComponent({
name: "MyComponent",
setup() {
return {
myLogoSrc
};
}
});
</script>
Jadi jika tujuan anda hanya untuk memaparkan SVG, anda tidak memerlukan perpustakaan pihak ketiga.
Sudah tentu, untuk memenuhi keperluan pengisytiharan jenis penyusun TypeScript:
declare module '*.svg' {
// 它实际上是一个字符串,精确地说是指向图像文件的解析路径
const filePath: string;
export default filePath;
}