Несколько дней назад у меня была возможность создать простое настольное приложение на работе. Цель состоит в том, чтобы быстро и легко реализовать это. Я мобильный разработчик и использую React Native, поэтому изучать C #, C ++ для создания winform - не лучший способ в данном случае.
Наконец, я обнаружил, что Electron, говоря кратко, Electron помогает вам преобразовать ваше веб-приложение в настольное приложение самым простым способом («Если вы можете создать веб-сайт, вы можете создать и настольное приложение» - electronicjs.org).
Поэтому я решил реализовать свое приложение на ReactJS (поскольку оно похоже на React Native), а затем использовать Electron для распространения его в настольной версии.
Сегодня я попробую проделать то же самое с моим предыдущим веб-чатом:
Ознакомьтесь с моим репо в ветке build-electronic, чтобы узнать подробности в конце статьи.
Демо
Давайте начнем
1. Некоторые отличия при выпуске в настольном режиме
С аутентификацией firebase нам нужен авторизованный домен localhost, которого у нас нет в режиме рабочего стола, поэтому я использую метод signInAnonymously()
вместо signInWithPopup()
и меняю некоторые вещи в файле Login.js, чтобы разрешить пользователю вход с помощью анонимный режим.
Если вы используете response-router-dom для управления навигацией в своем веб-приложении, обратите внимание, что BrowserRouter следует заменить на HashRouter, поскольку вся маршрутизация в приложении Electron больше не обрабатывается на стороне сервера.
2. Установите необходимые пакеты и настройте файл package.json
Сначала запустите эту команду, чтобы установить зависимости
npm i electron-is-dev
electronic-is-dev позволяет узнать, в какой среде работает.
Во-вторых, запустите эту команду, чтобы установить эти пакеты на devDependencies
npm i -D concurrently electron electron-builder wait-on cross-env
одновременно и ожидание: принудительно дождаться запуска сервера, затем открыть окно Electron.
electronics-builder: распространяет приложение Electron.
В-третьих, только для Windows - установите эти пакеты, чтобы исправить ошибку при выпуске сборки с firebase (перезагрузите компьютер, чтобы вступили в силу).
npm --add-python-to-path='true' --debug install --global windows-build-tools npm install grpc --build-from-source
Наконец, такие скрипты в package.json
Использование cross-env BROWSER=none npm start
вместо BROWSER=none&&npm start
в качестве других инструкций, поскольку команда SET не найдена в macOS.
main указывает на файл конфигурации Electron.
домашняя страница устанавливает домашнюю страницу пакета, в противном случае упакованное приложение не найдет файлы .js и .css.
electronics-dev, если вы хотите запустить окно Electron в режиме разработки.
electronics-pack соберет релиз приложения Electron, пакет будет создан в rootProject / dist. Он создает релиз вашей реактивной сети, а затем использует электронный конструктор для распространения электронного приложения.
3. Config Electron
Создайте файл с именем electronics.js и поместите в общедоступную папку.
В режиме разработки код довольно простой, он создает окно и загружает контент с http: // localhost: 3000. Вот и все.
Теперь, когда вы запускаете свой проект ReactJS (npm start
), после запуска сервера запустите electron .
, чтобы открыть окно Electron и посмотреть, что произойдет (или просто запустите вместо этого команду npm run electron-dev
).
Запустите npm run electron-pack
, чтобы распространить настольное приложение.
По умолчанию сборка для текущей платформы и текущей арки. Используйте флаги CLI --mac
, --win
, --linux
, чтобы указать платформы. И --ia32
, --x64
указать арку.
E.g:
Для текущей платформы:
"electron-pack": "electron-builder -c.extraMetadata.main=build/electron.js -mwl"
Для MacOS, Windows и Linux:
"electron-pack": "electron-builder -c.extraMetadata.main=build/electron.js",
При успешном построении файл помещается в папку dist с файлом .exe для установки, или вы можете запустить его прямо в папке win-unpacked.
И файл .dmg для установки в macOS или в папку Mac и запускается напрямую.
Были сделаны
В этой статье основное внимание уделяется тому, как создать релизное настольное приложение с помощью Electron из существующего проекта ReactJS. Если вы хотите узнать о коде логики, посетите мою предыдущую статью о создании веб-чата с помощью ReactJS.
Исходный код здесь, в ветке build-electronic
Увидимся в следующий раз 👋