Перейти к содержимому

Electron github что это

  • автор:

Что такое Electron?

Electron — это фреймворк для разработки десктопных приложений с использованием HTML, CSS и JavaScript. В двоичный код Electron уже встроены Chromium и Node.js, и это позволяет вам поддерживать только JavaScript код и создавать кроссплатформенные приложение, которые будут работать как на Windows, так и на macOS и Linux без необходимости иметь собственный опыт разработки.

Начало работы​

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

Эксперименты с Electron Fiddle​

Electron Fiddle — песочница, написанная на Electron и поддерживаемая разработчиками Electron. Мы настоятельно рекомендуем установить его в качестве обучающего инструмента для экспериментов с API-интерфейсами Electron или для создания прототипов функций во время разработки.

Fiddle также прекрасно интегрируется с нашей документацией. При просмотре примеров в наших учебниках вы часто видите кнопку «Открыть в Electron Fiddle» под блоком кода. Если у вас установлен Fiddle эта кнопка откроет , fiddle.electronjs. rg ссылка, которая автоматически загрузит пример в Fiddle, не требуется. fiddle docs/latest/fiddles/quick-start

Что есть в документации?​

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

  • Руководство: Комплексное пособие по созданию и публикации вашего первого приложения Electron.
  • Процессы в Electron: Подробная информация о процессах Electron и о том, как с ними работать.
  • Рекомендации: Важные правила, о которых следует помнить при разработке приложения Electron.
  • Примеры: Краткие руководства по добавлению функций в ваше приложение Electron.
  • Разработка: Различные руководства по разработке.
  • Распространение: Узнайте, как распространять ваше приложение конечным пользователям.
  • Тестирование и отладка: Как отлаживать JavaScript, писать тесты, а также различные инструменты для создания качественных приложений Electron.
  • Ссылки: Полезные ссылки, позволяющие лучше понять, как работает и организован проект Electron.
  • Вклад в проект: Компиляция Electron и участие в разработке могут казаться сложными. В этом разделе мы постараемся облегчить эту задачу.

Получение помощи​

Вы застряли где-нибудь? Вот несколько ссылок для поиска:

  • Если вам нужна помощь в разработке вашего приложения, наше сообщество Discord сервер отличное место для получения советов от других разработчиков приложений Electron.
  • Если вы подозреваете, что вы столкнулись с ошибкой в пакете electron , пожалуйста, проверьте на GitHub issue tracker, чтобы увидеть, соответствуют ли какие-либо проблемы вашей проблеме. Если нет, заполните наш шаблон отчета об ошибке и отправьте новый выпуск.

Требования

Это 1 часть руководства по Electron.

  1. Требования
  2. Создание Вашего первого приложения
  3. Использование скриптов предварительной загрузки
  4. Добавление возможностей
  5. Упаковка приложения
  6. Публикация и Обновление

Electron — это фреймворк для разработки десктопных приложений с использованием HTML, CSS и JavaScript. Встраивая Chromium и Node.js в свой исполняемый файл, Electron позволяет создавать кросс-платформенные приложения для Windows, macOS и Linux используя единую кодовую базу JavaScript.

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

Цели​

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

Если вы предпочитаете создавать проект с помощью одной команды, мы рекомендуем начать с команды Electron Forge create-electron-app .

Предпосылки​

Electron является нативной оболочкой для веб-приложений и исполняется в среде Node.js. Поэтому в данном руководстве предполагается, что вы в общих чертах знакомы с Node и основами front-end веб-разработки. Если вам необходимо получить дополнительную информацию, прежде чем продолжить, мы рекомендуем воспользоваться следующими ресурсами:

  • Новички начинают здесь! (MDN Web Docs)
  • Введение в Node.js

Необходимые инструменты​

Редактор кода​

Вам понадобится текстовый редактор, чтобы писать код. Мы рекомендуем использовать Visual Studio Code, но вы можете выбрать любой из тех, что вы предпочитаете.

Командная строка​

