Element Plus предоставляет удобный способ использования иконок через
отдельный пакет @element-plus/icons-vue, что позволяет
легко подключать и использовать SVG-иконки в компонентах Vue 3. Работа с
этим пакетом требует установки зависимостей и правильной регистрации
компонентов.
Для начала необходимо установить пакет иконок с помощью npm или yarn. Выполняется это командой:
npm install @element-plus/icons-vue --save
или через yarn:
yarn add @element-plus/icons-vue
После установки пакет становится доступен в проекте и готов к использованию.
Element Plus позволяет импортировать и регистрировать только те иконки, которые действительно используются, что снижает размер итогового бандла. Импорт отдельных иконок выглядит следующим образом:
import { createApp } from 'vue'
import App from './App.vue'
import { Search, Edit, Delete } from '@element-plus/icons-vue'
const app = createApp(App)
app.component('ElIconSearch', Search)
app.component('ElIconEdit', Edit)
app.component('ElIconDelete', Delete)
app.mount('#app')
Search, Edit,
Delete — имена иконок, которые необходимо
использовать.app.component, присваивая
им читаемое имя, которое потом удобно использовать в шаблоне.После регистрации иконки можно применять в любом компоненте Vue через
тег <el-icon> или напрямую через зарегистрированные
имена:
<template>
<div>
<el-icon><el-icon-search /></el-icon>
<el-icon><el-icon-edit /></el-icon>
<el-icon><el-icon-delete /></el-icon>
</div>
</template>
Особенности использования:
<el-icon> служит контейнером для SVG иконки,
обеспечивая корректное отображение.<el-icon class="icon-large" color="#409EFF" />
.icon-large {
font-size: 32px;
}
Если проект предполагает использование большого количества иконок, удобнее зарегистрировать их глобально. Для этого можно импортировать весь пакет и зарегистрировать иконки циклом:
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
const app = createApp(App)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}
app.mount('#app')
Для проектов на TypeScript рекомендуется добавить типизацию для зарегистрированных иконок. Например:
import { App } from 'vue'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
export function registerIcons(app: App) {
Object.entries(ElementPlusIconsVue).forEach(([key, component]) => {
app.component(key, component)
})
}
Для оптимизации производительности можно использовать динамический импорт иконок только по необходимости:
const icons = {
Search: () => import('@element-plus/icons-vue/lib/icons/Search'),
Edit: () => import('@element-plus/icons-vue/lib/icons/Edit')
}
app.component('ElIconDynamic', defineAsyncComponent(icons.Search))
Иконки в Element Plus являются SVG-компонентами, поэтому стилизовать их можно стандартными CSS-свойствами:
<el-icon style="font-size: 24px; color: red;" />
Иконки удобно интегрируются с другими компонентами Element Plus, например, с кнопками, вкладками и меню:
<el-button type="primary">
<el-icon><el-icon-edit /></el-icon>
Редактировать
</el-button>
<el-menu>
<el-menu-item index="1">
<el-icon><el-icon-search /></el-icon>
Поиск
</el-menu-item>
</el-menu>
Эти подходы обеспечивают гибкое использование иконок Element Plus, оптимизацию бандла и удобство интеграции в проекты на Vue 3. Они подходят как для небольших интерфейсов, так и для крупных приложений с большим количеством визуальных элементов.