Какая альтернатива Electron лучшая? Давайте выясним.

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

스크립트

00:00:00Раньше создание кроссплатформенных настольных приложений означало использование Electron, но сегодня мы
00:00:04избалованы выбором. Чтобы внести ясность, сегодня мы сравним три лучших варианта для
00:00:09создания кроссплатформенных настольных приложений: Tauri, написанный на Rust, ElectroBun от команды Bun
00:00:14и Deno Desktop, новое предложение от Deno. Мы также будем использовать Electron как эталон, и если вы
00:00:20хотите увидеть обзор другого инструмента на этом канале, просто дайте мне знать в комментариях.
00:00:23Мы сравним четыре параметра: размер сборки, скорость запуска, производительность среды выполнения и удобство для разработчиков.
00:00:29Я четыре раза создал одно и то же приложение — инструмент для записи экрана, позволяющий редактировать результаты
00:00:35на временной шкале и экспортировать их в MP4. Я выбрал этот тип приложения, потому что обработка видео
00:00:40может довести подобные инструменты до предела. Конечно, не всё сводится только к производительности.
00:00:44Навыки вашей команды и тип создаваемого продукта также повлияют на выбор
00:00:49фреймворка, но, надеюсь, это даст вам некоторое представление о том, чего ожидать.
00:00:58Давайте быстро перейдем к демонстрации приложения, которое мы создали. Мы запускаем
00:01:03наше приложение, выбираем экран для записи и нажимаем кнопку записи. Теперь мы можем сделать короткую запись
00:01:08экрана. Когда закончим, нажимаем стоп, и появится окно с нашей записью на
00:01:12таймлайне. Мы можем обрезать фрагменты, чтобы удалить лишнее, а затем нажать экспорт для вывода в формате MP4. Приложение
00:01:18на самом деле невероятно простое, но поскольку мы используем несколько API: запись, обработку видео и
00:01:24рендеринг интерфейса, это должно быть неплохим тестом. Первое, что мы проверим — это
00:01:28размер сборки. Помните, что все эти приложения имеют одинаковую функциональность. Electron как эталон весит 323
00:01:35мегабайта, Tauri — всего 57 мегабайт, ElectroBun — 418 мегабайт, а Deno — 111 мегабайт.
00:01:44Все они также содержат встроенный FFmpeg для экспорта в MP4, который сам по себе добавляет 45 мегабайт. А ElectroBun такой
00:01:52большой, потому что мне пришлось поставлять его вместе с Chromium. Я очень старался, но буквально не мог
00:01:56заставить запись экрана работать с нативным системным веб-представлением (webview), особенно запись из JavaScript.
00:02:01Вам нужен API захвата экрана (Screen Capture API) и функция getDisplayMedia. Вы запрашиваете у браузера доступ к экрану,
00:02:06он отдает поток, медиа-рекордер кодирует его — так это делают Electron и Deno. ElectroBun
00:02:12вообще не включает этот API, поэтому единственный способ получить к нему доступ — это добавить Chromium, а это
00:02:17приносит дополнительные 200 мегабайт лишнего веса. API Deno реализовал это, так что код тот же,
00:02:24но без Chromium, поэтому размер сборки Deno составляет около 100 мегабайт, а у ElectroBun
00:02:30ближе к 400. А Rust не нуждался ни в чем из этого, потому что Tauri вообще не записывает через
00:02:35веб-представление. Он делает всё через бэкенд, используя нативный Screen Capture Kit. Это
00:02:40тот же фреймворк macOS, который использует QuickTime, и всё записывается напрямую с бэкенда. Вы передаете
00:02:46ему дисплей, кодек и путь к файлу, и он записывает файл самостоятельно. Веб-представление — это только интерфейс, оно никогда
00:02:52не касается ни одного кадра, и вы бесплатно получаете то, что приходится обрабатывать при сборке на JavaScript.
00:02:56Screen Capture Kit сам смешивает звук с микрофона и системный звук, и создает готовый MP4. Я
00:03:02также оставил FFmpeg внутри приложения Tauri, чтобы мы могли экспортировать в разные форматы, но технически это
00:03:07опционально. Хорошо, теперь мы можем запустить эти приложения, чтобы определить время запуска. Я написал скрипт,
00:03:13который делает это 10 раз, чтобы я мог взять медиану. Electron как эталон показал 273 мс, Tauri
00:03:19фактически показал 311 мс, ElectroBun — 773 мс, а Deno — 242 мс.
00:03:29Сюрпризом для меня стало то, что Tauri не оказался самым быстрым; он лишь немного отстает от Electron, а Deno
00:03:34обошел всех. Предполагалось, что Rust плюс системное веб-представление означают мгновенный
00:03:39запуск, но поскольку движок рендеринга всё равно должен загрузиться, вероятно, это и способствует
00:03:44чуть более медленной скорости запуска. ElectroBun — исключение, почти в три раза медленнее Electron. Он запускает
00:03:50лончер, который запускает Bun, который запускает Chromium — три среды выполнения в цепочке, и это действительно чувствуется.
00:03:56Теперь давайте посмотрим на использование памяти после запуска. Как только приложение заработало, Electron — эталон
00:04:01— составил 128 МБ, Tauri — 109 МБ, ElectroBun — 208 МБ, а Deno — 98
00:04:10МБ. Так что Deno и Tauri практически равны, а ElectroBun — почти вдвое больше всего
00:04:15остального. Для Tauri это совсем не то 10-кратное улучшение, которое подразумевает маркетинг. На диске — да, он намного
00:04:21меньше, но фактический объем потребляемой памяти при работе приложения гораздо ближе к другим
00:04:26инструментам. И одна вещь, на которую стоит обратить внимание, когда вы проводите эти проверки самостоятельно: Tauri использует
00:04:31системное веб-представление, и эти процессы не являются дочерними для вашего приложения. macOS запускает их отдельно, поэтому
00:04:36Мониторинг системы показывает Tauri около 36 МБ, и кажется, что он превосходит Electron в три раза,
00:04:42но это не так. Когда вы складываете все эти процессы вместе, 36 МБ становятся ближе к 109 МБ,
00:04:48что мы и зафиксировали в тесте. Что касается самой записи экрана, я заметил гораздо лучшую
00:04:53производительность приложения Tauri, и это, вероятно, потому, что мы не записываем данные в веб-
00:04:58представлении, а затем не передаем их через мост. Вместо этого всё записывается с помощью нативного SDK, который идет
00:05:04вместе с системой. Если вы хотите приблизиться к записи 60 кадров в секунду, то Rust и Tauri — это
00:05:10то, что нужно. Теперь давайте взглянем на удобство для разработчиков. Из-за различий каждой платформы это простое
00:05:15приложение было совсем не простым в создании. В целом, Electron и Tauri было проще всего
00:05:20реализовать, а вот с Deno и ElectroBun было куча проблем и системных сбоев. В Deno, когда мы
00:05:26начинали запись, а затем скрывали приложение, оно просто закрывалось. Думаю, это из-за того, что
00:05:30когда ни одно окно не остается видимым, Deno предполагает, что работа приложения завершена, и просто завершает
00:05:36весь процесс. Поэтому хакерским обходным решением было просто спрятать окно за пределы экрана.
00:05:41У ElectroBun были все эти проблемы с необходимостью упаковывать Chromium для записи экрана, и по какой-то
00:05:46причине пакет зависит от Three.js и Babylon.js, которые предназначены для 3D-рендеринга, что способствовало
00:05:53раздутому размеру сборки. В общем и целом, лично я бы выбрал Tauri, но если вы действительно не хотите программировать
00:05:58на Rust, то Electron по-прежнему остается зрелой платформой для разработчиков на TypeScript. Deno выглядит нормально, но я думаю,
00:06:04платформе еще нужно время, чтобы созреть. А ElectroBun для меня оказался худшим из всех.
00:06:09Надеюсь, вы сможете составить собственное мнение. Дайте знать, что вы думаете в комментариях, и мы также
00:06:13сделали видео целиком про Deno Desktop, так что если хотите узнать об этом больше, можете нажать на это
00:06:18видео. В остальном, с вами был Уоррен из BetterStack, спасибо за просмотр, увидимся в следующий раз.

핵심 요약

Tauri является наиболее сбалансированным выбором благодаря эффективному использованию нативных системных библиотек и минимальному размеру сборки в 57 МБ, в то время как Electron остается надежным стандартом при отсутствии ограничений по размеру файла.

하이라이트

  • Приложение для записи экрана на базе Electron весит 323 МБ, Tauri — 57 МБ, Deno — 111 МБ, а ElectroBun — 418 МБ.

  • Время холодного запуска составляет 242 мс для Deno, 273 мс для Electron, 311 мс для Tauri и 773 мс для ElectroBun.

  • Потребление оперативной памяти при работе приложения составляет 98 МБ у Deno, 109 МБ у Tauri, 128 МБ у Electron и 208 МБ у ElectroBun.

  • Tauri использует нативный Screen Capture Kit на macOS для захвата экрана, что обеспечивает производительность, близкую к 60 кадрам в секунду.

  • ElectroBun требует включения полноценного Chromium для работы с API захвата экрана, что увеличивает размер сборки на 200 МБ.

  • Разработка на Electron и Tauri демонстрирует наибольшую стабильность, тогда как Deno и ElectroBun сталкиваются с проблемами при управлении жизненным циклом окон.

타임라인

Методология сравнения и функциональность

  • Для тестирования выбрано приложение для записи экрана с функцией редактирования таймлайна и экспорта в MP4.
  • Сравнение включает четыре показателя: размер сборки, скорость запуска, потребление памяти и удобство разработки.

Приложение выполняет запись экрана, обработку видео и рендеринг интерфейса. Выбор данного типа ПО обусловлен высокой нагрузкой на API захвата экрана и систему рендеринга, что позволяет выявить предельные возможности каждой платформы.

Анализ размера сборок

  • Tauri обеспечивает минимальный размер дистрибутива в 57 МБ за счет отсутствия необходимости в поставке браузерного движка.
  • ElectroBun достигает веса 418 МБ из-за принудительного включения Chromium для поддержки Screen Capture API.

Разница в размерах обусловлена подходом к захвату экрана. Tauri обращается к нативному Screen Capture Kit в macOS, тогда как Electron и Deno используют стандартный браузерный API getDisplayMedia, требующий работы Chromium. ElectroBun не имеет встроенной реализации этого API, вынуждая разработчиков упаковывать полноценный браузер.

Производительность: запуск и память

  • Deno лидирует по скорости запуска с результатом 242 мс.
  • Tauri потребляет 109 МБ оперативной памяти, что сопоставимо с другими фреймворками, несмотря на маркетинговые обещания 10-кратной оптимизации.

Скорость запуска Tauri немного уступает Electron из-за необходимости инициализации движка рендеринга. ElectroBun работает в три раза медленнее остальных из-за многоуровневой цепочки запуска: лончер, среда Bun и Chromium. При анализе памяти важно учитывать, что Tauri использует процессы системного веб-представления, которые операционная система учитывает отдельно от основного процесса приложения.

Удобство разработки и итоговые выводы

  • Electron и Tauri предоставляют наиболее зрелую экосистему и стабильные инструменты для реализации функциональности.
  • Deno и ElectroBun демонстрируют критические ошибки в управлении жизненным циклом окон и избыточные зависимости.

При создании приложения Deno требовались хакерские обходные пути, такие как перемещение окна за пределы экрана, чтобы предотвратить завершение процесса при скрытии интерфейса. Tauri рекомендуется для тех, кто готов работать с Rust, в то время как Electron остается оптимальным для TypeScript-разработчиков.

커뮤니티 글

모든 글 보기