В нашем Electron-рендерере нет... Заметка
DEV Community на русском

В нашем Electron-рендерере нет скрипта предварительной загрузки, и он взаимодействует с 28 HTTP-конечными точками на 127.0.0.1.

Приложения Electron обычно используют скрипты предварительной загрузки, чтобы предоставить процессам отрисовки доступ к привилегированным API Electron. Однако главное окно Notifio отказывается от этого подхода, отключая интеграцию Node.js и изоляцию контекста. Вместо этого процесс отрисовки рассматривается как стандартная веб-страница, обслуживаемая локальным HTTP-сервером, работающим в основном процессе. Этот сервер предоставляет 28 маршрутов, которые составляют полный интерфейс между пользовательским интерфейсом и логикой мониторинга приложения.Этот архитектурный выбор был обусловлен несколькими факторами. Во-первых, процесс отрисовки фактически функционирует как веб-приложение, построенное с использованием стандартных веб-технологий и не осведомленное об Electron. Во-вторых, использование HTTP обеспечивает структурированный и существующий словарь для взаимодействия с API, такой как операции CRUD, избегая постоянных усилий по проектированию, необходимых для пользовательских каналов IPC. В-третьих, одноразовый характер главного окна, которое часто перезагружает свой процесс отрисовки, выигрывает от HTTP API, который позволяет пользовательскому интерфейсу легко восстанавливать свое состояние при каждой загрузке.Обновления в реальном времени обрабатываются путем опроса этих HTTP-маршрутов, а не с помощью механизмов push. Размещение сервера в основном процессе упрощает его работу, устраняя границы сериализации и необходимость отдельного управления процессами. Аутентификация для этого локального HTTP API обеспечивается путем привязки его исключительно к интерфейсу обратной связи, предотвращая доступ из внешней сети.Хотя HTTP-сервер обеспечивает четкое разделение, определенные функции, специфичные для Electron, такие как открытие новых окон браузера для входа пользователей, управляются через небольшой встроенный мост. Этот мост позволяет обработчикам маршрутов делегировать задачи, зависящие от Electron, без того, чтобы сам модуль сервера импортировал Electron. Единственным исключением из этого HTTP-ориентированного дизайна является окно записи, которое использует скрипт предварительной загрузки и IPC. Это необходимо, поскольку оно загружает сторонние сайты и должно отслеживать взаимодействия со страницами, что лучше подходит для скрипта предварительной загрузки в изолированной среде. Различие заключается в том, что HTTP используется, когда процесс отрисовки запрашивает приложение, в то время как предварительная загрузка/IPC используются для наблюдения за внешними страницами.