
Electron и Tauri са две популярни платформи за разработка на настолни приложения с уеб технологии. И двете позволяват на разработчиците да използват HTML, CSS, JavaScript и съвременни фронтенд рамки, за да създават приложения за macOS, Windows и Linux. Те обаче използват коренно различни подходи към изпълнението на тези приложения.
Electron включва Chromium и Node.js във всяко приложение, като осигурява еднакъв браузърен енджин и среда за изпълнение във всички операционни системи. Tauri използва по-лек подход: съществуващия компонент webview на операционната система заедно с бекенд, базиран на Rust. Тази архитектурна разлика влияе върху размера на приложението, използването на памет, производителността, сигурността, съвместимостта и продуктивността на разработчиците.
Tauri често се представя като по-модерна и лека алтернатива на Electron. Макар да има реални предимства, особено по отношение на размера на приложенията и потреблението на ресурси, Electron остава добър избор за много видове настолен софтуер. Широко използвани приложения като Visual Studio Code, Slack, Discord, Notion и Figma използват Electron. В WebCatalog също избрахме Electron като основа за нашите настолни приложения за различни платформи.
И така, коя платформа за разработка да изберете? По-полезно е да разберете компромисите, отколкото да обявите едната за победител.
Electron срещу Tauri накратко
Преди да разгледаме техническите разлики, ето как се сравняват двете платформи по важни характеристики.
| Характеристика | Electron | Tauri |
|---|---|---|
| Браузърен енджин | Включен Chromium | Системен webview |
| Бекенд | Node.js | Rust |
| Размер на приложението | Обикновено по-голям | Обикновено по-малък |
| Базово използване на памет | Обикновено по-високо | Обикновено по-ниско |
| Еднакво поведение между платформите | Високо | Варира според платформата |
| JavaScript екосистема | Широка поддръжка на Node.js | JavaScript за фронтенда, нативни API чрез приставки и команди |
| Модел за сигурност | Изолирана среда на Chromium, изолация на контекста, IPC | Бекенд на Rust, система от разрешения за достъп, IPC |
| Настолни платформи | macOS, Windows, Linux | macOS, Windows, Linux |
| Поддръжка на мобилни платформи | Няма официална поддръжка | Android и iOS |
| Най-подходяща за | Сложни настолни приложения, зависещи от Chromium | Леки приложения и помощни програми с нативна интеграция |
Тези разлики произтичат основно от едно архитектурно решение: дали браузърният енджин да бъде включен в приложението, или да се разчита на предоставения от операционната система.
Архитектура: включен Chromium срещу системни компоненти webview
Най-голямата разлика между Electron и Tauri е начинът, по който визуализират уеб съдържание. Electron включва собствен енджин Chromium, което означава, че приложенията използват по същество една и съща браузърна технология в macOS, Windows и Linux. Разработчиците могат да разчитат на конкретна версия на Chromium и поддържаните от нея уеб API, независимо коя операционна система са инсталирали потребителите.
Tauri, от своя страна, използва компонента webview, предоставен от всяка операционна система. Това значително намалява количеството софтуер, което трябва да бъде включено в приложението, но означава също, че едно и също приложение може да работи с различни браузърни енджини в зависимост от платформата.
| Платформа | Electron | Tauri |
|---|---|---|
| macOS | Chromium | WKWebView (WebKit) |
| Windows | Chromium | WebView2 (Chromium) |
| Linux | Chromium | WebKitGTK |
| Android | Не се поддържа официално | Android WebView |
| iOS | Не се поддържа официално | WKWebView |
При приложения с прости интерфейси тези разлики може да имат малко практическо значение. Повечето съвременни фронтенд рамки работят добре както с Chromium, така и с WebKit. Приложенията, които разчитат на конкретни браузърни API, сложно поведение при визуализация или разширени уеб възможности, обаче може да срещнат проблеми със съвместимостта.
С Electron разработчиците могат да тестват с известна версия на Chromium и да разпространяват същата версия до потребителите. С Tauri трябва да отчитат разликите между браузърните енджини и потенциално различните версии на системните компоненти webview. Това става особено важно при отстраняване на проблеми, които възникват само в определени операционни системи или Linux дистрибуции.
Нито един от двата подхода не е по-добър по принцип. Tauri намалява дублирането, като използва софтуера, който вече е инсталиран на компютъра, докато Electron приема по-голям размер на приложението в замяна на по-голям контрол и еднакво поведение.
Размер на приложението, използване на памет и производителност
Едно от най-ясните предимства на Tauri е размерът на приложението. Тъй като Electron включва Chromium и Node.js, дори сравнително прости приложения с Electron могат да заемат стотици мегабайти дисково пространство. Приложенията с Tauri могат да бъдат значително по-малки, защото разчитат на системния webview, вместо да включват цял браузърен енджин в пакета на приложението.
Tauri може да има и по-ниско базово потребление на памет, особено при леки приложения с минимална фонова обработка. Неговият бекенд на Rust е ефективен и не изисква отделна браузърна среда за изпълнение, включена в приложението. За малки помощни програми, инструменти за водене на бележки и приложения със сравнително прости интерфейси тези предимства могат да бъдат значителни.
По-малките приложения обаче не са непременно по-бързи. И Electron, и Tauri в крайна сметка използват браузърни енджини, за да визуализират интерфейсите си, а производителността на фронтенда продължава да зависи до голяма степен от кода на приложението. Неефективен React компонент, ресурсоемка JavaScript операция или изтичане на памет ще останат проблем независимо от използваната платформа за разработка.
Съществува и важна разлика между размера на приложението и общото потребление на ресурси. Tauri не премахва браузърния енджин — просто използва такъв, предоставен от операционната система. В Windows това означава да се разчита на WebView2, който обикновено е наличен в съвременните инсталации на Windows. В macOS и Linux това означава да се разчита на съответните им реализации на WebKit.
За смислено сравнение на производителността разработчиците трябва да измерват:
- Размер на приложението: Размерът за изтегляне и използваното дисково пространство след инсталиране.
- Време за стартиране: Колко бързо приложението става готово за взаимодействие.
- Използване на памет в покой: Потреблението на памет, когато приложението е отворено, но неактивно.
- Използване на памет и процесор при работа: Потреблението на ресурси при реалистични натоварвания.
- Отзивчивост: Производителността на визуализацията и забавянето при взаимодействията с потребителя.
Резултатите ще зависят от приложението. Tauri често има предимство при леките приложения, докато еднаквата среда на Chromium в Electron може да улесни тестването и оптимизирането на сложни приложения за различни платформи.
Работа на разработчиците и сигурност
Electron има значително предимство за екипи, които вече имат опит с JavaScript и TypeScript. Интеграцията му с Node.js осигурява достъп до зряла екосистема от библиотеки за операции с файловата система, работа с мрежи, бази данни, фонови процеси и функции на операционната система. Разработчиците могат да създават сложни настолни приложения, без непременно да добавят друг програмен език към технологичния си стек.
Tauri използва Rust за нативния си бекенд, което осигурява отлична производителност, безопасност на паметта и силни гаранции при компилиране. Разработчиците все така могат да изграждат интерфейсите си с React, Vue, Svelte или други JavaScript рамки, а Tauri предоставя приставки и JavaScript API за много често използвани нативни операции.
Реализирането на функционалност извън тези API обаче може да изисква писане на Rust или код, специфичен за платформата. За екипи, които вече работят уверено с Rust, това може да бъде предимство. За екипи, работещи основно с TypeScript, може да създаде допълнителна сложност.
Сигурността е друга област, в която двете платформи прилагат различни подходи. Tauri предоставя система за разрешения, базирана на възможности за достъп, предназначена да ограничава до кои нативни операции има достъп кодът на фронтенда. Electron предоставя изолирана среда на Chromium, изолация на контекста и механизми за ограничаване на достъпа до Node.js и други привилегировани API.
И двете платформи могат да бъдат основа за сигурни приложения, когато са конфигурирани правилно, и двете могат да изложат потребителите на уязвимости, когато разработчиците предоставят прекомерни разрешения или обработват небезопасно недоверено съдържание.
Една важна разлика е свързана с актуализациите за сигурност. Разработчиците, използващи Electron, са отговорни за актуализирането на включената среда за изпълнение на Chromium и за разпространението на нови версии на приложенията, когато станат налични корекции за сигурност. Tauri обикновено разчита на актуализации от операционната система или доставчика на webview за корекциите по сигурността на браузърния енджин. Това намалява част от отговорностите по поддръжката за разработчиците на приложения, макар че наличността на актуализациите зависи от операционната система на потребителя и инсталирания webview.
В крайна сметка сигурността зависи повече от начина, по който е проектирано и поддържано едно приложение, отколкото от платформата за разработка, която използва. Изборът на Tauri не прави приложението автоматично сигурно, точно както изборът на Electron не го прави автоматично несигурно.
Защо големите компании продължават да използват Electron
Въпреки честите критики към размера на приложенията и потреблението на ресурси, Electron остава популярен избор за големи софтуерни продукти. Някои от най-широко използваните настолни приложения са създадени с Electron, което показва, че архитектурата му може да поддържа сложен софтуер, използван от милиони хора.
Примерите включват:
| Компания | Приложение |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| Signal | Signal Desktop |
| GitHub | GitHub Desktop |
| OpenAI | ChatGPT Desktop |
Тези приложения служат за много различни цели — от разработка на софтуер и комуникация до дизайн и продуктивност. Общото между тях е необходимостта да предоставят богата функционалност на настолен компютър, като същевременно се възползват от уеб технологиите.
Electron предлага зряла екосистема, еднаква среда за изпълнение на Chromium и възможност за съчетаване на уеб интерфейси с нативни функции на операционната система. Широкото му разпространение означава също, че разработчиците могат да се възползват от документация, библиотеки с отворен код, инструменти за отстраняване на грешки и решения на често срещани проблеми, натрупвани с години.
За големите приложения продуктивността при разработката и лесната поддръжка могат да бъдат по-важни от свеждането на размера на инсталационния пакет до минимум. Допълнителни сто мегабайта дисково пространство може да са приемлив компромис, ако намаляват сложността при разработката за различни платформи и улесняват поддръжката на приложението.
Това не означава, че Electron винаги е правилният избор, нито че всяка компания го е избрала по едни и същи причини. Продължаващото му използване в големи приложения в реална експлоатация обаче показва, че Electron остава практична и утвърдена възможност, а не остаряла технология, която разработчиците трябва автоматично да заменят.
Можете да разгледате още примери в официалната галерия с приложения на Electron.
Защо избираме Electron в WebCatalog
В WebCatalog използваме Electron за създаване на настолни приложения за различни платформи и смятаме, че той остава правилната платформа за разработка за нашите конкретни изисквания.
WebCatalog позволява на потребителите да превръщат уебсайтове в настолни приложения, да поддържат независимо активни сесии в няколко акаунта и да организират приложенията си в macOS, Windows и Linux. За разлика от обикновено настолно приложение, при което разработчиците контролират фронтенда и могат да го оптимизират за конкретна среда, ние трябва да поддържаме голямо разнообразие от уебсайтове, върху които нямаме контрол.
Тези уебсайтове може да използват различни системи за удостоверяване, механизми за съхранение, мултимедийни функции, браузърни API и JavaScript рамки. Уебсайт, който работи правилно в Chromium, може да се държи различно в WebKit, а поддържането на съвместимост с множество браузърни енджини би създало допълнителни инженерни предизвикателства.
Еднаквата среда за изпълнение на Chromium в Electron ни помага да избегнем голяма част от тази сложност. Тя ни позволява да осигурим предвидима браузърна среда във всички поддържани настолни платформи, вместо да разчитаме на различни системни компоненти webview.
Electron предоставя и зрели API за управление на браузърни сесии, бисквитки, хранилища, разрешения и навигация. Възможностите му за разделяне на сесиите са особено ценни за WebCatalog, защото позволяват на потребителите да поддържат множество независими сесии за вход в един и същ уебсайт.
Tauri също може да показва отдалечени уебсайтове, а подобна функционалност може да бъде реализирана чрез неговите webview API, приставки или специфични за платформата интеграции. Разликата е, че Electron предоставя по-еднородна основа за приложения, изградени около браузърна функционалност, особено когато трябва да поддържат произволни услуги на трети страни.
Поддръжката на Linux засилва това предимство. Linux дистрибуциите се различават значително по наличните системни библиотеки, настолни среди и версии на софтуера. Включената в Electron среда за изпълнение на Chromium премахва един основен източник на различия, докато приложенията с Tauri трябва да отчитат средата на WebKitGTK, налична във всяка поддържана дистрибуция.
Това еднакво поведение си има цена. Приложенията с Electron са по-големи и разработчиците трябва внимателно да управляват потреблението на ресурси. В WebCatalog непрекъснато търсим начини да намалим тези допълнителни разходи. Например въведохме APFS клонинги, за да намалим използваното дисково пространство от генерираните приложения за Mac, като показахме, че някои от недостатъците на Electron могат да бъдат преодолени, без да се отказваме от платформата.
Решението ни не се основава на убеждението, че Electron е универсално по-добър от Tauri. То се основава на изискванията на нашия продукт. За WebCatalog съвместимостта с уебсайтове, еднаквото поведение в различните операционни системи и зрелите възможности за управление на сесии са по-ценни от минималния размер на приложението.
Къде Tauri има предимство
Въпреки предпочитанието ни към Electron в WebCatalog, има много ситуации, в които Tauri може да бъде по-добрият избор. За леките настолни помощни програми по-малките пакети на приложенията и по-ниското базово потребление на ресурси са убедителни предимства. Приложенията, които показват основно собствения си фронтенд, имат сравнително прости изисквания към нативните функции и не зависят от конкретен браузърен енджин, могат да спечелят значително от архитектурата на Tauri.
Tauri е привлекателен и за разработчици, които предпочитат Rust или искат да споделят нативната логика на приложението между платформите. От Tauri 2 насам платформата официално поддържа Android и iOS в допълнение към настолните операционни системи. Electron, за разлика от него, е предназначен основно за разработка на настолни приложения и не поддържа официално мобилни платформи.
Друг фактор е поддръжката. Еднаквата среда за изпълнение на Electron улеснява тестването за съвместимост, но също така изисква от разработчиците да поддържат и актуализират включените версии на Chromium. Tauri прехвърля по-голяма част от тази отговорност на операционната система, което може да намали усилията за поддръжка на определени приложения. Разработчиците обаче може да трябва да вложат допълнителни усилия в тестване на различни реализации на webview и решаване на проблеми, специфични за платформата.
Общата цена на разработката е по-важна от всеки отделен показател от тест за производителност. Платформа, която пести памет, но изисква значително повече инженерна работа, може да не е най-ефективният избор за даден екип. По същия начин разпространяването на обемиста среда за изпълнение на Chromium за проста помощна програма може да е излишно, когато Tauri може да изпълни същата задача с по-малко ресурси.
Electron срещу Tauri: кое да изберете?
И двете платформи позволяват създаването на настолни приложения за реална експлоатация, но са оптимизирани за различни приоритети.
| Вашият приоритет | По-добра отправна точка | Защо |
|---|---|---|
| Малък размер за изтегляне и инсталиране | Tauri | Използва системния webview |
| Ниско базово потребление на ресурси | Tauri | Лек нативен бекенд |
| Еднаква визуализация във всички настолни платформи | Electron | Включва един и същ енджин Chromium |
| Широка интеграция с Node.js | Electron | Вградена среда за изпълнение на Node.js |
| Нативна функционалност, базирана на Rust | Tauri | Rust е основният език за бекенда |
| Показване на произволни уебсайтове на трети страни | Electron | Предвидима среда на Chromium |
| Сложно управление на браузърни сесии | Electron | Зрели API за сесии и тяхното разделяне |
| Разработка за настолни и мобилни устройства | Tauri | Официална поддръжка на настолни и мобилни платформи |
| Минимално тестване за съвместимост между браузъри | Electron | Един и същ енджин във всички настолни платформи |
Това са общи препоръки, а не абсолютни правила. Electron може да се използва за създаване на ефективни приложения, а Tauri може да бъде основа за сложен софтуер. По-добрият избор зависи от изискванията на продукта и съществуващия опит на екипа.
За екипи, които създават сложни настолни приложения, утвърдената екосистема и доказаният опит на Electron заслужават сериозно внимание. Използването му от Microsoft, Slack, Discord и други големи разработчици на софтуер показва, че платформата може да отговори на високи изисквания в реална експлоатация.
Същевременно Tauri предлага привлекателна алтернатива за проекти, които дават приоритет на по-малки изпълними файлове, по-ниско базово потребление на ресурси, интеграция с Rust или обща разработка за настолни и мобилни устройства.
Заключение
Дебатът за Electron срещу Tauri често се свежда до просто сравнение: Electron е голям, а Tauri е малък. Но по-съществената разлика е между включена, еднаква среда за изпълнение и лека платформа за разработка, която се интегрира с предоставените от системата компоненти webview.
Electron поставя на първо място еднаквото поведение между платформите, интеграцията с JavaScript екосистемата и широкия контрол върху браузърната функционалност. Tauri дава приоритет на по-малки пакети на приложенията, ефективно нативно изпълнение и по-тясна интеграция с компонентите webview на операционната система.
В WebCatalog избрахме Electron, както са направили и много големи софтуерни компании за своите настолни приложения. Ценим зрялата му екосистема, еднаквата среда за изпълнение на Chromium и широката браузърна функционалност. Тези предимства ни помагат да създаваме и поддържаме продукт, който поддържа широк набор от уебсайтове в множество операционни системи.
Това не прави Tauri лош избор. За леки помощни програми или приложения с различни изисквания неговите предимства може да надделеят над тези на Electron.
Най-добрата платформа за разработка не е непременно тази с най-малкия изпълним файл или най-ниското използване на памет. Тя е тази, която позволява на екипа ви да създава, поддържа и подобрява приложението ви най-ефективно.


