An in-depth analysis of how to use svg icons in vue3+vite
Apr 28, 2022 am 10:48 AMsvg images are widely used in projects. The following article will introduce how to use svg icons in vue3 vite. I hope it will be helpful to everyone!
vite-plugin-svg-icons
- Preloading is done when the project is running Generate all icons, only need to operate dom once
- High performance Built-in cache, only when the file is modified
(Learning video sharing: vuejs tutorial)
Installation
##node version: >=12.0 .0 vite version: >=2.0.0
yarn add vite-plugin-svg-icons -D # or npm i vite-plugin-svg-icons -D # or pnpm install vite-plugin-svg-icons -D
Use
##vite Configuration plug-in in .config.tsimport { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import path from 'path' export default () => { return { plugins: [ createSvgIconsPlugin({ // 指定需要緩存的圖標文件夾 iconDirs: [path.resolve(process.cwd(), 'src/icons')], // 指定symbolId格式 symbolId: 'icon-[dir]-[name]', /** * 自定義插入位置 * @default: body-last */ // inject?: 'body-last' | 'body-first' /** * custom dom id * @default: __svg__icons__dom__ */ // customDomId: '__svg__icons__dom__', }), ], } }
import 'virtual:svg-icons-register'
How to add a component Use
- to create the SvgIcon component
<template> <svg aria-hidden="true" class="svg-icon" :width="props.size" :height="props.size"> <use :xlink:href="symbolId" :fill="props.color" /> </svg> </template> <script setup> import { computed } from 'vue' const props = defineProps({ prefix: { type: String, default: 'icon' }, name: { type: String, required: true }, color: { type: String, default: '#333' }, size: { type: String, default: '1em' } }) const symbolId = computed(() => `#${props.prefix}-${props.name}`) </script>
- icons directory structure
# src/icons - icon1.svg - icon2.svg - icon3.svg - dir/icon1.svg
- Global registration component
# src/main.js import { createApp } from 'vue' import App from './App.vue' import router from './router' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import svgIcon from "@/components/SvgIcon/index.vue"; import 'virtual:svg-icons-register' createApp(App) .use(ElementPlus) .use(router) .component('svg-icon', svgIcon) .mount('#app')
- Page uses
<template> <svg-icon v-if="props.icon" :name="props.icon" /> <span v-if="props.title" slot='title'>{{ props.title }}</span> </template> <script setup> const props = defineProps({ icon: { type: String, default: '' }, title: { type: String, default: '' } }) </script>
to get all SymbolIds , Introduction to programming) The above is the detailed content of An in-depth analysis of how to use svg icons in vue3+vite. For more information, please follow other related articles on the PHP Chinese website!import ids from 'virtual:svg-icons-names'
// => ['icon-icon1','icon-icon2','icon-icon3']
(Learning video sharing: web front-end development

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

ReactivitytransforminVue3aimedtosimplifyhandlingreactivedatabyautomaticallytrackingandmanagingreactivitywithoutrequiringmanualref()or.valueusage.Itsoughttoreduceboilerplateandimprovecodereadabilitybytreatingvariableslikeletandconstasautomaticallyreac

InternationalizationandlocalizationinVueappsareprimarilyhandledusingtheVueI18nplugin.1.Installvue-i18nvianpmoryarn.2.CreatelocaleJSONfiles(e.g.,en.json,es.json)fortranslationmessages.3.Setupthei18ninstanceinmain.jswithlocaleconfigurationandmessagefil

SVG (ScalableVectorGraphics) is a text-based vector graphics format that can be directly embedded in HTML to achieve high-quality graphics display. 1.SVG is stored in XML format, and defines shapes, colors and positions through tags, and supports drawing of complex graphics such as circles, rectangles, and paths; 2. HTML can be embedded through inline code, tags, CSS background images, or other methods; 3. Compared with PNG or JPEG, SVG has the advantages of resolution irrelevance, small file size, strong editability, and support CSS and JavaScript interaction; 4. When using it, it is recommended to set width and height attributes, optimize accessibility, test cross-device compatibility, and use development tools for debugging.

Server-siderendering(SSR)inVueimprovesperformanceandSEObygeneratingHTMLontheserver.1.TheserverrunsVueappcodeandgeneratesHTMLbasedonthecurrentroute.2.ThatHTMLissenttothebrowserimmediately.3.Vuehydratesthepage,attachingeventlistenerstomakeitinteractive

ToaddtransitionsandanimationsinVue,usebuilt-incomponentslikeand,applyCSSclasses,leveragetransitionhooksforcontrol,andoptimizeperformance.1.WrapelementswithandapplyCSStransitionclasseslikev-enter-activeforbasicfadeorslideeffects.2.Useforanimatingdynam

nextTick is used in Vue to execute code after DOM update. When the data changes, Vue will not update the DOM immediately, but will put it in the queue and process it in the next event loop "tick". Therefore, if you need to access or operate the updated DOM, nextTick should be used; common scenarios include: accessing the updated DOM content, collaborating with third-party libraries that rely on the DOM state, and calculating based on the element size; its usage includes calling this.$nextTick as a component method, using it alone after import, and combining async/await; precautions include: avoiding excessive use, in most cases, no manual triggering is required, and a nextTick can capture multiple updates at a time.

Building a Vue component library requires designing the structure around the business scenario and following the complete process of development, testing and release. 1. The structural design should be classified according to functional modules, including basic components, layout components and business components; 2. Use SCSS or CSS variables to unify the theme and style; 3. Unify the naming specifications and introduce ESLint and Prettier to ensure the consistent code style; 4. Display the usage of components on the supporting document site; 5. Use Vite and other tools to package as NPM packages and configure rollupOptions; 6. Follow the semver specification to manage versions and changelogs when publishing.

Managing environment variables in Vue applications requires specific rules and using .env files. First, only variables prefixed with VUE_APP_ will be exposed to the application; second, different environments correspond to different .env files, such as .env.development, .env.production, etc.; third, variables are injected during construction and cannot be changed at runtime. The specific steps include: 1. Create .env files in the project root directory; 2. Use the corresponding .env files according to the pattern, such as .env.staging; 3. Access variables through process.env in the code; 4. You can import the variables into config.js for unified management; 5. If you need multiple environments to support, you can use package