На протяжении руководства мы будем просить вас использовать различные командные интерфейсы (CLI). Эти команды можно вводить в стандартном терминале системы:

  • Windows: Командная строка или PowerShell
  • macOS: Terminal
  • Linux: зависит от дистрибутива (например: GNOME Terminal, Konsole)

Большинство редакторов имеют встроенный терминал, который вы также можете использовать.

Git и GitHub​

Git — это наиболее распространенная система контроля версий исходного кода, а GitHub — платформа для совместной разработки, построенная на ее основе. Хотя ни то, ни другое не является строго необходимым для создания приложения Electron, далее в руководстве, мы будем использовать GitHub releases для настройки автоматических обновлений. Поэтому от вас потребуется:

  • Создать учетную запись GitHub
  • Установить Git

Если вы не знакомы с механизмом работы Git, мы рекомендуем ознакомиться с руководствами GitHub по работе с Git. Также можно воспользоваться приложением GitHub Desktop, если вы предпочитаете использовать графический интерфейс, а не командную строку.

Перед началом обучения мы рекомендуем создать локальный Git-репозиторий и разместить его на GitHub, а также делать commit после каждого шага.

Установка Git через GitHub Desktop

GitHub Desktop установит последнюю версию Git в вашей системе, если у вас он ещё не установлен.

Node.js и npm​

Для начала разработки приложения Electron необходимо установить Node.js и входящий в ее состав менеджер пакетов npm. Мы рекомендуем использовать последнюю версию с длительной поддержкой (LTS).

Пожалуйста, установите Node.js с помощью предварительно собранных установщиков для вашей платформы. В противном случае могут возникнуть проблемы совместимости. Если вы используете macOS, мы рекомендуем воспользоваться менеджером пакетов, например Homebrew или nvm чтобы избежать проблем с правами доступа к каталогам.

Чтобы проверить, что Node.js был установлен правильно, используйте флаг -v при выполнении команд node и npm . В результате должны быть отображены их версии.

$ node -v v16.14.2 $ npm -v 8.7.0 

Хотя для создания проекта Electron необходима установленная локально Node.js, Electron не использует Node.js вашей системы для выполнения своего кода. Вместо этого он поставляется в комплекте с собственной средой выполнения Node.js. Таким образом, конечным пользователям не нужно самостоятельно устанавливать Node.js для запуска вашего приложения.

mrmlnc / electron-api.md

process — это объект, позволяющий получить информацию о типе запущенного процесса (рендеринг или основной процесс), версию Chrome и Electron, а также путь до выполняемого js-файла.

Пользовательские элементы DOM:

Объект File — это абстракция над нативным File, передающая стандартному HTML5 file API путь к физическому расположению файла в файловой системе пользователя.

Функция window.open — создание нового окна на странице (экземпляр BrowserWindow ) и возможность отправки сообщений в родительское (основное) окно.

app — модуль, отвечающий за управление жизненным циклом приложения. Предоставляет доступ к событиям (выход, фокус и т.д.) и методам (имя, версия, док и т.д.), позволяющим управлять приложением.

auto-updater — возможность автоматического обновления приложения. На момент написания статьи доступен только на OS X (на GitHub висит PR для Windows от 15 июня этого года).

browser-window — создание нового окна браузера с заданными параметрами (размер, иконка, заголовок, позиционирование и т.д.). Предоставляет доступ к событиям и методам, позволяющим управлять созданным окном.

content-tracing — модуль, собирает данные трассировки, генерируемые контентным модулем Chromium. Для анализа данных требуется браузер Chrome.

dialog — создание нативных диалоговых окон. Модуль позволяет создавать нативное окно открытия файлов или директорий, сохранения файлов, а также возможность отображать окно сообщения.

global-shortcut — регистрация и сопровождение глобальных сочетаний клавиш, доступных для приложения после его полной загрузки.

ipc (main process) — модуль, обрабатывающий синхронные и асинхронные сообщения, посылаемые из процесса рендеринга (веб-страницы) в главный процесс.

