007 Архитектура приложения
Electron - это оболочка для выполнения веб-логики
Он создаёт один основной процесс на одно приложение - Main Process, который и выполняет всю логику приложения. Представляет из себя NodeJS-процесс. Дальше основной процесс создаёт Renderer Process, который запускает окно браузера в качестве видимой части приложения
Уже рендерер процессов может быть сколько угодно много. Генерируется один такой процесс на каждое отдельное окно приложения. При закрытии такого окна - закрывается один рендерер-процесс. Закрытие окна никак не влияет на основной процесс. Даже если закрыть все окна, то основной процесс продолжит работать
Можно сказать, что рендерер-процесс - это клиентская сторона программы, а основной процесс - это серверная часть программы. Однако тут клиентская сторона вызывается самим сервером
Для основного процесса (Node.JS API) Исходя из вышесказанного, мы можем пользоваться стандартными технологиями Node.JS:
- File System
- Process
- Streams
- Node modules
- И так далее
Для рендерер-процесса (Browser API) Так же мы можем использовать фронт-енд технологии для видимой части нашего приложения:
- Фреймворки
- LocalStorage
- Coockies
- Service Workers
- Notifications
- И так далее
Но самым главным плюсом является то, что нам не нужно беспокоиться о кросс-браузерности, так как у нас используются последние версии хромиума со всеми новыми фишками
Однако тут нужно учитывать, что мы можем столкнуться с Memory Leak (явление, когда garbage collector не удаляет переменную, так как на неё есть ссылка), если в глобальной области видимости будем создавать переменные и никак их не удалять, так как они будут сохраняться в нашем основном процессе и съедать очень много памяти.
008 Создание структуры проекта с помощью bozon
Bozon - это инструмент для работы с Electron-приложениями. Построен на базе Webpack. Он позволяет генерировать проект, запускать, тестировать и паковать его.
Установка bozon
Создаст новый проект
Скомпилирует проект
Запустит внутреннее unit-тестирование приложения
Изначально проект представляет собой несколько папок, которые уже сконфигурированы под дальнейшую разработку на электроне:
.tmp
- временно хранит в себе сгенерированный проектbuild
- хранит в себе сборку программы во время разработки (development) и итоговый проектconfig
- хранит в себе конфигурации нашей системы. Есть общая конфигурацияsettings.json
, так и общие конфигурации по энвайрментам и платформам. Во время генерации проекта, все конфиги компилируются в один итоговый файл- В папке
resources
находятся иконки для нашего приложения, которые можно поменять - В папке
src
хранятся исходники нашего приложения - А уже в папке
test
будут храниться тесты нашего приложения
Эта команда запустит автоматическую компиляцию изменений в приложении (hot reload). Однако нужно упомянуть, что изменения могут встать на паузу в дебаггере и нужно их снять с паузы, чтобы они отображались (окно браузера может стать просто белым до снятия с паузы)
009 Отладка приложения
Эта команда позволяет открыть нам девтулз при запуске приложения (если запускать скрипт в основном процессе). И при включении девтулз остановится на точке, где мы напишем в коде debugger
Так же мы можем подключить инспектор напрямую из гугл хрома/ Нам нужно запустить инспектор по своему порту, который ничем не занят
Далее переходим в хроме во вкладку настройки инспектора и конфигурируем его. После следующего пункта с конфигурацией, мы должны открыть инспектор по порту. Нажимая на inspect
, мы запускаем девтулз в хроме - запускать его нужно после запуска команды
Нужно будет вписать в configure
значение того порта, которое мы выбрали
Ставим точку останова (дебага) внутри нашего кода
И теперь при закрытии приложения, у нас включается эта точка в девтулз
Так же есть вторая команда, которая сразу запускает точку останова с первой строчки кода
Далее, после запуска команды, нам нужно заново открыть девутлз через inspect
и уже можно будет пользоваться остальными кнопками справа