LINUX.ORG.RU

Electron ...

 ,


0

2

Тут решил наконец то почитать про сабж. Хотелось больше понять про его технологию и принцип работы.

Раньше я думал так: Есть обычное 3х звенное приложение, БД - серверная часть - клиент браузер. И когда делают електрон приложение то сервеная часть + клиент все заворачивается в одно приложение (тот же браузер внутри). Типа запустил у себя клиент такое приложение и оно напрямую общается с бд. Все серверные js скрипты внутри.

Но вот недавно обсуждали одну прогу на сабже и вроде написали что в этом электрон приложении с сервера на клиент прилетает js. Не понял? Это еще зачем? По сути получается что это таже web-версия и предпочтительнее использовать ее.

К примеру вы юзаейте браузер фирефокс зачем вам еще подгружаемый хром? А если чел юзает хромиум, то подумаешь, одной вкладкой (в фоне больше).

И вообще я думал что такое было только на заре електрона, а сейчас оно при сборке внутрь себя пихает штатный для ос WebView for Gtk4, Microsoft Edge WebView2 ну и т.д.

★★★★★

Последнее исправление: mx__ (всего исправлений: 1)

это таже web-версия

Суть. И безотносительно абсурдности ситуации, разрабам так удобнее – они и уэб-сервис предлагают, и приложение без особых усилий.

apt_install_lrzsz ★★★
()

Так как ты говоришь тоже можно, если запихать серверную часть на ноде в тот же пакет. Тогда приложение может работать оффлайн. Пример: vs code. У electron больше возможностей по интеграции в систему. Например файловый i/o, добавление значков в область уведомлений при работе в фоне, реакция на какие-то системные события

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от firkax

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

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

Это не делает его серверной частью. Если например это какой-нить мессенджер то сколько бы он сокетов там ни открывал, он всё равно остаётся клиентом. А сервер - у владельцев мессенджера.

То есть, конечно, при желании можно и веб-сервер внутрь электрона засунуть и открыть его порт хоть в инет, но это не то для чего его разработали. Он для замены «страницы в браузере» на якобы отдельную прогу.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

И вообще я думал что такое было только на заре електрона

Нет. Как был УГ, так и остался. Нормальный «электрон» сегодня - это Tauri. Там как раз всё по человечески сделано, используется штатное веб-окружение, а не к каждому приложению свой экземпляр Хромиума.

th3m3 ★★★★★
()
Ответ на: комментарий от firkax

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

static_lab ★★★★★
()
Ответ на: комментарий от firkax

Когда обсуждали недавно мессенджер меня смутил один факт.

Один чел. написал что он в электроне получает с сервера js (не json). Я вот не совсем понимаю, разве их клиент на qt тоже js получает?

mx__ ★★★★★
() автор топика
Ответ на: комментарий от th3m3

Интересно, вот был же skype и говорили что от MS он был на електроне, они что тоже чтоли внутри юзали обрубок хромиума а не свой edge webview? И он с сервером общался с помощью js?

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

в qt можно писать на c++ и qml. qml схожим образом с электрон работает в том плане, что есть какой-то api для отрисовки и есть js (qml - его диалект) для написания сценариев для этого. а касаемо электрона, то в хроме давно строчек кода больше чем в линуксе и в плане отрисовки любых хотелок дизайнеров у браузеоа нет конкурентов + кроссплатформенность и 100% +/- одинаковый вид везде. электроно-ненавистники они как бабки-сраки с их ненужным никому мнением. тут рынок порешал. невыгодно конторе брать на работу windows- программиста, linux-программиста и mac- программиста. вроде как qt частично решал проблему с кросс-платформенностью, но оно все равно везде выглядело по-разному… тогда добавили qml… но он все равно по сравнению с электроном выглядит как говно.

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от mx__

Если про Мессенджер MAX официально пришел в Linux: выпущен нативный клиент (комментарий) то там чел криво написал, никаких js электрон с сервера не получает, а просто открывает страницу веб-версии, всё нужное страница скачивает сама. В самом приложении электрона никакой бизнес логики нету, оно только иконку в трее создаёт, протокол max регистрирует и проверяет не нужно ли обновиться.

Не знаю как на qt реализовано, но если оно используется в качестве электрона и тоже просто в вебвью открывает ту же страницу, то и получает он всё то же самое. Кстати вроде QtWebEngine тоже хромиум использует.

anonymous
()
Ответ на: комментарий от mx__

Да, мелкомягкие убили нормальный p2p Skype. Сделали всё только через свои сервера. И да, натянули его на электрон. Тогда для меня skype и умер. Как видим, теперь совсем похоронили. Мелкомягкие только всё портят и электрон.

th3m3 ★★★★★
()
Ответ на: комментарий от anonymous

https://github.com/Vencord/Vesktop/tree/main/src

вот изучай пример клиента для дискорда. там-то есть окно браузера, которое отображает статику и выполняет js, которые грузятся прямиком с диска без запуска локального веб-сервера. это как «прогрессивные» приложения в windows-8.

rtxtxtrx ★★★
()
Ответ на: комментарий от firkax

там две части:

  • нодовская
  • браузерная

они взаимодействуют через api специальный. в той браузерной части есть объект window.Electron.

