Современный шаблон настольного приложения, готовый к использованию в производстве, который сочетает в себе лучшие веб-технологии. Создавайте кроссплатформенные настольные приложения с опытом веб-разработки.
- Electron 40 - Последняя стабильная версия для кроссплатформенных настольных приложений
- React 18 - Последний React с параллельными функциями
- TypeScript 5 - Строгий режим включен для безопасности типов
- Vite 6 - Молниеносный HMR и оптимизированные производственные сборки
- HeroUI v2 - Красивая и доступная библиотека компонентов React
- Tailwind CSS v4 - CSS с приоритетом утилит с последними функциями
- Горячая Замена Модулей (HMR) - Мгновенные обновления во время разработки
- Безопасность Типов - Полная поддержка TypeScript с строгим режимом
- Современные Инструменты - ESLint, Prettier предварительно настроены
- Псевдонимы Путей - Чистые импорты с префиксом
@/ - Границы Ошибок - Изящная обработка ошибок
- Темный Режим - Встроенная поддержка переключения тем
- Адаптивный Дизайн - Работает на всех размерах экрана
- Плавные Анимации - Интеграция Framer Motion
- Доступность - Компоненты, соответствующие WCAG
- Настраиваемость - Легкая тематизация с Tailwind CSS
- Генерация Установщиков - Сборка для Windows, macOS и Linux
- Кроссплатформенность - Единая кодовая база для всех основных настольных платформ
Перед началом убедитесь, что выполнены следующие требования:
- Node.js >= 18.0.0
- Yarn >= 1.22.0 (рекомендуется) или npm/pnpm
- Git
Примечание: Если вам нужно собирать нативные зависимости (опционально), вам могут потребоваться инструменты сборки для конкретной платформы (Visual Studio Build Tools для Windows или Xcode Command Line Tools для macOS).
git clone https://github.com/LingChen-tsjmdlc/electron-vite-heroui-template.git my-electron-app
cd my-electron-appyarn install# Запуск в Electron с горячей перезагрузкой
yarn dev
# Или только предпросмотр в браузере
yarn dev:web# Сборка для текущей платформы
yarn build
# Сборка для конкретных платформ
yarn build:win # Windows
yarn build:mac # macOS
yarn build:linux # Linux
yarn build:all # Все платформыmy-electron-app/
├── electron/ # Главный процесс Electron
│ ├── main.ts # Вход главного процесса
│ └── preload.ts # Скрипт предзагрузки для IPC
├── src/
│ ├── components/ # Переиспользуемые компоненты React
│ ├── config/ # Файлы конфигурации
│ ├── layouts/ # Макеты страниц
│ ├── pages/ # Страницы приложения
│ ├── styles/ # Глобальные стили
│ └── types/ # Типы TypeScript
├── docs/ # Документация
├── package.json
├── vite.config.ts
├── tsconfig.json
└── tailwind.config.js
Отредактируйте раздел build в package.json:
{
"build": {
"appId": "com.yourcompany.yourapp",
"productName": "Название Вашего Приложения",
"directories": {
"output": "release"
}
}
}- Создайте новый файл в
src/pages/:
// src/pages/my-page.tsx
export default function MyPage() {
return <div>Моя Новая Страница</div>;
}- Добавьте маршрут в
src/App.tsx:
import MyPage from "./pages/my-page";
<Route path="/my-page" element={<MyPage />} />Используйте утилитарные классы Tailwind напрямую:
<div className="flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-primary-500 to-secondary-500">
<h1 className="text-4xl font-bold text-white">Привет Мир</h1>
</div>import { Button, Card, CardBody } from "@heroui/react";
<Card>
<CardBody>
<Button color="primary" size="lg">
Нажми
</Button>
</CardBody>
</Card>;При использовании ссылок в этом шаблоне вы должны различать внутреннюю навигацию и внешние ссылки:
Для внутренней навигации (React Router):
import { Link } from "react-router-dom";
// ✅ Правильно - Без обновления страницы
<Link to="/docs">Документация</Link>
<Link to="/about">О нас</Link>Для внешних веб-сайтов:
import { Link } from "@heroui/link";
// ✅ Правильно - Открывается в браузере
<Link href="https://github.com" isExternal>GitHub</Link>❌ Распространенная Ошибка:
import { Link } from "@heroui/link";
// Неправильно! Это вызывает обновление страницы и ломает маршрутизацию
<Link href="/docs">Документация</Link>Скрипт Предзагрузки (electron/preload.ts):
contextBridge.exposeInMainWorld("electronAPI", {
sendMessage: (channel: string, data: any) => {
ipcRenderer.send(channel, data);
},
onMessage: (channel: string, callback: Function) => {
ipcRenderer.on(channel, (event, ...args) => callback(...args));
},
});Использование в React:
window.electronAPI.sendMessage("custom-event", { data: "value" });Белый экран после сборки?
- Убедитесь, что используете
HashRouterдля Electron (уже настроено) - Проверьте, что все ресурсы включены в массив
filesвpackage.json
Горячая перезагрузка не работает?
- Убедитесь, что запускаете
yarn dev, а неyarn build - Проверьте, что HMR включен в vite.config.ts
Вклады приветствуются! Не стесняйтесь отправлять Pull Request.
Этот проект лицензирован по лицензии MIT - см. файл LICENSE для получения подробной информации.
- Electron - Кроссплатформенный фреймворк
- HeroUI - Библиотека красивых компонентов
- Vite - Ультрабыстрый инструмент сборки
- Tailwind CSS - CSS с приоритетом утилит
- React - UI библиотека
Если вы нашли этот шаблон полезным, пожалуйста, рассмотрите возможность поставить ему ⭐ на GitHub!
Для вопросов или проблем:
- Откройте Issue
- Начните Discussion
Построено с ❤️ с использованием Electron, React, Vite и HeroUI
