Как писать десктопные приложения на React JS | React + Electron
HTML-код
- Опубликовано: 21 сен 2024
- Всем привет, сегодня покажу как разрабатывать десктопные приложения на react-e, как организовать файлы, настроить запуск для режима разработки и продакшина и собрать приложение, а также поговарим о настройке роутинга в react-e при разработке десктопных приложений, так как там есть небольшые отличия от веб-приложений.
Git:
git-scm.com/do...
"Как писать десктопные приложения на JavaScript":
• Как писать десктопные ...
"Как работать с файлами в Electron":
• Работа с файлами в Ele...
#react #desktop #electron #javascript #программирование #уроки #дляначинающих #web #reactjs #electronjs #ateros
Крутой контент, не думал что все так доступно, спасибо!
Спасибо большое 🙏🙏 Очень приятно получать такие комментарии
Спасибо большое, быстро и понятно
Спасибо)
Полезное видео. Хорошая картинка и звук, удачи каналу, автору спасибо!
Спасибо большое, мне очень приятно 🙏🙏🙏
@@AterosDev Собрал проект, но картинки не подключились в режиме Production. Ниже в комментариях видел похожий вопрос, где вы посоветовали использовать переменные окружения через файл process.env. Создал такой файл в папке react-app в корне, вот его содержимое: FOLDER_PATH=build/static/media.
Далее в модуле Header.jsx пробую подключить картинку логотипа: В результате картинка не отображается при запуске React-приложения, из панели разработчика в браузере тэг выглядит следующим образом:
Направьте пожалуйста на путь истинный
Здравствуйте.
Извините, не видел ваш комментариий. Попробуйте изменить FOLDER_PATH на REACT_APP_FOLDER_PATH, и перезагрузить приложение. Плюс, надо будет указать путь в ос начиная с диска - по типу D:/some-folder и т. д.
@@AterosDev а возможно путь указывать универсальный для разных ос? В этом же и есть прелесть разработки с использованием electron, что на выходе мультиплатформенное приложение
Попробуйте подставлять как вы делали, без диска. А потом напишите скрипт, который парсит index.html (тот, что в electron-app/src, после сборки), и меняет href='/...' на href='...' то есть вначале слэш удаляет и перезаписывает навые данные в файл index.html (пакет fs, для работы с файлами). И вызывайте этот скрипт через node перед сборкой - node script.js; npm run make.
Шикарно! то что нужно! Спасибо большое 🤜🤛
Спасибо 🙏 Рад, что вам понравилось)
Не думаю что ты ответишь спустя такое время. Твой ролик пушка, занимаюсь фронтом давно но не знал что могу толком не добавляя новых знаний делать еще и десктопные приложения на js, это просто пушечно.
Подскажи пожалуйста, если все же ответишь, вот есть puppeter на js, меня интересует, как я могу запускать puppeter через интерфейс электрона?
Спасибо, мне очень приятно 🙏 Рад, что вам понравился мой урок.
Загуглите "межпроцессное взаимодействие в electron", надеюсь поможет.
Некстрон очень интересно посмотреть!
всё по делу, лайк
Спасибо)
просто пушка! спасибо большое!
Рад, что вам понравилось) 🙏🙏
Отличный урок! Какие возможности доступны по взаимодействию с операционной системой ?
Спасибо)🙏 Все те же, что и в Node.js
Спасибо!
видос просто имба
Спасибо)
@@AterosDev можешь пожалуйста подсказать как собрать приложение для установки и запуска на линукс?
Вот этот гайд может помочь - www.electronjs.org/ru/docs/latest/development/build-instructions-linux
Привет! Очень классно обьяснил. А как использовать Nodejs команды из реакт компонентов?
Привет. Спасибо 🙏🙏 рад, что вам понравилось)
Для старта подойдет мой урок - "Работа с файлами в Electron JS".
ещё TS и Redux можно накинуть - так. для тренировки )
Возьму на заметку, что вам это интересно 😉
@@AterosDev да, просто сейчас это топчик для фронта. 9 мес. назад курс по react/redux проходил, потом по TS начал и не закончил. Сейчас на интернатуре все эти "пробелы" вылазят боком ) считай для меня сейчас это первая реальная практика. И ни в какое сравнение с курсами не идёт)) долго избегал практики redux & ts, так она сама меня нашла ! Так что, хош не хош - а "джентльменский набор" фронта 2023 - это классический HTML,CSS(+preoroc), JS, Reac, Redux (и не всегда Readyx-toolkit, хоть он и легче) & Typescript + Docker, + понимание файловой структуры.
Сегодня для новичков маловато уметь самому лепить калькулятор или модалку. Вот хорошая практика:
Axios, Auth0, реализация окна регистрации и авторизации с отправкой/получением данных с сервера, приватный и публичный роутинг, доступ к страницам только авторизованным юзерам, валидации пароля/email с помощью регулярок, реализация админ-ролей в приложении (админ может всё), квиз для пользователей, тесты, реализация деплоя на AWS. И это всё на Redux/TS.
Полностью согласен!
Очень хороший roadmap по скилам получился 🔥🔥👍
Если кто-то будет читать этот комментарий и на дворе ещё 2023, а вы хотите стать react разработчиком - берите и подряд учите (и тренеруйте хотя-бы на пет-проектах) все, что написал Greg Dmitriev.
Супер! Огромное спасибо за урок!!! Но у меня есть вопрос: в папке static у меня есть папка media, в которой маркеры и прочие картинки, КАК ЕЁ ПОДКЛЮЧИТЬ???
Панодобятся переменные окружения.
Добавьте файл .env в корневой каталог React-приложения. В файле определите переменную окружения, например:
FOLDER_PATH=путь к папке в ОС //без кавычек
А в самом проекте уже подставляйте, например вот так:
Здесь мануал по переменным окружения в реакте - create-react-app.dev/docs/adding-custom-environment-variables/
@@AterosDev Огромное спасибо за ответ! Но у меня ничего не получилось: ситуация следующая, в проекте react-app я монтирую -- import tab from "../assets/tablechim.png" и далее . После сборки проекта в DevTools вижу картинку по такому адресу - localhost:3000/static/media/tablechim.c5ffbe244d4175740e17.png, тот же самый путь и такое же (изменённое) имя файл получает и после npm run build. Когда я создаю переменные окружения и указываю путь FOLDER_PATH=src/assets/ после сборки проекта картинка не отображается. Вот полный путь к папке, начиная с проекта -- electron-react
eact-app\src\assets. Сломал голову, что я делаю неправильно? Helpppp!!!! Может путь к файлу localhost:3000/static/media/tablechim.c5ffbe244d4175740e17.png можно както прописать в index.js или index.html компонента electron-app ?????
Попробуйте в FOLDER_PATH, прописать путь начиная с диска. Например - D:/путь к папке проекта/src/assets
@@AterosDev Спасибо, всё получилось!!! И ещё один вопрос, если можно: есть ли возможность из под Windows разработать приложение например под Linux?
Рад, что все получилось 🙏👍
Самый простой вариант - установить линукс на виртуальную машину, писать проект на виндовсе, а в виртуалке просто собирать.
ето тема тоже продолжай пжпжпжпж
Спасибо) 🙏🙏
только ты кажется забыл объяснить чем именно не подходит browser router, ведь с ним всё работает точно так же
Здравствуйте.
Это связано с тем, что в продакшене мы будем открывать файл, а не адрес сайта (2:59)
Мне кажется, что nextron js в данном случае лучше.
Да, надо будет и по nextron тоже потом урок сделать
Можна добавить `"homepage": "./",` react-app/src/package.json, чтобы не добавлять точку в index.html каждый раз после билда
Homepage отработает на сервере, где index.html находится в корневом каталоге. Но у нас index.html будет запускаться внутри ос, через протокол file (мы не знаем где точно). Чтобы сделать, так как вы хотите, надо дописать pre-build скрипт в котором переопределять public url, на основе переменной среды где указан точный путь к папке в ос.
Записвай видео как создат приложение для телефона через js пжпжпж
Скоро выйдет урок по созданию небольшого pwa-приложения для телефонов 😉
@@AterosDev 😍😍
Как сделать аналогично npm run make, только что бы на выходе получить .dmg для мак?
Привет. Вот здесь инструкция - www.electronforge.io/config/makers/dmg
@@AterosDev Спасибо за ответ! Уже разобрался с этим. Только есть нюанс, для мак сборку нужно тоже выполнять на маке
Да, конечно. И с линукс и виндовс так же, всегда надо на целевой платформе собирать.
Не за что, обращайтесь если что.
У меня никак не получается, уже по всякому пытался получается просто белый экран у desktop, кто может помочь и как с вами связаться заранее спасибо
@Ateros нужна очень помощь
Здравствуйте.
Извините, что так поздно отвечаю, вы наверное уже нашли решение. Если нет - можете попробовать задать вопрос на stackverflow, возможно кто-то уже сталкивался с таким.
К сожалению пока-что единственный способ связи со мной - этот канал. Многие уже просили телеграм либо что-то такое, но я пока к этому еще не готов, может в будущем что-то придумаю...
Все хорошо, но можно ли запускать реакт и електрон одной командой, ибо неудобно, так еще реакт браузерное окно открывает
Можете попробовать boilerplate - github.com/electron-react-boilerplate/electron-react-boilerplate
@@AterosDev спасибо большое)
Ещё раз пересмотрел Ваш урок, спасибище!!! Но у меня возникла проблема, она заключается в том, что в папке public (по сути это корневой каталог) у меня есть шаблоны, которые подгружаются функцией: вот строка ---- process.env.PUBLIC_URL + `/${props.template}`, // assuming template --- когда я убираю слэш перед ${props.template}, у меня ничего не запускается, а со слешем, не работает... Help me please...
Спасибо) Рад, что вам понравился урок 🙏
Попробуйте перед слэш добавить значение перемонной среды в которой храниться путь к папке public в ос.
@@AterosDev У меня сработало, когда я убрал process.env.PUBLIC_URL и оставил только путь `${props.template}`, спасибо за быстрый ответ, с Вами всегда очень приятно общаться!!!
И вам спасибо, что написали - ваш ответ поможет другим 🙏
@@AterosDev А вот ещё вопрос, как установить свою иконку в приложение. Документация пишет, что "needs to be placed in the buildResources directory (defaults to build). It is important to provide icon.ico (or icon.png), as otherwise the default Electron icon will be used." А вот в нашем случае папки build нет? Просто создать её с картинкой?
Можете посмотреть урывок видео где я показывал, как сделать калькулятор на электроне, там есть про это (перемотайте на 3:19) - ruclips.net/video/230P99N8dLY/видео.htmlsi=MpaN8C91v33iUAUE
Спасибо!