в самом хромиуме для небольшого количества избранных сайтов (от гугла) разрешена работа с локальной файловой системой. например, https://vscode.dev.

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 2)
Ответ на: комментарий от rtxtxtrx

Ты о чём вообще? Естественно в электрон можно запихнуть что угодно, хоть работающее вообще без сети. Я писал про конкретный случай MAX. Там весь код самого приложения электрона сотня строк. А сам месенджер работает с web.max.ru https://ibb.co/0jnr7HNg

anonymous
()
Ответ на: комментарий от anonymous

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

rtxtxtrx ★★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 3)

К примеру вы юзаейте браузер фирефокс зачем вам еще подгружаемый хром? А если чел юзает хромиум, то подумаешь, одной вкладкой (в фоне больше).

Казалось бы требование установки для каждого приложения ещё и отдельного браузера для GUI - совершенно избыточное. Однако для тех, кого предельно задолбали конфликты версий, это вовсе не выглядит смешным. В папке программы должны присутствовать абсолютно все необходимые для её работы компоненты, которые заведомо не конфликтуют друг с другом.

geometer
()
Ответ на: комментарий от anonymous

а просто открывает страницу веб-версии, всё нужное страница скачивает сама

Страница может много чего скачать. И если это браузер то еще и исполнить если это js.

Вот к примеру есть irc сервер, к нему есть irc клиент. По протоколу гоняют данные а не скрипты. Делают web клиент к irc. И тут хлоп делают electron приложение которое цепляеться не к irc серверу а к (почти) к web-irc клиенту (ну какой то его части), который уже дальше будет цепляться к irc серверу.

Какой бред.

Разве электрон приложение клиент не должно цепляться сразу к irc серверу?

Я по сути это и спрашивал в примере с sql.

mx__ ★★★★★
() автор топика
Ответ на: комментарий от static_lab

То что ты пишешь не особо осмысленно. Клиент-серверное приложение по своей сути завязано на то, что база удалённая и клиент от неё старательно изолирован (а если он таки сможет к ней подключиться - это будет уязвимость). И реализация клиента (в браузере, в электроне или нормальная нативная прога) тут никакой роли не играет - ей даётся только сетевое апи огороженного сервера и не более того.

Если такой удалённый сервер отсутствует, то весь смысл клиент-серверности пропадает, это просто локальная прога с доступом к файлам итд. Называть какую-то часть этой локальной проги сервером странно, и если так кто-то и делает то скорее всего с подачи малограмотных макак.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

По этому я и хотел выяснить. Если с этого сервера гоняется только js то по сути это штука даже на QML не особо отличается от того же веб клиента. Ну будет жрать меньше рама, цпу и т.д.

И в этом случае так называемое електрон приложение тоже ерунда. Сейчас браузеры тоже лепят уведомление на ДЕ.

А вот если протокол подрузумевает свой какой то обмен данными, не скриптами. То в данном случае элекрон приложение не до деланное.

И вообще мне как то страшно за электрон приложения становится. Это по сути получается тот же браузер, которые будет принимать с сервера любые js и исполнять их во встроенном браузере да еще иметь доступ к ф.с.

С этой точки зрения лучше уж просто обычный браузер т.е. веб приложение это будет в разы безопаснее.

Я хз как там виновс, но у нас есть для браузеров флатпак.

mx__ ★★★★★
() автор топика
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от static_lab

Ну да, одно когда серверную часть для веб клиента запихивают в электрон.

Другое когда сам електрон цепляется к веб серверу а не серверу самого протокола.

mx__ ★★★★★
() автор топика
Ответ на: комментарий от mx__

Так и в нативных мобильных приложениях могут встречаться веб-фреймы. В электрон-приложении тоже может быть что-то подобное: веб-фрейм для UI, интегрирующийся с оболочкой, которая даёт нативные возможности. Скайп тоже могли так делать, у него же и веб-версия была.

static_lab ★★★★★
()
Ответ на: комментарий от mx__

А вот если протокол подрузумевает свой какой то обмен данными, не скриптами.

Это никак не связано с электроном/не-электроном. Можно и на js хоть двоичный протокол обмена данными реализовать, а можно написать прогу на Си, которая будет скачивать с сервера и запускать какие-то скрипты (собственно, браузер и есть такая прога).

С этой точки зрения лучше уж просто обычный браузер т.е. веб приложение это будет в разы безопаснее.

Ну тут уж вопрос насколько ты готов ради удобства дать этой проге разные доступы. Если никакие не хочешь то браузер однозначно лучше. Если хочешь ей доступ к чему-то вне js-песочницы и вебных апи - то браузер туда не пустит, а электрон может.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Это никак не связано с электроном/не-электроном. Можно и на js хоть двоичный протокол обмена данными реализовать, а можно написать прогу на Си, которая будет скачивать с сервера и запускать какие-то скрипты (собственно, браузер и есть такая прога).

Ну вот я и хочу понять, в том мессенжере все таки нормальный клиент на электроне или все таки просто веб-клиент который завернут под электрон. Я не верю что в протоколе клиент-сервер у того мессенджера заложено пуляние js скриптами.

mx__ ★★★★★
() автор топика