Pull to refresh

Comments 33

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

Согласен, не хватает демонстрации возможностей


Автор молодец, но получилось сильно коротко

Спасибо за ваш отзыв!
Это моя первая статья, не знал как сделать лучше. Приму к сведению, что лучше делать более объёмные и информативные статьи!
Да, вы полностью правы, но это чистейший веб (если не брать нативные функции). Если умеете писать сайты — умеете и кнопочку сделать и все, что душе угодно. В будущих статьях расскажу и о логике, и о нативных функциях, если это будет интересно читателям. Спасибо за ваш отзыв!
Да, вы полностью правы, но это чистейший веб (если не брать нативные функции).
Это заблуждение часто ведущее к месиву во взаимодействии main и rendered процессов. Взаимодействие между этим процессами должно быть IPC-based и только. Как можно понять main процесс это совсем не веб, а nodejs-based бэкенд и рассматривать его нужно именно так, как бэкенд доступ к которому из веб процессов происходит через IPC.
Тоже согласен, сам писал недавно приложение на electron, самое интресное, с чем приходилось разбираться это именно взаимодействие с файлом index.js. Так как он является по сути порталом между остальными js скриптами приложения и операционкой.

Хочется видеть меньше таких статей на Хабре. "Хелло ворлд на технологии X" — статьи такого формата писать легче всего, поэтому ими уже завален весь интернет. При минимальной заинтересованности это гуглится на раз. У "попсовых" технологий вроде этого самого электрона ещё и официальная документация внятная — и там это всё уже есть.

Не могу не согласиться с вами. Статей, как вы сказали, «Хелло ворлд на технологии X» и вправду много, но какие то из них устаревают, какие то не видны пользователям и хочется хоть как то привлекать внимание к «технологии Х». И насчет документации вы тоже правы, в самом начале статьи я призвал читателя в первую очередь ознакомиться с подробно написанной и русифицированной официальной документации.
Спасибо за отзыв!
Вот и зачем учить людей плохому? :) И так от этих электроновских поделок спасу никакого нет.
Почему же плохому? Не вижу в этой технологии ничего прямо уж плохого. Да, безусловно минусы есть, как и у любой технологии, но и преимущества тоже есть и для некоторых приложений Electron JS — это практически незаменимая вещь. Буду рад выслушать конструктивные претензии к технологии (не считая движка Chromium и ограниченности JS)
(не считая движка Chromium и ограниченности JS)

А что же тогда Electron, как ни использование JS на движке Chromium, дабы натянуть сову на глобус писать десктопные софтины?

Америки я не открою, нового ничего не скажу. Но у меня вот сейчас запущен Скайп. Для того, чтобы я мог отправлять кому-то текстовые сообщения (ну и окей, звонить голосом, а то и видео), это поделие запустило шесть процессов общим объемом в пол-гига. В свое время классический Скайп отъедал своим единственным процессом (да, такое бывает, некритичные пользовательские программы могли крутиться в одном единственном процессе!) около 50Мб, и это уже считалось неприличным. При этом функционально в Скайпе не поменялось абсолютно ничего.

Та же история, куда ни плюнь, с другим софтом, который палками гонят на электрон. И тут чудесным образом сочетаются несколько факторов:
  • 'Создайте систему, которой сможет пользоваться дурак, и только дурак захочет ею пользоваться'©. Это, собственно, про JS. Язык легкий, выразительный, поэтому наклепать на нем что-то условно работоспособное сможет любая домохозяйка задолго до того, как поймет, причем вообще тут алгоритмы и какие-то структуры данных. Так что работать-то оно работает, но далеко неоптимально, как по памяти, так и по ЦП.
  • Рендеринг UI через отрисовку DOM в любом случае медленнее и сложнее нативных UI-компонентов системы/оболочек. Снова: медленно и ресурсоемко.
  • 100500 процессов и бесконечное число потоков, порождаемых Chromium засоряют память и (не очень заметно, но все же) нагружают ядро ОС лишней работой как по планированию очереди исполнения, так и по переключению контекстов.

