автор Том Хелвик

Когда компании разрабатывают приложения для настольных компьютеров, им обычно требуется поддержка трех разных операционных систем: Windows, Mac и Linux. Соответственно, каждая из этих операционных систем имеет свои собственные требования и зависимости. В результате разработка одного и того же приложения для нескольких платформ часто требует использования совершенно разных кодовых баз. В свою очередь, эти кодовые базы должны поддерживаться независимо. Электрон стремится решить эту проблему.

Происхождение Электрона

Проект Electron начался в 2013 году под названием Atom Shell. Сначала он был основой для редактора кода GitHub, Atom. Это позволило бы Atom быть кроссплатформенным с единой кодовой базой. Позже он получил новое название Electron и стал открытым исходным кодом.

Ключевым открытием Electron стала существующая кросс-совместимость веб-технологий на всех платформах. Следовательно, Electron использовал JavaScript и среду выполнения NodeJS для создания своих приложений. Кроме того, он позволил этим приложениям существовать в автономном режиме и на любой платформе, поместив эти приложения на основе NodeJS в экземпляр браузера Chromium.

Примечательно, что команда GitHub поддерживает и улучшает Electron с помощью сообщества открытого исходного кода. Вскоре после выпуска Electron стал очень популярен среди крупных компаний. В настоящее время Electron поддерживает популярные настольные приложения, такие как Slack, Discord, Basecamp, VS Code, Atom, Skype, WhatsApp, Yammer и другие.

Как работает электрон

Создание приложения Electron во многом похоже на создание веб-приложения. На самом деле, если у вас есть существующее веб-приложение, вы можете повторно использовать большую часть кода в своей версии Electron. В то время как настольные приложения раньше требовали разных кодовых баз для разных платформ, теперь ваше приложение состоит из HTML, CSS и JavaScript.

В других проектах предпринимались попытки кросс-платформенной поддержки, предоставляя привязки к библиотекам графического пользовательского интерфейса на собственных платформах. Напротив, Electron использует веб-страницы в качестве своего графического интерфейса. Он объединяет браузер Chromium и NodeJS в единую среду выполнения — среду выполнения Electron. Таким образом, вы можете думать о приложении Electron как о минимальном браузере Chromium с контроллером JavaScript.

Помимо соображений начальной настройки, приложение Electron, по сути, является приложением NodeJS для целей разработки. В целом структура приложения почти идентична приложению NodeJS. В частности, единственное изменение для базового приложения находится в файле package.json. Там вы меняете стартовый скрипт с «node». на «электрон».

Хорошие стороны электрона

Электрон получил широкую поддержку и использование со стороны крупных компаний не просто так. Во-первых, он построен на хорошо спроектированных и поддерживаемых проектах NodeJS и Chromium. В результате он сочетает в себе лучший в отрасли рендеринг JavaScript на стороне сервера и быстрый движок JavaScript Chromium. Это дает множество других преимуществ:

1. Нативные меню и уведомления

Разработчики могут создавать собственные меню приложений и контекстные меню, используя интеграцию с платформой Electron. Затем они отображаются как часть собственного приложения. Конечно, структура меню и то, как сделать меню «нативным», по-прежнему зависит от вас как от разработчика.

2. Установщики и обновления

В целом, Electron поддерживает установщики для всех основных платформ. В частности, он поддерживает установщики Windows, поэтому вам не нужно это делать, что является серьезным камнем преткновения для многих разработчиков. Кроме того, Electron официально поддерживает Squirrel для автоматического обновления на Mac и Windows.

3. Мониторинг

Electron включает встроенную поддержку отчетов о сбоях на удаленных серверах и ведения журналов приложений. Кроме того, он включает отслеживание контента для выявления узких мест в производительности и медленных операций.

4. Низкоуровневый доступ

Одна из проблем, связанных с Electron, заключается в том, можете ли вы получить доступ к устройствам и другому оборудованию. Фактически, разработчики могут получить полный доступ ко всем API аппаратного уровня через Electron и его плагины.

