Как стать автором
Обновить

Комментарии 35

Главный секрет разработки электрон приложений это найти и подобрать достаточное количество костылей, чтобы оно заработало одинаково везде. Взять тот же драг энд дроп файлов из ОС в электрон и обратно, профилируй это не профилируй один черт нормально это под тремя осями не работает.
Уважаемые читатели! Как вы относитесь к приложениям, основанным на Electron?

Skype,… Ну і как можно относится к приложениям, которие лагают на топовом железе?
Да у нас проблема с мультиплатформеним GUI, но костили в виде Electron і других не сильно то помогают.
Наверное нужно создавать что на подобиии NET Только для GUI (GUI STANDART) на основании какойто разметки. И главное добится что б оно работало на всех платформах.
Я слежу за етим проектом, Пока он в стадии альфа-бетта.
Хотя идеи очень интересные. Надеюсь он взлетит. Но пока…
НЛО прилетело и опубликовало эту надпись здесь
Который безбожно выжирает оперативку на моем ноуте.
Chrome c 5-6 закладок + VS Code — гарантированный висяк системы на 4Gb оперативки.
На работе на 8Gb — еще куда ни шло… Но дома — либо интернет либо VS Code.

Справедливости ради, продукты JetBrains потребляют ещё больше ресурсов. Мне в одно время пришлось перейти на VSCode по этой причине.

Так это сравнение редактора с IDE. А вот если сравнить с саблаймом.

Конечно Sublime быстрее и легче, это другой класс ПО, VSCode даёт более продвинутые возможности при работе с JS и TS. Sublime уместно сравнивать с редакторами типа Atom и Notepad++.

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


А в отделе разработки Skype – и так сойдет!

Сам то VS Code еще куда ни шло… Но голый он — простой текстовый редактор с некоторыми доп возможностями (никак не IDE).

Что-то потребное из VS Code получается путем добавления плагинов. И вот с плагинами (мне не так важно кто именно из них) они начинают жрать память как черная дыра.
Но с другой стороны есть VS Code
Который жрет ровно столько же, сколько полноценные среды разработки, но при этом не предоставляет всех их возможностей
Вроде же Skype на React: dev.skype.com/react.
Вы вообще представляете, как работает электрон? Чудо не то, что скайп лагает — чудом было бы, если бы он не лагал.
Надо сказать, что показатель в 239.1 Мб получен мной до проведения каких-либо оптимизаций


У меня тоже есть приложения для личных финансов. Написано на wxWidgets. Жрет аж 10Мб памяти и столько же на диске.
Речь не о том, что это мало для приложения такого рода, а о том, что это мало для Electron приложения. Автор не пытается никого убедить, что Electron это технология без слабых сторон.
Как вы относитесь к приложениям, основанным на Electron?

Зависит от конкретного приложения. Например, VSCode вполне неплох, Slack и Postman начинают иногда тупить на ровном месте, анимации (зачем они вообще) дергаться и т.д. Ну а новый Skype это просто «шедевр» — печатаешь текст, на 5 секунд все фризится, потом отпускает. При этом в эти момент нагрузки нет вообще никакой, а железо такое, что спокойно тащит несколько копий IDEA и Хром с парой десятков вкладок.
Про повышенное потребление памяти писать бессмысленно — это специфика технологии. Правда, когда Slack начинает занимать 1Гб становится страшно…
Главный секрет в том что это должно быть действительно десктопное приложение. То есть приложение предоставляющее дополнительный функционал по сравнению с обычной веб страницей за счет возможности интеграции с операционной системой что недоступно для браузеров (используя Node.js который встроен в Electron) и за счет возможности внедрения в оригинильную веб страницу произвольного кода что дает возможность расширить функционла на десктопе. К сожалению, как правило, это не так.
Написать шустрое приложение на Electron довольно просто. Достаточно всего лишь выкинуть на хрен все фреймворки и всю работу с DOM.
По сути, весь UI должен состоять из одного большого Canvas на всё окно, где уже вручную рендерим всё что нужно.
Если в приложении идёт обработка большого количества мелких элементов данных, то хорошо бы ещё собственный сборщик мусора написать вместо дефолтного.
Правда, если всё это проделать, то неизбежно возникает вопрос: а в чём тогда смысл Electron? Ведь то же самое гораздо проще оказывается сделать при помощи C++/Qt.
Главный секрет разработки хороших Electron-приложений

Не писать никаких Electron-приложений


Как вы относитесь к приложениям, основанным на Electron?

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


Если вы пользовались VSCode, не всё так однозначно, но много ещё таких приложений вы знаете?


Если я вижу, что приложение на Electron, скорее всего я не буду его использовать.