menu — создание нативного меню приложения и контексного меню. Пункты меню создаются с помощью модуля menuItem .

menu-item — позволяет добавлять пункты в контексное меню или меню приложения.

power-monitor — модуль, предоставляющий возможность отслеживать состояние питания системы после полной загрузки приложения, используя несколько событий.

power-save-blocker — включение этого модуля запрещает переход системы в спящий режим, когда запущено окно, на котором подключен этот модуль.

protocol — регистрация собственного протокола или перехват уже существующего. Протокол здесь следует понимать буквально: http, atom, file и т.д.

session — объект, являющийся свойством webContents , который в свою очередь является свойством BrowserWindow . Предоставляет возможность работать с cookies и некоторыми другими методами.

web-contents — одно из свойств BrowserWindow , отвечающее за рендеринг и контроль веб-страницы. Позволяет получать информацию о текущем окне и управлять его содержимым (аудио, копировать, вставить и т.д.).

tray — создание иконки в трее, а также его содержимого (пунктов меню). Есть специальные методы для работы с различными операционными системами, например, доком на OS X.

Модули процесса рендеринга (веб-страница)

ipc (render) — несколько методов, позволяющих отправлять сообщения из процесса рендеринга (веб-страницы) в главный (основной) процесс.

remote — простой способ межпроцессного взаимодействия (IPC) между процессом рендеринга и основным процессом.

web-frame — предоставляет возможность управлять рендеренгом веб-страницы (зум, проверка правописания, приватное окно).

clipboard — предоставляет доступ к буферу обмена и таким операциям, как копирование и вставка.

crash-reporter — модуль позволяет отправлять отчеты о сбоях в работе приложения на удаленный сервер.

native-image — возможность передачи изображений в API, которые требуют наличия изображения (иконки), например, модуль tray или browser-window . Есть поддержка ретины и работы с изображениями в буфере обмена.

screen — предоставление информации о разрешении, дисплеях и положении курсора. Работает только после полной загрузки приложения.

shell — методы для работы с десктопными приложениями. Здесь речь идет об открытии файлов в других приложениях, удалении файлов и т.д.

Введение

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

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

GitHub Electron

Крупнейший банк свободного программного обеспечения GitHub создал свою платформу для контейнерной разработки десктопных приложений с встроенным браузером Google Chrome. На платформе GitHub Electron уже создано много современных приложений, таких как Slack, Mattermost, WordPress, Figma, GitHub Desktop, Skype, Atom.

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

Контейнер Blend4Web приложения

В качестве пользовательского интерфейса Electron приложений работает веб-приложение, запущенное во встроенном браузере Google Chrome. В это веб-приложение можно обычным способом встраивать Blend4Web контейнер для визуализации трехмерных сцен.

NodeJS сервер

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

Пользовательский интерфейс

Все необходимые элементы пользовательского интерфейса в Electron приложениях можно делать с помощью HTML элементов на манер любого веб-сайта. Опыт разработки веб-сайтов прямо применим для разработки красивых и разнообразных интерфейсов. Особо интересным видится практика SPA сайтов на клиентских JavaScript библиотеках рендера веб-страниц.

Сборка приложения

Большое удобство платформы GitHub Electron состоит в возможности собирать один программный проект под разные операционные системы. Главная сборка производится из npm пакетов под Windows, MacOS, Linux. Для формируемого установщика можно дописывать скрипты дополнительных сценариев взаимодействия с пользователем во время установки, например msi скрипты для Windows. Также можно формировать и портативные сборки (portable), не требующие установки на компьютер пользователя для запуска прямо из файловой папки.

Демонстрация

Вывод

С помощью платформы GitHub Electron и Blend4Web можно создавать десктопные программы с трехмерной визуализацией под все популярные операционные системы, используя распространенный опыт веб-разработки.

Разработка кроссплатформенных трехмерных программ с Blend4Web и GitHub Electron — быстро и просто.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *