Saya menggunakan unplugin-icon untuk mencipta komponen ikon, biasanya saya boleh mengimport cth.
//script import IconCopy from '~icons/prime/copy' //template <IconCopy/>
Ia berfungsi, tetapi jika kita ingin menggunakan ikon lain, rasanya menyusahkan untuk mengimport satu persatu, jadi saya mencipta komponen dinamik bernama Eunoicon.vue
<script setup> const props = defineProps({ icon : {type:String} }) const from = `~icons/prime/${props.icon}` const TheIcon = await import(/* @vite-ignore */from) console.log('ti',TheIcon) </script> <template> <TheIcon/> </template>
Tetapi apabila saya cuba mengimportnya ke dalam komponen, ia menimbulkan ralat Uncaught (in Promise) TypeError: 无法解析模块说明符 '~icons/prime/copy'.
Sebarang cadangan untuk pendekatan ini atau mana-mana perpustakaan ikon yang menyediakan pendekatan mudah? Saya telah mencuba vue font Awesome tetapi ia masih tidak semudah yang saya mahukan.
Malangnya, pada masa ini tidak mungkin untuk membuat import secara dinamik. Saya mendapati diri saya mengalami masalah yang sama beberapa bulan lalu. Penyelesaian saya adalah untuk merawat ikon sebagai SVG dan mencipta fail import yang dilampirkan pada projek saya seperti ini:
Dan buat komponen paparan seperti yang ditunjukkan di bawah yang akan mendapatkan semula ikon yang sepadan dengan nama yang diberikan dengan bantuan prop.
Sudah tentu, membuat fail import secara manual akan menjadi rumit, jadi dalam kes saya, saya mencipta skrip python yang membawa laluan ke folder ikon SVG dan memproses setiap ikon untuk mengecilkannya dan mencipta fail import secara automatik. Skrip ini berfungsi dengan ikon dari Perpustakaan Ikon Phosphor. Anda boleh mencari kod untuk skrip dan komponen Vue dalam repositori github:
https://github.com/fchancel/Phosphor-icon-vue-component
Jika anda memutuskan untuk menggunakan ikon Fosfor, jangan teragak-agak untuk mendapat inspirasi daripadanya, ubah suai atau gunakannya