Skype версии 8 сделан на Electron?!
Аплодисменты!
Это их лучшая версия за 10 лет! Без шуток, я не любил скайп до этой версии.
На стареньком Core 2 Duo работает без лагов, хотя старые версии постоянно зависали и делали что-то непонятное.
С аудио оборудованием работает прекрасно! Раньше каждый запуск был мукой с выбором и проверкой гарнитуры :)
Skype версии 8 сделан на Electron?!
Аплодисменты!
Это их лучшая версия за 10 лет! Без шуток, я не любил скайп до этой версии.
Почему бы просто не пользоваться web.skype.com в браузере?
А и такая есть? :)
Не знал… десктоп клиент просто работает без нареканий пока
Видел только потуги сделать web-интерфейс к скайпу на outlook.com, но он не работал.

Проблемы электрон уйдут, когда встроят наконец браузер в ОС, ну или хотя бы пока не сделают единый распространяемый фреймворк включающий хром, тогда не будет этого выжирания памяти каждым приложением, из-за того, что каждый поднимает свой инстанс chrome-окружения. Естественно, если не встраивать .net framework в ОС, а запускать его рантаймом с каждым приложением, то будут те же самые выдирания памяти и большие дистрибутивы.

Надеемся на https://github.com/GoogleChromeLabs/carlo – похожий на Electron проект, который подцепляет Chrome из системы, вместо того чтобы тащить свой.

Зачем встраивать браузер в ОС? Не проще ли просто писать программу под эту ОС? Например, на Qt. И работать оно будет быстрее и прослойку в виде браузера тянуть не надо.
Для программы на QT все равно придется делать отдельную Web версию (если такая требуется), а c Электроном получаем все платформы “одним махом”.
Только работает оно так, что проще использовать веб версию, чем ставить себе ещё один браузер с каждым таким поделием. Я, например, использую веб версию слака вместо его десктоп варианта на электроне. Потому что реально минусов больше чем плюсов. И я с удовольствием пользуюсь десктопным приложением телеграма, потому что оно реально удобнее и функциональнее, чем веб версия. Ощутите разницу, как говорится)
Проблемы не в electron, проблемы в html+DOM+JavaScript. Это худшее, что можно было придумать для UI. Современные фреймворки это отчасти исправляют, но до обычных компонентов типа Borland VCL им по удобству и скорости разработки бесконечно далеко.
Так это и есть основная идея electron — сайт запихнуть в окошко и обозвать приложением. По сути костыль, который незаменим в некоторых ситуациях, но не применим для всех подряд.
Да? Я вижу предложение «теперь разрабатывать десктопные приложения также легко, как и сайты!»
И ладно бы для электрон приложений ionic использовали… А то костылят не по-человечески.
Вы видите то что хотите, но не то что есть в реальности.

Запихнуть сайт в окошко != разработать хорошее полнофункциональное приложение. Это вынужденный костыль.

З.Ы. Да и сделать хороший сайт не так уж и легко, как кажется.
Читая подобные статьи и понимая, что вот это вот все сегодня самая настоящая норма, невольно задаешься вопросом где же мы свернули не туда.

Электрон это рак. Причин лично я вижу несколько.
1. Банально — потребление ресурсов, производительность, объем дистрибутивов.
2. Полное игнорирование всех UX-паттернов на каждой конкретной ОС — у каждого приложения свой дизайн, чаще всего сделанный с нуля.
3. Разработчики под электрон часто вообще не понимают что они делают, потому что большая часть из них приходит из веб-девелопмента, не имеет опыта разработки нативных приложений на десктоп и не знает особенностей конкретных ОС. Приложения задумываются и пишутся как сайты.
4. Постоянное сглаживание углов из-за мнимой унификации всего и вся. Зачем иметь десктоп-кодера, если у нас вот тут есть js-программисты на фронт и бэк, а то и вообще целый мифический фулстэк? Зачем писать что-то нативно, если можно быстро набросать что-то под электрон? Зачем вообще что-то писать, если можно наше веб-приложение с парой небольших костылей выдать за десктопное?
5. Частично следует из всего предыдущего — софт идет по пути упрощения и урезания функционала. Шаг влево или вправо невозможен в принципе.

Разумеется, на электроне пишутся и действительно великолепные приложения, но это капля в море. Типовой софт под электрон представляет из себя здоровенную хрень, занимающую под гиг оперативы, работающую и выглядящую как сайт и имеющую только лишь минимально необходимый функционал.

Но я прекрасно понимаю, что пути назад нет, добро пожаловать в js-мир :)

Как уже выше писали, секрет разработки хороших приложений под Electron — не использовать Electron вообще. Единственный виденный мною вменяемый представитель — VSCode. MS Teams, с которым имею несчастье работать — унылое, неудобное, кастрированное, лагающее и жрущее ресурсы гуано мамонта. Чатик, кушающий 400Мб оперативы в фоне и подгружающий историю сообщений на каждый чих — держать в памяти больше текущей видимой страницы он не способен в принципе.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий