Comments 33
В подобных статьях было бы неплохо привести сразу минимальный пример связывания gui и логики. Хотя бы кнопочку добавьте, по щелчку на которую выводится сообщение.
Согласен, не хватает демонстрации возможностей
Автор молодец, но получилось сильно коротко
Да, вы полностью правы, но это чистейший веб (если не брать нативные функции).Это заблуждение часто ведущее к месиву во взаимодействии main и rendered процессов. Взаимодействие между этим процессами должно быть IPC-based и только. Как можно понять main процесс это совсем не веб, а nodejs-based бэкенд и рассматривать его нужно именно так, как бэкенд доступ к которому из веб процессов происходит через IPC.
Хочется видеть меньше таких статей на Хабре. "Хелло ворлд на технологии X" — статьи такого формата писать легче всего, поэтому ими уже завален весь интернет. При минимальной заинтересованности это гуглится на раз. У "попсовых" технологий вроде этого самого электрона ещё и официальная документация внятная — и там это всё уже есть.
Спасибо за отзыв!
(не считая движка Chromium и ограниченности JS)
А что же тогда Electron, как ни использование JS на движке Chromium, дабы
Америки я не открою, нового ничего не скажу. Но у меня вот сейчас запущен Скайп. Для того, чтобы я мог отправлять кому-то текстовые сообщения (ну и окей, звонить голосом, а то и видео), это поделие запустило шесть процессов общим объемом в пол-гига. В свое время классический Скайп отъедал своим единственным процессом (да, такое бывает, некритичные пользовательские программы могли крутиться в одном единственном процессе!) около 50Мб, и это уже считалось неприличным. При этом функционально в Скайпе не поменялось абсолютно ничего.
Та же история, куда ни плюнь, с другим софтом, который палками гонят на электрон. И тут чудесным образом сочетаются несколько факторов:
- 'Создайте систему, которой сможет пользоваться дурак, и только дурак захочет ею пользоваться'©. Это, собственно, про JS. Язык легкий, выразительный, поэтому наклепать на нем что-то условно работоспособное сможет любая домохозяйка задолго до того, как поймет, причем вообще тут алгоритмы и какие-то структуры данных. Так что работать-то оно работает, но далеко неоптимально, как по памяти, так и по ЦП.
- Рендеринг UI через отрисовку DOM в любом случае медленнее и сложнее нативных UI-компонентов системы/оболочек. Снова: медленно и ресурсоемко.
- 100500 процессов и бесконечное число потоков, порождаемых Chromium засоряют память и (не очень заметно, но все же) нагружают ядро ОС лишней работой как по планированию очереди исполнения, так и по переключению контекстов.
Поэтому Electron — это идеальная черная дыра для ЦП и ОЗУ просто by design.
То, что на электроне писать дешевле, делает ему огромный плюс в глазах компаний, и то, что на электроне писать легко делает ему огромный плюс в глазах разрабов. Итого: довольная компания + довольный разраб = дешевое приложение, которое быстро разработали. Хотя, судя по тому же вскоду, постману, не видно, чтобы дешевизна и простота разработки пагубно повлияли на качество приложения и пользовательский опыт эксплуатации этого приложения.
Поэтому на качество и пользовательский опыт эти поделки влияют, увы. Не напрямую, да, но косвенно. А это значит, что пользователи будут уходить не «прям вот ща», а тогда, когда у них будет какой-то выбор. А моменты выбора — они случаются.
Причем подумайте вот еще о чем: хотели бы вы ездить на авто, которое на 100 км кушает 50 литров топлива? Или летать на чугуниевом самолете, каждый взлет которого стоит как годовой бюджет небольшого африканского государства? Не думали ли, например, о том, почему студентов инженерных специальностей мучают сопроматом — ведь можно же как в древние времена навалить кучу камней — тут и ёжику понятно, что ничего не развалится. Маска опять же можно всуе упомянуть, который удумал ракеты переиспользовать.
То есть в то время, как люди решают инженерные задачи, оптимизируя свои решения, в том числе, на минимизацию потребления ресурсов, в IT почему-то считается допустимой (а то и даже похвальной) вот эта бравада с «мало им памяти — пусть купят еще, мое рабочее время дороже». Так давайте сделаем следующий шаг: будем хвастаться тем, что забыли таблицу умножения, или тем, что писаемся в штаны.
И вот почему эти самые «эксперты» считают, что «электрон позволяет относительно быстро вводить штуковины в строй» — большой-большой вопрос. Видимо, сказывается тот факт, что если у тебя в руках микроскоп (единственное IT-related образование — это трехнедельные курсы «как прогать на JS»), то все остальное, соответственно — гвозди.
То есть констатация факта, что большой кусок современного десктопного ПО является весьма дурно пахнущей субстанцией, производимой «специалистами» безгранично низкой квалификации, — это максимализм? Ну, спасибо, что хоть не экстремизм…
Проблема в том, что электрон представляется как некая серебряная пуля. Что, мягко скажем, не совсем так. И писать кросс-платформенные приложения можно очень даже без него. Тот же клиент телеграма на Qt — вполне себе пример.
Что интересно, в комментариях вежливо поинтересовались у автора, а чем Qt хуже — и вот как-то ответа до сих пор нет. Видимо, не так хайпово и интересно.
Разработка на QT дольше, сложнее. Что вы предлагаете, на Cи писать код? На питоне? Ну уж нет. Если Вам удобно, то пожалуйста. В моем случае такой возможности нет. То, что происходит сейчас в коментариях — демогогия ради ждмогогии. Всем и так очевидны минусы электрона в виде поедания ОЗУ, движка хрома, но и плюсы тоже всем очень даже видны: кросплотформенность (опять же с qt это сделать сложнее), простота разработки: найти вебразработчка или воспитать нового гораздо проще и дешевле многих других, так же огромный плюс — гибкость интерфейса. Ни один инструмент не даст вам такой тонкой настройки, не придумали ещё такого же удобного, как HTML и CSS. Ах, вы наверное ещё забыли про встроеннуая в електрон возможность оюнавлять приложения? Этим не каждая программа может похвастаться, а тут все из коробки и ещё множество уникальных возможностей, помогающее разработчикам.
Когда я начинал работу над одним из проектов, тогда Qt+Python был для меня практически яденственным вариантом, но когда я наткнулся на электрон, то понял, что в моем случае это в сотни раз удобнее, проще и быстрее как для команды разработчиков так и для будущих пользователей, которым не будет дела до того сколько ОЗУ жрет это предложению в угоду уникальной функциональности.
Мне кажется, вы просто не в теме. Уже давно есть такая вещь как QML, со встроенной поддержкой js. Если прочитать документацию, то разрабатывать будет куда проще чем под веб. И да, Qt это не си, это си++, причём с практически эталонным ООП и прекрасной документацией.
- Во-первых, декларативных языков для разметки UI сейчас действительно немало. Это и QML, это и XAML (который не только в WPF, но и Xamarin, Avalonia,...), это и XML Layouts для Android. Поэтому говорить на фоне этого, что HTML лучше — немножко странно. Он, в общем-то, такой же (если правильно приготовлен). А вот CSS, простите — эта штука на любителя. При этом, если мы хотим сильно странного, нативные платформы позволяют переходить с декларативного описания интерфейса на императивный. Иногда спасает.
- Во-вторых, ваше сообщение как раз частично подтверждает мою горечь в отношении уровня разработчиков, кому кажется, что Си со всякими питонами — это какой-то ужас-ужас, а фича автообновления — это прям rocket science.
- Ну и напоследок меня прям так и подмывает спросить, про какую «уникальную функциональность» вы говорите уже не первое сообщение. Мне правда интересно, и, может быть, действительно даже нужно. Можно примеры?
new BrowserWindowХорошим тоном было бы здесь явно указать следующий параметры чтобы потом уменьшить шанс стрельнуть себе в ногу (в зависимость от версии электрона эти параметры по умолчанию имеют разные значения):
webPreferences: {
sandbox: true,
contextIsolation: true,
nodeIntegration: false,
enableRemoteModule: false,
},
Зачем? Монструозного Скайпа сьедающего все ресурсы системы вам мало? Почему веб макаки лезут в десктоп в котором ничего не понимают?
И не стоит называть веб разработчиков «макаками» — это не красиво и не уважительно.
Это человек, который ДУМАЕТ перед тем, как что-то сделать, ДУМАЕТ в процессе, и ДУМАЕТ по завершению «а нельзя ли сделать лучше?»
И такие инженеры есть, в том числе, и в веб-разработке.
А вот те, кто, извините, тащат, не задумываясь, 10 строчек со StackOverflow в проект, а потом с чувством выполненного долга идет пить смузи — ну да, веб-макаки, подходящий термин.
Почему же только скайп? MS Teams, Slack, Postman, Amazon Music Player — имя им легион. И все они отличаются как весьма дубовым и неповоротливым UI, так и некислым жором ОЗУ, не предоставляя пользователю, по сути, ничего уникального.
Это человек, который ДУМАЕТ перед тем, как что-то сделать, ДУМАЕТ в процессе, и ДУМАЕТ по завершению «а нельзя ли сделать лучше?»Инженер думает/исследует и потом доводит варианты и риски до руководства, но решение какой вариант выбрать часто принимает не инженер (такова данность).
Не стоит прикрывать начальством собственную некомпетентность.
Я о том, что если погромист делает хрень, потому что «ему начальство сказало», то это не «начальство сказало», а сам погромист по-другому просто не может.
За примерами можно не бегать, возьмем к примеру сворачивание приложения в иконку тулбара и отображение интерактивного дерева файловой системы во всплывающем окне при нажатии ПКМ на свернутую иконку.
Написание графического приложения на Electron JS (начало: Создание окна)