Краткий справочник по Electron API и шаблон конфигурации
Краткий справочник по API главного процесса
| Модуль |
Описание функций |
Общие методы |
Описание |
| app |
Управление жизненным циклом приложения |
app.on('ready')、app.quit()、app.getPath('userData') |
Управление запуском приложения, завершением работы, путями, регистрацией протоколов и т. д. |
| BrowserWindow |
Создание окон и управление ими |
new BrowserWindow(options)、win.loadFile()、win.loadURL()、win.webContents |
Основной контейнер пользовательского интерфейса приложения Electron, внутри которого выполняется процесс рендеринга |
| ipcMain |
Интерфейс связи главного процесса |
ipcMain.on(channel, callback)、ipcMain.handle(channel, handler) |
Прослушивание сообщений или запросов на вызов, отправленных процессом рендеринга |
| Меню |
Создание меню приложения |
Menu.buildFromTemplate(menuTemplate)、Menu.setApplicationMenu(menu) |
Настраиваемые пункты меню, сочетания клавиш и контекстные меню |
| Трей |
Управление системным треем |
new Tray(icon)、tray.setToolTip()、tray.setContextMenu(menu) |
Отображение значка на панели задач, обычно используется для фоновых резидентных приложений |
| Диалог |
Системные нативные диалоги |
dialog.showOpenDialog()、dialog.showSaveDialog()、dialog.showMessageBox() |
Системные взаимодействия, такие как выбор файлов, сохранение и запросы сообщений |
| Уведомление |
Системное уведомление |
new Notification({ title, body }).show() |
Отправка нативных системных уведомлений с необязательными обратными вызовами по клику |
| Шелла |
Вызов внешних системных ресурсов |
shell.openExternal(url)、shell.showItemInFolder(path) |
Открытие внешних веб-страниц, папок и исполняемых файлов |
| Протокол |
Зарегистрировать пользовательский протокол |
protocol.registerFileProtocol()、protocol.handle() |
Для загрузки пользовательских ресурсов или глубоких ссылок |
| Сессия |
Управление сессиями, кэшем и файлами cookie |
session.defaultSession.cookies.get()、clearCache() |
Низкоуровневый контроль над данными просмотра и запросами |
| Сеть |
Нативные сетевые запросы HTTP/HTTPS |
net.request(options) |
Низкоуровневый сетевой модуль с более высокой производительностью, чем...fetch |
| PowerMonitor |
Мониторинг состояния питания системы |
powerMonitor.on('suspend')、on('resume') |
Отслеживание сна, пробуждения, блокировки экрана и других состояний компьютера |
| Буфер обмена |
Операции с буфером обмена |
clipboard.readText()、clipboard.writeText() |
Поддержка кроссплатформенного копирования и вставки текста, изображений и т. д. |
| GlobalShortcut |
Регистрация глобальных горячих клавиш |
globalShortcut.register('CommandOrControl+X', fn) |
Сочетания клавиш, работающие во всех окнах и в фоновом режиме |
Краткий справочник по API процесса рендеринга
| Модуль |
Описание функций |
Общие методы |
Описание |
| ipcRenderer |
Связь с главным процессом |
ipcRenderer.send()、ipcRenderer.invoke()、ipcRenderer.on() |
Используется процессом рендеринга для отправки, получения и вызова событий главного процесса |
| webFrame |
Управление содержимым текущей страницы |
webFrame.setZoomFactor()、webFrame.insertCSS() |
Динамическое изменение масштаба и стилей страницы |
| contextBridge |
Безопасно предоставлять API |
contextBridge.exposeInMainWorld('api', {...}) |
При включенииcontextIsolationПри безопасном взаимодействии с главным процессом |
| desktopCapturer |
Захват содержимого экрана |
desktopCapturer.getSources({ types: ['window', 'screen'] }) |
Для функций создания снимков экрана или записи экрана |
| Уведомление |
Notification API |
new Notification('标题', { body: '内容' }) |
Отправляйте уведомления с помощью стандартного для браузера Notification API |
| Буфер обмена |
Операции с буфером обмена |
navigator.clipboard.readText() |
Может получать доступ к системному буферу обмена (некоторые функции ограничены) |
| Web Storage / IndexedDB |
Local Storage |
localStorage.setItem()、indexedDB.open() |
Сохранение легковесных или структурированных данных |
| Fetch / Axios |
Сетевой запрос |
fetch(url)、axios.get() |
Для доступа к удалённым API и загрузки ресурсов |
| DOM / Window |
Управление страницей |
document.querySelector()、window.open() |
Все Web API доступны |
Краткий справочник по распространённым вспомогательным модулям
| Модуль |
Основные возможности |
Пример |
| fs |
Операции с файлами |
fs.readFileSync(path)、fs.writeFile(path, data) |
| path |
Объединение путей |
path.join(__dirname, 'index.html') |
| os |
Информация о системе |
os.platform()、os.homedir() |
| child_process |
Запуск дочернего процесса |
exec('ls', callback) |
| electron-store |
Постоянная конфигурация |
store.set('key', value)、store.get('key') |
| sqlite3 / better-sqlite3 |
Локальная база данных |
db.prepare('SELECT * FROM notes').all() |
| axios / node-fetch |
Сетевой запрос |
axios.post(url, data) |
| node-gyp |
Компиляция нативных модулей |
node-gyp rebuild |
Шаблоны файлов конфигурации и инструкции
Шаблон package.json и инструкции
{
"name": "my-electron-app",
"version": "1.0.0",
"description": "示例 Electron 应用",
"main": "main.js",
"scripts": {
"start": "electron .",
"pack": "electron-builder --dir",
"dist": "electron-builder"
},
"devDependencies": {
"electron": "^33.0.0",
"electron-builder": "^24.6.0"
},
"build": {
"appId": "com.example.myelectronapp",
"productName": "MyElectronApp",
"directories": {
"output": "dist"
},
"files": [
"main.js",
"preload.js",
"renderer/**/*"
],
"win": {
"target": "nsis",
"icon": "assets/icon.ico"
},
"mac": {
"category": "public.app-category.productivity",
"icon": "assets/icon.icns"
},
"linux": {
"target": "AppImage",
"icon": "assets/"
}
}
}
Описание:
| Fields |
Значение |
| name / version / description |
Информация о названии приложения, номере версии и описании |
| main |
Входной файл главного процесса (обязательно) |
| scripts |
Определите скрипты команд,npm startStart,npm run distPack |
| devDependencies |
Зависимости для разработки (Electron, инструменты упаковки и т. д.) |
| build |
electron-builderЭлемент конфигурации |
| appId |
Уникальный ID приложения, используемый для подписи и идентификации обновлений |
| productName |
Имя приложения, отображаемое после упаковки |
| directories.output |
Путь вывода упаковки |
| files |
Укажите файлы и каталоги для упаковки в приложение |
| win/mac/linux |
Независимая конфигурация упаковки для каждой платформы (иконки, целевые форматы) |
Шаблон electron-builder.yml и инструкции
appId: com.example.myelectronapp
productName: MyElectronApp
directories:
output: dist
files:
- "main.js"
- "preload.js"
- "renderer/**/*"
win:
target: nsis
icon: assets/icon.ico
mac:
target: dmg
icon: assets/icon.icns
linux:
target: AppImage
icon: assets/
publish:
provider: github
repo: my-electron-app
owner: username
Описание:
| Элемент конфигурации |
Описание |
| appId / productName |
Уникальный идентификатор и имя приложения |
| directories.output |
Каталог вывода упаковки |
| files |
Список упаковываемых файлов (поддерживает подстановочные знаки) |
| win / mac / linux |
Цели сборки и конфигурации значков для разных систем |
| publish |
Конфигурация источника релизов для автообновлений (например, GitHub Releases) |
Шаблон TypeScript tsconfig.json и пояснение
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"outDir": "./dist",
"rootDir": "./src",
"esModuleInterop": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"skipLibCheck": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
Описание:
| Параметры |
Значение |
| target |
Целевая версия JavaScript для компиляции |
| module |
Модульная система, обычно используемая главным процессом Electroncommonjs |
| outDir / rootDir |
Каталоги вывода и исходного кода |
| strict |
Включить строгую проверку типов |
| esModuleInterop |
Разрешить импорт по умолчанию для не-ES модулей |
| resolveJsonModule |
Поддержка импорта JSON-файлов |
| skipLibCheck |
Пропускать проверки файлов объявлений для ускорения компиляции |
Другие расширения