Поэтому Electron — это идеальная черная дыра для ЦП и ОЗУ просто by design.
Я вот не очень понимаю этого всего. Не то чтобы я тут защищал электрон насмерть, но просто мой пользовательский опыт говорит, что когда открыты два VSCode, Postman, хром с 10-15 вкладками, телега и фаерфокс(3 вкладки), я не испытываю вообще никаких трудностей. У меня тачка 2013 года, чуть апнутая, конечно, но это всё ещё ай5, 8гб и 240 ссд. То есть по сегодняшним меркам это супер-обычный ноут для супер-заурядных задач. Ну ещё Минт 20 на корице.

То, что на электроне писать дешевле, делает ему огромный плюс в глазах компаний, и то, что на электроне писать легко делает ему огромный плюс в глазах разрабов. Итого: довольная компания + довольный разраб = дешевое приложение, которое быстро разработали. Хотя, судя по тому же вскоду, постману, не видно, чтобы дешевизна и простота разработки пагубно повлияли на качество приложения и пользовательский опыт эксплуатации этого приложения.
Это ваш пользовательский опыт, и это замечательно. А мой пользовательский опыт говорит немножко другое: со временем доступной оперативной памяти становится все меньше и меньше, и вот уже при 16 гигах ОЗУ отладка проекта начинает тормозить из-за свопа. И когда смотришь в диспетчер задач, что же такое там происходит, тебе оттуда ухмыляется MS Teams, отожравший гиг с лишним. Поэтому, да, в такие моменты разработчикам электрона и разработчикам на электроне хочется пожелать долгой загробной жизни.

Поэтому на качество и пользовательский опыт эти поделки влияют, увы. Не напрямую, да, но косвенно. А это значит, что пользователи будут уходить не «прям вот ща», а тогда, когда у них будет какой-то выбор. А моменты выбора — они случаются.

Причем подумайте вот еще о чем: хотели бы вы ездить на авто, которое на 100 км кушает 50 литров топлива? Или летать на чугуниевом самолете, каждый взлет которого стоит как годовой бюджет небольшого африканского государства? Не думали ли, например, о том, почему студентов инженерных специальностей мучают сопроматом — ведь можно же как в древние времена навалить кучу камней — тут и ёжику понятно, что ничего не развалится. Маска опять же можно всуе упомянуть, который удумал ракеты переиспользовать.

То есть в то время, как люди решают инженерные задачи, оптимизируя свои решения, в том числе, на минимизацию потребления ресурсов, в IT почему-то считается допустимой (а то и даже похвальной) вот эта бравада с «мало им памяти — пусть купят еще, мое рабочее время дороже». Так давайте сделаем следующий шаг: будем хвастаться тем, что забыли таблицу умножения, или тем, что писаемся в штаны.
У бизнеса другое мнение. Электрон позволяет относительно быстро вводить штуковины в строй, и позволяет переиспользовать web/js/nodejs код и библиотеки. А у вас вероятно максимализм проявляется.
Стоп! Бизнес ничего ни про какой электрон не знает. Про него знают «эксперты», с которыми этот самый абстрактный бизнес все-таки как-то советуется.

И вот почему эти самые «эксперты» считают, что «электрон позволяет относительно быстро вводить штуковины в строй» — большой-большой вопрос. Видимо, сказывается тот факт, что если у тебя в руках микроскоп (единственное IT-related образование — это трехнедельные курсы «как прогать на JS»), то все остальное, соответственно — гвозди.

