При организации проекта с использованием Element Plus ключевое значение имеет правильно выстроенная структура каталогов и компонентов, что позволяет поддерживать код в чистоте и масштабируемости.
Типичная структура проекта на Vue 3 с Element Plus может выглядеть следующим образом:
src/
├─ assets/ # Статические файлы (картинки, шрифты, стили)
├─ components/ # Переиспользуемые компоненты
├─ views/ # Страницы приложения
├─ router/ # Настройка маршрутизации
├─ store/ # Vuex или Pinia для управления состоянием
├─ plugins/ # Подключение сторонних библиотек (например, Element Plus)
├─ styles/ # Глобальные стили и темы
└─ App.vue # Корневой компонент
└─ main.js # Точка входа приложения
Акцент: каталог plugins важен для
подключения Element Plus с кастомной конфигурацией, что позволяет
централизованно управлять компонентами и настройками библиотеки.
В файле main.js подключение библиотеки выполняется
следующим образом:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// Подключение Element Plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
const app = createApp(App)
app.use(router)
app.use(store)
app.use(ElementPlus)
app.mount('#app')
Для проектов с большим количеством компонентов часто создают
отдельный файл plugins/element-plus.js, где можно настроить
локализацию, глобальные компоненты и темы:
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import locale from 'element-plus/lib/locale/lang/ru'
export default (app) => {
app.use(ElementPlus, { locale })
}
Element Plus предоставляет огромное количество готовых UI-компонентов. Важно разделять:
BaseButton.vue,
BaseTable.vue).UserForm.vue, ProductCard.vue).Пример структуры components/:
components/
├─ base/
│ ├─ BaseButton.vue
│ ├─ BaseInput.vue
├─ layout/
│ ├─ Header.vue
│ ├─ Sidebar.vue
├─ widgets/
│ ├─ DataTable.vue
│ ├─ ChartCard.vue
Совет: компоненты из base/ обычно
регистрируются глобально, чтобы не импортировать их каждый раз
вручную.
Каталог views/ содержит основные страницы приложения.
Пример структуры:
views/
├─ Home.vue
├─ Users.vue
├─ Products.vue
└─ Settings.vue
Маршрутизация в router/index.js:
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import Users from '../views/Users.vue'
const routes = [
{ path: '/', name: 'Home', component: Home },
{ path: '/users', name: 'Users', component: Users },
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
Особенность: для больших проектов часто применяют
ленивую загрузку компонентов с import() для оптимизации
размера сборки.
Каталог styles/ используется для хранения переменных,
миксинов и глобальных настроек:
styles/
├─ variables.scss
├─ mixins.scss
├─ main.scss
Подключение глобальных стилей:
import './styles/main.scss'
Для Element Plus можно изменять тему через SCSS-переменные:
$--color-primary: #409EFF;
$--font-size-base: 14px;
@import 'element-plus/theme-chalk/src/index';
Для крупных приложений рекомендуется использовать Pinia или Vuex:
store/
├─ index.js # Инициализация хранилища
├─ modules/
│ ├─ user.js
│ ├─ products.js
Пример модуля:
export const userStore = {
state: () => ({ users: [] }),
actions: {
async fetchUsers() {
this.users = await fetch('/api/users').then(res => res.json())
}
}
}
Element Plus поддерживает плагины, такие как
ElMessage, ElNotification,
ElLoading, которые удобно подключать через
plugins/:
import { ElMessage, ElNotification } from 'element-plus'
app.config.globalProperties.$message = ElMessage
app.config.globalProperties.$notify = ElNotification
Это позволяет использовать уведомления и сообщения во всех компонентах без повторного импорта.
base,
widgets, layout).plugins.Структура проекта с такими принципами обеспечивает удобство поддержки и позволяет масштабировать приложение с Element Plus без хаоса в коде.