5. Экономия времени

Важно понимать, что самое большое преимущество Electron — это экономия времени на разработку. Когда все версии вашего приложения (веб, Windows, Mac, Linux) имеют общую базовую кодовую базу, вы можете гораздо проще создавать и развертывать новые функции. Однако есть оговорки.

Плохие стороны электрона

Электрон не серебряная пуля. Действительно, у каждого выбора технологии есть компромиссы. Электрон не исключение. Как правило, эти проблемы возникают при создании нативного приложения на JavaScript. К счастью, многие из этих проблем можно смягчить или пропустить в зависимости от контекста вашего приложения.

1. Размер

Чаще всего в адрес Electron критикуют за размер приложения. Поскольку Electron использует версию браузера Chromium, любое новое приложение в Electron должно поставляться с Chromium и NodeJS. Минимальный размер даже самого простого приложения Electron составляет ~ 30 МБ.

2. Использование памяти

Chromium известен своей требовательностью к процессору. В результате приложения Electron также могут потреблять много памяти. Если вы нацелены на системы с ограниченным объемом памяти, то Electron может оказаться не лучшим выбором. С другой стороны, если ваши целевые устройства могут успешно запускать браузер Chrome, то они, скорее всего, смогут запускать и приложения Electron. Кроме того, есть шаги, которые вы можете предпринять, чтобы ограничить использование памяти.

3. Параллелизм

Если вашему приложению требуется настоящий многопоточный (не связанный с вводом-выводом) параллелизм ЦП, то Electron — не то, что вам нужно. Electron использует NodeJS, а Node является однопоточным.

4. Не совсем родной

Хотя Electron неплохо справляется с созданием нативного приложения, у вас не будет доступа к инструментам виджетов нативного кода.

5. Не совсем кроссплатформенный

По умолчанию приложения Electron не работают автоматически на всех платформах. В частности, нативные зависимости могут быть построены только на их собственных платформах. Поэтому вам, вероятно, все равно понадобятся разные сборки для каждой платформы, каждая со своими зависимостями и конвейером CI.

6. Поддержка дельта-обновлений

Каждое обновление вашего приложения обычно требует загрузки, удаления и переустановки Chromium, Node и всех зависимостей. Хотя поддержка улучшена только для обновления того, что изменилось (дельта-обновления), обеспечение быстрых автоматических обновлений было проблемой для разработчиков Electron. Более того, использование Squirrel для управления обновлениями было камнем преткновения в сообществе. Альтернативный проект под названием electronic-builder заменяет Squirrel другим подходом к обновлениям. Это выходит за рамки данной статьи, но заслуживает внимания.

7. Защита кода

Как правило, приложения Electron поставляются в виде файлов-контейнеров asar. Таким образом, увидеть исходный код приложения так же просто, как: «asar извлечь app.asar secret_source_code». Для компаний, которые хотят защитить свой код как интеллектуальную собственность, отсутствие шифрования беспокоит. Команда Electron отказалась работать над этим вопросом. Они говорят, что задача внедрения и обслуживания системы защиты кода слишком высока.

Объяснение восхождения Электрона

Electron упрощает кроссплатформенную поддержку. Хотя это и не идеальное решение, оно хорошо поддерживается, документируется и поддерживается. Если перечисленные выше недостатки не являются препятствием для вашего проекта, Electron может отлично подойти для быстрого написания и развертывания кроссплатформенного нативного приложения.

Об Интертех

Компания Intertech, основанная в 1991 году, предоставляет технологии обучения и консалтинга по разработке программного обеспечения для компаний из списка Fortune 500, государственных и ведущих технологических учреждений. Узнай больше о нас. Независимо от того, являетесь ли вы разработчиком, заинтересованным в работе в компании, которая инвестирует в своих сотрудников, или компанией, желающей стать партнером команды технологических лидеров, которые предоставляют решения, наставляют персонал и повышают ценность бизнеса, мы будем рады встретиться с вами.

Первоначально опубликовано в Intertech Blog.