То есть констатация факта, что большой кусок современного десктопного ПО является весьма дурно пахнущей субстанцией, производимой «специалистами» безгранично низкой квалификации, — это максимализм? Ну, спасибо, что хоть не экстремизм…
Не совсем так. Просто чтобы написать приложуху, не важно какую, у которой будет вэб-версия, десктоп и мобилка под иос и андроид, надо, соответственно, нанять, разраба на плюсах под десктоп, чувака на джаву, чувака на свифт, чувака на веб-фронт, бэкэндера. Каждый будет будет стоить 150 в среднем. А можно нанять двух чуваков, которые на жс вообще всё сделают. А то, что у юзера на десктопе будет +250 метров озу уходить… ну, что ж. Я про это говорил, имея ввиду стоимость разработки. Не надо говорить ничего про «веб макак». Расскажите это разрабам вскода или постмана. Да. Это менее производительный способ в техническом плане, но это не крах-ужас-писец. Я тоже за оптимальные решения, но я понимаю, почему выбор падает на электрон или какой-нибудь реакт-натив. Думаю, что все понимают. И эти решения прекрасно работают.
Если пожирающий гиг оперативки мессенджер — это не ужас, то я тогда не знаю, чем вас вообще можно пронять :)

Проблема в том, что электрон представляется как некая серебряная пуля. Что, мягко скажем, не совсем так. И писать кросс-платформенные приложения можно очень даже без него. Тот же клиент телеграма на Qt — вполне себе пример.

Что интересно, в комментариях вежливо поинтересовались у автора, а чем Qt хуже — и вот как-то ответа до сих пор нет. Видимо, не так хайпово и интересно.

Разработка на QT дольше, сложнее. Что вы предлагаете, на Cи писать код? На питоне? Ну уж нет. Если Вам удобно, то пожалуйста. В моем случае такой возможности нет. То, что происходит сейчас в коментариях — демогогия ради ждмогогии. Всем и так очевидны минусы электрона в виде поедания ОЗУ, движка хрома, но и плюсы тоже всем очень даже видны: кросплотформенность (опять же с qt это сделать сложнее), простота разработки: найти вебразработчка или воспитать нового гораздо проще и дешевле многих других, так же огромный плюс — гибкость интерфейса. Ни один инструмент не даст вам такой тонкой настройки, не придумали ещё такого же удобного, как HTML и CSS. Ах, вы наверное ещё забыли про встроеннуая в електрон возможность оюнавлять приложения? Этим не каждая программа может похвастаться, а тут все из коробки и ещё множество уникальных возможностей, помогающее разработчикам.
Когда я начинал работу над одним из проектов, тогда Qt+Python был для меня практически яденственным вариантом, но когда я наткнулся на электрон, то понял, что в моем случае это в сотни раз удобнее, проще и быстрее как для команды разработчиков так и для будущих пользователей, которым не будет дела до того сколько ОЗУ жрет это предложению в угоду уникальной функциональности.

Мне кажется, вы просто не в теме. Уже давно есть такая вещь как QML, со встроенной поддержкой js. Если прочитать документацию, то разрабатывать будет куда проще чем под веб. И да, Qt это не си, это си++, причём с практически эталонным ООП и прекрасной документацией.

вот только если вам потребуется что-то вне функционала хромиума. Те-же winAPI. Придется писать на С++ код и пихать в npm-пакет. В любом случае, все зависит от контекста разработки. Если ваше приложение не должно взаимодействовать с операционкой, но быть красивым и у вас не хватает человеко-ресурсов, то electron спасает наши жопы. Но обычно те, кто занимается планированием приложения еще на стадии ТЗ и найма специалистов, используют те инструменты, которые они уже знают, а не те, которые лучше использовать. Вот так мы обычно и забиваем гвозди микроскопами.
Долго думал, стоит ли что-то отвечать по существу, или действительно скатываемся в толстый обоюдный троллинг. Но чё-т вот в конце решился написать. А тут, глядите-ка, коллеги часть мыслей уже выразили.

  1. Во-первых, декларативных языков для разметки UI сейчас действительно немало. Это и QML, это и XAML (который не только в WPF, но и Xamarin, Avalonia,...), это и XML Layouts для Android. Поэтому говорить на фоне этого, что HTML лучше — немножко странно. Он, в общем-то, такой же (если правильно приготовлен). А вот CSS, простите — эта штука на любителя. При этом, если мы хотим сильно странного, нативные платформы позволяют переходить с декларативного описания интерфейса на императивный. Иногда спасает.
  2. Во-вторых, ваше сообщение как раз частично подтверждает мою горечь в отношении уровня разработчиков, кому кажется, что Си со всякими питонами — это какой-то ужас-ужас, а фича автообновления — это прям rocket science.
  3. Ну и напоследок меня прям так и подмывает спросить, про какую «уникальную функциональность» вы говорите уже не первое сообщение. Мне правда интересно, и, может быть, действительно даже нужно. Можно примеры?
