Electron
Настольные возможности: работа с файлами, системные диалоги, буфер обмена, пути и оболочка ОС.
Пространство Engine.api.electron открывает доступ к возможностям операционной системы: файлам, системным диалогам, буферу обмена, путям и оболочке ОС.
⚠️ Только в настольном приложении. В обычном браузере эти методы недоступны и вернут ошибку в поле
error. Проверить окружение можно черезEngine.api.electron.isDesktop().
Все методы асинхронные и возвращают { success, data }.
Проверка окружения
if (Engine.api.electron.isDesktop().data) {
// Настольное приложение — файловые методы доступны
} else {
Engine.api.dialog.alert('Эта функция доступна только в приложении', { type: 'warning' });
}Системные диалоги
Выбрать файл
Engine.api.electron.openFile(параметры?) — открывает системный диалог выбора файла. Возвращает выбранные пути.
Параметры (необязательно): заголовок окна, фильтры по типам файлов, разрешение множественного выбора.
const res = await Engine.api.electron.openFile({
title: 'Выберите файл сессии',
filters: [{ name: 'Сессии', extensions: ['session'] }]
});
if (res.success && !res.data.canceled) {
console.log(res.data.filePaths);
}Выбрать, куда сохранить файл
Engine.api.electron.saveFile(параметры?) — открывает диалог сохранения файла. Возвращает выбранный путь.
Выбрать папку
Engine.api.electron.openFolder(параметры?) — открывает диалог выбора папки.
Показать системное окно с сообщением
Engine.api.electron.showMessage(параметры?) — показывает системное окно с сообщением и кнопками.
Файловая система
Чтение и запись
readFile(путь, кодировка?)— читает файл (по умолчанию'utf-8').writeFile(путь, содержимое, кодировка?)— записывает файл, перезаписывая содержимое.appendFile(путь, содержимое, кодировка?)— дописывает в конец файла.
await Engine.api.electron.writeFile('C:/data/log.txt', 'Начало\n');
await Engine.api.electron.appendFile('C:/data/log.txt', 'Ещё строка\n');
const res = await Engine.api.electron.readFile('C:/data/log.txt');
if (res.success) console.log(res.data);Управление файлами и папками
exists(путь)— существует ли файл или папка.stat(путь)— сведения о файле (размер, даты).deleteFile(путь)/remove(путь)— удаляет файл.copy(источник, назначение)— копирует файл.rename(старыйПуть, новыйПуть)— переименовывает или перемещает.mkdir(путь, рекурсивно?)— создаёт папку (по умолчанию рекурсивно).readDir(путь)— возвращает содержимое папки.
const res = await Engine.api.electron.exists('C:/data');
if (!res.data) {
await Engine.api.electron.mkdir('C:/data');
}
const list = await Engine.api.electron.readDir('C:/data');
console.log(list.data);Буфер обмена
Прочитать буфер обмена
Engine.api.electron.clipboardRead() — возвращает текст из буфера обмена.
Скопировать текст в буфер обмена
Engine.api.electron.clipboardWrite(текст) — копирует текст в буфер обмена.
await Engine.api.electron.clipboardWrite('Скопированный текст');
const res = await Engine.api.electron.clipboardRead();
console.log(res.data);Пути
Помогают собирать и разбирать пути независимо от ОС.
pathJoin(...части)— соединяет части пути.pathResolve(...части)— собирает абсолютный путь.pathDirname(путь)— папка файла.pathBasename(путь, расширение?)— имя файла.pathExtname(путь)— расширение файла.
const res = await Engine.api.electron.pathJoin('C:/data', 'reports', 'out.txt');
console.log(res.data); // C:/data/reports/out.txtОболочка ОС
Открыть ссылку в браузере
Engine.api.electron.openExternal(адрес) — открывает ссылку во внешнем браузере.
Открыть файл или папку
Engine.api.electron.openPath(путь) — открывает файл или папку в приложении по умолчанию.
Показать файл в проводнике
Engine.api.electron.showInFolder(путь) — показывает файл в проводнике, выделяя его.
await Engine.api.electron.openExternal('https://example.com');
await Engine.api.electron.showInFolder('C:/data/report.pdf');Приложение и система
getDataPath()— папка данных приложения (для хранения ваших файлов).getAppPath(имя?)— системная папка по имени (например, загрузки, документы).getAppVersion()/getAppName()— версия и имя приложения.getPlatform()— платформа ('win32','darwin','linux').getHomeDir()/getTempDir()— домашняя и временная папки.getEnv(имя)— значение переменной окружения.isDesktop()— работает ли интерфейс в настольном приложении.
const res = await Engine.api.electron.getDataPath();
const logPath = await Engine.api.electron.pathJoin(res.data, 'my-interface.log');
await Engine.api.electron.appendFile(logPath.data, 'Запись\n');