new BrowserWindow
Хорошим тоном было бы здесь явно указать следующий параметры чтобы потом уменьшить шанс стрельнуть себе в ногу (в зависимость от версии электрона эти параметры по умолчанию имеют разные значения):

webPreferences: {
sandbox: true,
contextIsolation: true,
nodeIntegration: false,
enableRemoteModule: false,
},

Зачем? Монструозного Скайпа сьедающего все ресурсы системы вам мало? Почему веб макаки лезут в десктоп в котором ничего не понимают?

Как раз сейчас пишу статью, почему я выбрал именно электрон. Для чего же вы всюду суете свой скайп? Зайдите на официальный сайт в раздел приложений и увидите, что не только скайп написан на электроне. Десятки, сотни программ написаны на электроне. Некоторые из них уникальны в своем роде, некоторыми вы пользуетесь ежедневно.
И не стоит называть веб разработчиков «макаками» — это не красиво и не уважительно.
Разработчик — это тот, кто разрабатывает. Это специалист, инженер.

Это человек, который ДУМАЕТ перед тем, как что-то сделать, ДУМАЕТ в процессе, и ДУМАЕТ по завершению «а нельзя ли сделать лучше?»

И такие инженеры есть, в том числе, и в веб-разработке.
А вот те, кто, извините, тащат, не задумываясь, 10 строчек со StackOverflow в проект, а потом с чувством выполненного долга идет пить смузи — ну да, веб-макаки, подходящий термин.

Почему же только скайп? MS Teams, Slack, Postman, Amazon Music Player — имя им легион. И все они отличаются как весьма дубовым и неповоротливым UI, так и некислым жором ОЗУ, не предоставляя пользователю, по сути, ничего уникального.
Это человек, который ДУМАЕТ перед тем, как что-то сделать, ДУМАЕТ в процессе, и ДУМАЕТ по завершению «а нельзя ли сделать лучше?»
Инженер думает/исследует и потом доводит варианты и риски до руководства, но решение какой вариант выбрать часто принимает не инженер (такова данность).
Инженерные решения принимают инженеры. Точка.
Не стоит прикрывать начальством собственную некомпетентность.
Нуда нуда, уже переходим на личности в виде некомпетентности. Все же пахнет максимальзмом, и похоже уже не ювношеским.
На какие личности, помилуй Ктулху?
Я о том, что если погромист делает хрень, потому что «ему начальство сказало», то это не «начальство сказало», а сам погромист по-другому просто не может.
Еще раз повторю. Инженер анализирует/думает и предоставляет начальству варианты с различными сроками выполнения и различными долгосрочными рисками с технической точки зрения. А начальство выбирает вариант на основе этих данных и бизнес требований по срокам/команде/стратегии/итд. Начальство не говорит как делать в технической части, оно решает какое выбирать направление из предложенных инженерами, и потом отвечает за решение.
Да. При этом если «инженер» кроме JS в глаза ничего не видел, то адекватные варианты он предоставить не сможет.
Не раскрыта суть, зачем вообще нужен electron и чем он отличается от подобной технологии на QT.
За примерами можно не бегать, возьмем к примеру сворачивание приложения в иконку тулбара и отображение интерактивного дерева файловой системы во всплывающем окне при нажатии ПКМ на свернутую иконку.
Sign up to leave a comment.

Articles