
Electron a Chromium Embedded Framework (CEF) sú dve osvedčené technológie na začlenenie Chromia do desktopových aplikácií. Obe umožňujú vývojárom vytvárať softvér, ktorý zobrazuje moderné webové stránky a webové rozhrania v systémoch macOS, Windows a Linux. Slúžia však na zásadne odlišné účely.
Electron je kompletný framework na tvorbu desktopových aplikácií, ktorý kombinuje Chromium, Node.js a natívne rozhrania API operačného systému. Vývojári môžu vytvárať celé aplikácie pomocou JavaScriptu, TypeScriptu, HTML a CSS bez rozsiahlych skúseností s natívnym programovaním. CEF je naopak framework na vkladanie Chromia do existujúcich alebo nových aplikácií, zvyčajne napísaných v C++ alebo iných natívnych jazykoch.
Obe technológie sa široko používajú v produkčnom softvéri. Na Electrone sú postavené aplikácie ako Visual Studio Code, Slack, Discord a Notion, zatiaľ čo CEF sa používa v produktoch ako Spotify, Steam a OBS Studio. Vo WebCatalog sme si na tvorbu našich multiplatformových desktopových aplikácií vybrali Electron.
Aké sú teda medzi nimi rozdiely a kedy má zmysel použiť jednu namiesto druhej?
Electron vs. CEF v skratke
Hoci Electron aj CEF používajú Chromium, výrazne sa líšia svojou architektúrou, skúsenosťou, ktorú ponúkajú vývojárom, a zamýšľaným využitím.
| Vlastnosť | Electron | Chromium Embedded Framework (CEF) |
|---|---|---|
| Prvé uvedenie | 2013 | 2008 |
| Hlavný účel | Tvorba kompletných desktopových aplikácií | Vkladanie Chromia do iných aplikácií |
| Jadro prehliadača | Chromium | Chromium |
| Hlavné jazyky | JavaScript, TypeScript | C, C++, s väzbami pre ďalšie jazyky od tretích strán |
| Obsahuje Node.js | Áno | Nie |
| Natívna integrácia | Rozhrania API Electronu a natívne moduly Node.js | Priama integrácia s natívnym kódom |
| Štruktúra aplikácie | Hlavný proces a vykresľovacie procesy | Hostiteľská aplikácia s podprocesmi Chromia |
| Vykresľovanie mimo obrazovky | Možné pomocou vlastných riešení | Zabudovaná podpora v API |
| Veľkosť aplikácie | Spravidla veľká | Závisí od integrácie, ale Chromium zaberá značný priestor |
| Výkon | Závisí od aplikácie | Závisí od aplikácie a integrácie |
| Podpora viacerých platforiem | macOS, Windows, Linux | macOS, Windows, Linux |
| Ekosystém nástrojov na tvorbu distribučných balíkov | Electron Forge, electron-builder | Spravidla v réžii hostiteľskej aplikácie |
| Najvhodnejšie použitie | Desktopové aplikácie založené na JavaScripte | Natívne aplikácie vyžadujúce vložený webový obsah |
Najdôležitejším rozdielom je, že Electron poskytuje aplikačný framework, zatiaľ čo CEF poskytuje framework na vkladanie prehliadača. Nie sú nevyhnutne priamymi náhradami, pretože fungujú na rôznych úrovniach abstrakcie.
Architektúra: kompletný framework vs. vložený prehliadač
Electron spája Chromium a Node.js do jednotného prostredia na beh aplikácií. Vývojári vytvárajú hlavný proces, ktorý spravuje okná aplikácie, udalosti životného cyklu a natívne funkcie, zatiaľ čo vykresľovacie procesy sa starajú o webové rozhranie.
Táto architektúra umožňuje vývojárom písať väčšinu aplikácie pomocou známych nástrojov pre JavaScript a TypeScript. Electron poskytuje rozhrania API na vytváranie okien, správu relácií prehliadača, prácu s ponukami, zobrazovanie oznámení, prístup k systémovým dialógovým oknám a integráciu s operačným systémom.
CEF volí iný prístup. Namiesto poskytovania kompletného frameworku na tvorbu desktopových aplikácií umožňuje vývojárom integrovať Chromium do aplikácie, ktorú sami vytvárajú a riadia.
Napríklad vývojár vytvárajúci natívnu aplikáciu v C++ môže použiť CEF na zobrazenie webového obsahu v existujúcom okne aplikácie. Okolité rozhranie, životný cyklus aplikácie, služby na pozadí a ďalšie natívne funkcie zostávajú pod kontrolou vývojára.
CEF poskytuje rozhrania API na správu inštancií prehliadača, navigácie, načítavania zdrojov, vykonávania JavaScriptu a komunikácie medzi prehliadačom a natívnou aplikáciou. Využíva tiež viacprocesovú architektúru Chromia so samostatnými procesmi na vykresľovanie a ďalšie funkcie prehliadača.
Tento rozdiel ovplyvňuje spôsob, akým vývojári štruktúrujú svoje aplikácie. Pri Electrone je aplikácia spravidla postavená na Chromiu a Node.js. Pri CEF je Chromium zvyčajne jedným komponentom vo väčšej aplikácii.
CEF možno použiť aj na tvorbu aplikácií, ktorých rozhrania sú prevažne webové, vývojári však musia sami implementovať väčšiu časť okolitej aplikačnej infraštruktúry.
Zaujímavým historickým detailom je, že skoré verzie Electronu a NW.js používali CEF. Electron napokon prešiel na priamejšiu integráciu s Chromiom, pretože abstrakcia CEF sťažovala implementáciu niektorých funkcií, najmä hlbokej integrácie s Node.js.
Vývojárom, ktorí chcú kompletný framework na tvorbu desktopových aplikácií pomocou webových technológií, Electron spravidla ponúka jednoduchší východiskový bod. Pre vývojárov, ktorí už majú natívnu aplikáciu a chcú pridať webové funkcie, môže byť prirodzenejšou voľbou CEF.
Vývojárska skúsenosť: JavaScript vs. natívny vývoj
Jednou z najväčších výhod Electronu je jeho prístupnosť. Vývojári oboznámení s moderným webovým vývojom môžu využiť svoje existujúce zručnosti na tvorbu desktopových aplikácií bez toho, aby sa museli učiť C++ alebo frameworky používateľského rozhrania špecifické pre jednotlivé platformy.
Integrácia Electronu s Node.js poskytuje prístup k rozsiahlemu ekosystému balíkov na operácie so súborovým systémom, sieťovú komunikáciu, databázy, procesy na pozadí a ďalšie funkcie. Populárne frontendové technológie ako React, Vue, Svelte a Angular možno používať bez výrazných architektonických zmien.
CEF je primárne navrhnutý okolo rozhraní API pre C a C++. Hoci existujú väzby od tretích strán pre jazyky ako C#, Java, Python a Delphi, vývojári stále musia rozumieť architektúre natívnej aplikácie a požiadavkám CEF na procesy, vlákna a životný cyklus.
Pre tím, ktorý už udržiava natívnu aplikáciu, to môže byť skôr výhoda než nevýhoda. CEF umožňuje vývojárom zaviesť moderné webové rozhranie bez prepisovania existujúceho natívneho kódu alebo prijatia úplne nového aplikačného frameworku.
Pre tím zameraný na JavaScript, ktorý začína vytvárať novú desktopovú aplikáciu, však CEF spravidla vyžaduje viac práce s nastavením a natívnou integráciou.
Rozdiel sa týka aj nástrojov. Electron ťaží z osvedčených nástrojov ako Electron Forge a electron-builder, ktoré zjednodušujú tvorbu distribučných balíkov, podpisovanie kódu, distribúciu aplikácií a aktualizácie. CEF poskytuje binárne distribúcie a príklady, no vývojári sú zvyčajne zodpovední za integráciu frameworku do vlastných systémov zostavovania a nasadzovania.
To neznamená, že CEF je menej schopný. Jednoducho to odráža jeho účel ako komponentu určeného na vloženie, nie ako kompletnej platformy na vývoj aplikácií.
Výkon, využitie pamäte a veľkosť aplikácie
Keďže Electron aj CEF používajú Chromium, ani jedna z týchto technológií automaticky neodstraňuje režijné nároky spojené s prevádzkou moderného jadra prehliadača.
Obe technológie môžu používať viacero procesov na vykresľovanie, akceleráciu pomocou GPU, sieťovú komunikáciu a ďalšie funkcie prehliadača. Spotreba pamäte a využitie CPU výrazne závisia od zobrazovaného obsahu, počtu aktívnych inštancií prehliadača a spôsobu, akým aplikácia spravuje svoje prostriedky.
CEF môže pri integrácii do existujúcej natívnej aplikácie ponúknuť väčšiu flexibilitu. Vývojári môžu používať Chromium len pre tie časti rozhrania, ktoré vyžadujú webové technológie, a ostatné funkcie implementovať priamo v natívnom kóde.
Napríklad grafická aplikácia môže používať CEF na panel nastavení alebo vložené webové rozhranie, zatiaľ čo jej vykresľovacie jadro, spracovanie dokumentov a ďalšie funkcie citlivé na výkon zostanú natívne.
Aj aplikácie v Electrone môžu vykonávať natívny kód prostredníctvom doplnkov Node.js, externých procesov alebo natívnych modulov. Architektúra Electronu je však vo všeobecnosti orientovaná na tvorbu samotnej aplikácie pomocou webových technológií.
Jednou z obzvlášť užitočných možností CEF je vykresľovanie mimo obrazovky. Namiesto zobrazovania webového obsahu v tradičnom okne prehliadača môže CEF vykresľovať obsah do vyrovnávacích pamätí, ktoré hostiteľská aplikácia sama spracúva a zobrazuje. To je cenné pre aplikácie, ako sú herné enginy, streamovací softvér a nástroje s vlastnými vykresľovacími systémami.
Electron môže podporovať špecializované postupy vykresľovania prostredníctvom dodatočných integrácií, no CEF sprístupňuje vykresľovanie mimo obrazovky ako štandardnú súčasť svojho API na vkladanie prehliadača.
Pre vývojárov, ktorí hodnotia výkon, patria medzi najužitočnejšie merania:
- Čas spustenia: Ako rýchlo je aplikácia pripravená na používanie.
- Využitie pamäte: Spotreba prostriedkov pri reprezentatívnom obsahu prehliadača a natívnych funkciách.
- Využitie CPU: Výkon počas vykresľovania, navigácie a operácií na pozadí.
- Veľkosť aplikácie: Veľkosť sťahovaných súborov a miesto na disku po inštalácii.
- Požiadavky na vykresľovanie: Či aplikácia potrebuje bežné okná alebo vlastné vykresľovanie mimo obrazovky.
Dôležité je tiež odlišovať CEF od frameworkov využívajúcich systémové komponenty webview. CEF obsahuje Chromium a nespolieha sa na jadro prehliadača nainštalované operačným systémom. Prechod z Electronu na CEF preto automaticky nevedie k výrazne menšej aplikácii.
Vývojári, ktorým ide predovšetkým o menšie aplikačné balíky, môžu zvážiť alternatívy ako Tauri, ktoré používa systémom poskytované komponenty webview.
Ani Electron, ani CEF by sa nemal považovať za jednoznačne rýchlejší bez porovnávacieho merania konkrétnej implementácie.
Bezpečnosť a aktualizácie prehliadača
Electron aj CEF sa spoliehajú na architektúru prehliadača Chromium a jeho bezpečnostné mechanizmy, no za správnu konfiguráciu aplikácií sú zodpovední vývojári.
Electron poskytuje funkcie ako izolácia vykresľovacích procesov v sandboxe, izolácia kontextu a komunikácia založená na IPC medzi privilegovanými funkciami aplikácie a webovým obsahom. Jeho bezpečnostná dokumentácia odporúča obmedzovať prístup k Node.js, dôkladne overovať správy IPC a považovať vzdialene načítaný obsah za nedôveryhodný.
CEF tiež podporuje viacprocesovú architektúru Chromia a bezpečnostnú izoláciu. Keďže je však CEF integrovaný do aplikácie riadenej jej vývojárom, hostiteľská aplikácia zodpovedá za rozhodnutie, ktoré funkcie prehliadača, oprávnenia a natívne možnosti budú sprístupnené.
CEF podporuje väzby pre JavaScript a natívnu komunikáciu, čo vývojárom umožňuje prepájať webový obsah s funkciami aplikácie. Tieto rozhrania musia byť navrhnuté starostlivo, najmä pri zobrazovaní webových stránok tretích strán.
| Bezpečnostný aspekt | Electron | CEF |
|---|---|---|
| Sandbox Chromia | Podporovaný | Podporovaný |
| Privilegovaný natívny prístup | Node.js a rozhrania API Electronu | Natívne rozhrania API hostiteľskej aplikácie |
| Komunikácia medzi JavaScriptom a natívnym kódom | Prednačítavacie skripty a IPC | Väzby V8 a posielanie správ medzi procesmi |
| Izolácia vzdialeného obsahu | Sandbox vykresľovacích procesov a izolácia kontextu | Izolácia procesov Chromia a riadiace mechanizmy hostiteľskej aplikácie |
| Bezpečnostné aktualizácie prehliadača | Prechod na novšie verzie Electronu | Prechod na novšie verzie CEF |
| Zodpovednosť za bezpečnosť aplikácie | Vývojár aplikácie | Vývojár aplikácie |
Ďalším dôležitým aspektom je údržba prehliadača. Electron aj CEF spravidla distribuujú vlastné prostredie na beh Chromia, takže vývojári musia vydávať aktualizácie aplikácií, keď sú dostupné bezpečnostné opravy.
CEF poskytuje vetvy vydaní, ktoré sledujú vývoj Chromia, a binárne distribúcie, ktoré tento proces zjednodušujú. Electron podobne udržiava vydania zahŕňajúce aktualizácie Chromia a Node.js.
Ani jeden prístup úplne neodstraňuje potrebu priebežnej údržby. Aplikácie používajúce staršie verzie Chromia môžu zostať vystavené zraniteľnostiam, ktoré už boli opravené v samotnom Chromiu.
Pre tímy, ktoré vytvárajú softvér zobrazujúci ľubovoľné webové stránky, by mala byť bezpečnostná údržba nevyhnutnou súčasťou životného cyklu aplikácie, nie iba príležitostnou úlohou.
Rozšírenie: významné aplikácie používajúce Electron a CEF
Electron aj CEF sa vo veľkej miere používajú v produkčnom prostredí, no spôsoby ich využitia sa líšia.
Electron je obzvlášť viditeľný medzi bežne používanými desktopovými aplikáciami na produktivitu, komunikáciu a vývoj. Microsoft používa Electron pre Visual Studio Code a medzi ďalšie známe produkty postavené na Electrone patria Slack, Discord, Notion, Figma, Signal Desktop a GitHub Desktop.
CEF používajú aj významné softvérové spoločnosti, najmä pri integrácii webových rozhraní do aplikácií s existujúcou natívnou architektúrou.
Príklady:
| Aplikácia | Technológia | Typické použitie |
|---|---|---|
| Visual Studio Code | Electron | Multiplatformový editor kódu |
| Slack | Electron | Tímová komunikácia |
| Discord | Electron | Komunikačná a komunitná platforma |
| Notion | Electron | Poznámky a produktivita |
| Figma Desktop | Electron | Dizajnérska aplikácia |
| Spotify Desktop | CEF | Rozhranie založené na webových technológiách v desktopovom klientovi |
| Steam | CEF | Vložené webové rozhrania v desktopovom klientovi |
| OBS Studio | CEF | Prehliadačové zdroje, prekryvné vrstvy a dokovateľné panely prehliadača |
Spotify je obzvlášť dobre zdokumentovaným používateľom CEF. Na svojej oficiálnej stránke venovanej open source zverejňuje verzie CEF a Chromia priradené k vydaniam Spotify Desktop.
OBS Studio poskytuje ďalší jasný príklad toho, prečo si vývojári vyberajú CEF. Jeho integrácia obs-browser používa CEF na poskytovanie prehliadačových zdrojov, ktoré používateľom umožňujú zobrazovať webové prekryvné vrstvy a ďalší obsah v streamovacích scénach. CEF je komponentom OBS Studio, nie frameworkom použitým na vytvorenie celej aplikácie.
Steam tiež používa vložené webové komponenty založené na Chromiu vo svojom desktopovom klientovi a integruje webové rozhrania so svojou širšou natívnou aplikačnou infraštruktúrou.
Tieto príklady ilustrujú rozdiel medzi technológiami. Electron sa často používa na vytvorenie kompletnej desktopovej aplikácie, zatiaľ čo CEF sa často využíva na doplnenie webových funkcií do aplikácií, ktoré už majú rozsiahle natívne komponenty.
CEF by sa nemal vnímať ako málo známa alebo zastaraná alternatíva. Vznikol v roku 2008, teda skôr než Electron, a už mnoho rokov sa vo veľkej miere používa v komerčnom softvéri. Jeho dlhá história a pretrvávajúce používanie vo významných produktoch dokazujú, že vkladanie Chromia zostáva dôležitým prístupom k vývoju desktopových aplikácií.
Electron si medzitým vybudoval mimoriadne silný ekosystém okolo desktopových aplikácií založených na JavaScripte. Jeho široké rozšírenie, osvedčené nástroje a účasť významných technologických spoločností z neho robia atraktívnu voľbu pre tímy vytvárajúce nové produkty pomocou webových technológií.
Tieto dva frameworky majú odlišné silné stránky, pretože sa zameriavajú na odlišné architektonické požiadavky.
Prečo sme si vo WebCatalog vybrali Electron
Vo WebCatalog sme si pre naše multiplatformové desktopové aplikácie vybrali Electron, pretože dobre zodpovedá požiadavkám našich produktov.
WebCatalog umožňuje používateľom meniť webové stránky na desktopové aplikácie, nezávisle spravovať viacero účtov a organizovať aplikácie v systémoch macOS, Windows a Linux. Náš softvér musí podporovať webové stránky vytvorené tisíckami rôznych vývojárov s odlišnými autentifikačnými systémami, mechanizmami ukladania, rozhraniami API prehliadača a javascriptovými frameworkmi.
Electron aj CEF poskytujú konzistentné prostredie na beh Chromia, čo je dôležité pre kompatibilitu. Na rozdiel od frameworkov založených na systémových komponentoch webview nám umožňujú používať známu verziu Chromia na všetkých podporovaných desktopových platformách.
WebCatalog však nie je primárne natívnou aplikáciou, ktorá potrebuje vložený komponent prehliadača. Funkcie prehliadača sú jadrom nášho produktu. Potrebujeme rozsiahlu kontrolu nad oknami, reláciami, úložiskom, oprávneniami, navigáciou a správaním aplikácie počas jej životného cyklu.
Electron poskytuje pre tieto požiadavky vyspelé rozhrania API. Jeho rozhrania BrowserWindow, webContents a session nám umožňujú vytvárať funkcie podobné prehliadaču pomocou JavaScriptu a TypeScriptu. Obzvlášť dôležité sú trvalé oddelené úložiská relácií, pretože používateľom umožňujú udržiavať nezávislé prihlasovacie relácie pre viacero účtov na tej istej webovej stránke.
Aj CEF poskytuje rozhrania API na správu inštancií prehliadača, požiadaviek, úložiska a natívnej integrácie. V zásade by sa mnohé z rovnakých možností dali implementovať pomocou CEF. Vyžadovalo by si to však, aby sme sami vytvárali a udržiavali viac natívnej infraštruktúry.
Integrácia Electronu s Node.js zároveň zodpovedá našej technologickej výbave. Veľkú časť logiky našich desktopových aplikácií môžeme implementovať pomocou TypeScriptu, zdieľať kód medzi produktmi a využívať ekosystém JavaScriptu.
Ďalším faktorom je multiplatformový vývoj. WebCatalog podporuje macOS, Windows a Linux vrátane tvorby aplikačných balíkov, integrácií a systémového správania špecifických pre jednotlivé platformy. Osvedčené rozhrania API a distribučné nástroje Electronu znižujú množstvo natívneho kódu, ktorý musíme udržiavať.
Uvedomujeme si, že Electron prináša režijné nároky. Pribalenie Chromia zväčšuje veľkosť aplikácie a aplikácie založené na prehliadači vyžadujú starostlivú správu prostriedkov. Namiesto nahradenia Electronu sme sa zamerali na zlepšovanie spôsobu, akým ho používame.
Napríklad sme zaviedli klony APFS na zníženie využitia disku generovanými aplikáciami pre Mac, čím sme obmedzili nadbytočné ukladanie bez toho, aby sme sa vzdali kompatibility s Chromiom.
Naše rozhodnutie neznamená, že Electron je všeobecne lepší než CEF. Keby bol WebCatalog primárne natívnou aplikáciou s niekoľkými vloženými webovými rozhraniami, CEF by mohol byť vynikajúcou voľbou. Keďže je však náš produkt od základu postavený na webových aplikáciách a funkciách prehliadača, Electron poskytuje základ, ktorý umožňuje produktívnejší vývoj a jednoduchšiu údržbu.
Kde má CEF výhodu
Hoci je Electron našou preferovanou voľbou vo WebCatalog, CEF má dôležité výhody pre aplikácie, ktoré vyžadujú hlbšiu integráciu s natívnym softvérom.
CEF je obzvlášť atraktívny pre vývojárov, ktorí už majú zavedenú aplikáciu v C++ a chcú do nej zaviesť moderné webové rozhrania bez nahradenia existujúcej architektúry.
Ďalšou významnou výhodou je podpora vykresľovania mimo obrazovky. Aplikácie ako streamovací softvér a herné enginy môžu potrebovať vykresľovať webový obsah priamo do vlastných grafických reťazcov namiesto bežných desktopových okien. CEF na tieto prípady použitia poskytuje osvedčené rozhrania API.
CEF tiež poskytuje vývojárom rozsiahlu kontrolu nad integráciou prehliadača. Môžu prispôsobiť spracovanie požiadaviek, navigáciu, väzby pre JavaScript, načítavanie zdrojov a spôsob interakcie inštancií prehliadača s natívnymi komponentmi aplikácie.
Pre tímy s rozsiahlymi skúsenosťami s natívnym vývojom môže táto flexibilita prevážiť nad pohodlím Electronu.
CEF stojí za zváženie v týchto prípadoch:
- Pridávanie webových rozhraní do existujúcej natívnej aplikácie. Vývojári môžu zachovať súčasnú architektúru aplikácie a vložiť Chromium tam, kde je to potrebné.
- Tvorba softvéru s vlastnými požiadavkami na vykresľovanie. Vykresľovanie mimo obrazovky umožňuje integrovať webový obsah do grafických reťazcov a špecializovaných rozhraní.
- Hlboká integrácia s natívnymi funkciami v C++. CEF sprístupňuje natívne rozhrania API a umožňuje podrobnú kontrolu nad správaním prehliadača.
- Údržba existujúcej aplikácie založenej na CEF. Migrácia na Electron môže priniesť zásadné architektonické zmeny bez významných prínosov.
- Kombinovanie natívnych a webových rozhraní. Vývojári môžu používať Chromium vo vybraných častiach aplikácie a inde zachovať natívne komponenty používateľského rozhrania.
CEF však vyžaduje väčšiu zodpovednosť za aplikačnú infraštruktúru. Vývojári môžu musieť implementovať vlastnú tvorbu distribučných balíkov, aktualizácie, správu okien a integrácie špecifické pre jednotlivé platformy.
Pre tímy, ktoré už majú predpoklady na údržbu natívnych aplikácií, to môže byť úplne rozumné. Pre webovo orientované tímy vytvárajúce nový desktopový produkt to môže priniesť zbytočnú zložitosť.
Electron vs. CEF: čo si vybrať?
Obe technológie sú vyspelé, aktívne vyvíjané a schopné podporovať sofistikovaný desktopový softvér. Lepšia voľba závisí predovšetkým od toho, či vytvárate novú desktopovú aplikáciu založenú na webových technológiách, alebo vkladáte webové funkcie do existujúcej natívnej aplikácie.
| Vaša priorita | Lepší východiskový bod | Prečo |
|---|---|---|
| Nová desktopová aplikácia využívajúca JavaScript alebo TypeScript | Electron | Kompletný aplikačný framework |
| Existujúca natívna aplikácia v C++ | CEF | Integruje sa do natívnej architektúry |
| Minimum natívneho vývoja | Electron | Node.js a javascriptové rozhrania API |
| Vkladanie webového obsahu do natívnych okien | CEF | Navrhnutý špeciálne na vkladanie |
| Vykresľovanie mimo obrazovky a vlastné grafické reťazce | CEF | Špecializované rozhrania API na vykresľovanie |
| Rozsiahle nástroje na tvorbu desktopových balíkov a aktualizácie | Electron | Osvedčený distribučný ekosystém |
| Priama integrácia s natívnym kódom C++ | CEF | Natívne rozhrania pre C a C++ |
| Konzistentnosť Chromia naprieč desktopovými platformami | Ktorýkoľvek | Oba pribaľujú Chromium |
| Komplexná správa relácií prehliadača | Ktorýkoľvek | Oba poskytujú možnosti správy prehliadača |
| Malé aplikačné balíky | Ani jeden nemá prirodzenú výhodu | Oba distribuujú Chromium |
| Existujúci vývojársky tím zameraný na JavaScript | Electron | Známe vývojové technológie |
| Existujúci produkt založený na CEF | CEF | Vyhnete sa zbytočnej migrácii |
Pre väčšinu webových vývojárov, ktorí začínajú vytvárať novú multiplatformovú desktopovú aplikáciu, je Electron spravidla praktickejšou voľbou. Poskytuje aplikačnú architektúru, natívne integrácie, vývojové nástroje a distribučný ekosystém potrebné na vytvorenie kompletného produktu bez nutnosti vyvíjať všetko od nuly.
CEF je často lepšou možnosťou pre vývojárov, ktorí už majú natívnu aplikáciu alebo potrebujú špecializované možnosti vkladania prehliadača. Jeho flexibilita a priama natívna integrácia ho robia obzvlášť užitočným pre softvér, ako sú herné enginy, streamovacie nástroje, priemyselné aplikácie a komplexné natívne produkty s vloženými webovými rozhraniami.
Ani jedna technológia nie je zo svojej podstaty rýchlejšia alebo bezpečnejšia. Tieto vlastnosti výrazne závisia od aplikácie, jej architektúry a kvality implementácie.
Záverečné úvahy
Electron a Chromium Embedded Framework majú rovnakú základnú technológiu prehliadača, no riešia odlišné problémy.
Electron je navrhnutý tak, aby sprístupnil vývoj desktopových aplikácií webovým vývojárom. Spája Chromium, Node.js a natívne desktopové rozhrania API do frameworku, ktorý tímom umožňuje vytvárať sofistikované aplikácie pomocou JavaScriptu a TypeScriptu.
CEF je navrhnutý na vkladanie Chromia do iných aplikácií. Poskytuje kontrolu nad integráciou prehliadača na nižšej úrovni a je obzvlášť cenný pre natívne aplikácie, ktoré potrebujú webové rozhrania alebo špecializované možnosti vykresľovania.
Oba preukázali svoju hodnotu vo významnom produkčnom softvéri. Na Electrone sú postavené aplikácie ako Visual Studio Code, Slack, Discord a Notion, zatiaľ čo CEF sa používa v produktoch ako Spotify, Steam a OBS Studio.
Vo WebCatalog sme si vybrali Electron, pretože naše produkty sú od základu postavené na funkciách prehliadača. Jeho konzistentné prostredie na beh Chromia, vyspelé rozhrania API na správu prehliadača a ekosystém JavaScriptu nám umožňujú efektívne vyvíjať a udržiavať multiplatformové desktopové aplikácie.
CEF zostáva vynikajúcou voľbou pre vývojárov pracujúcich s natívnymi aplikáciami, najmä keď treba Chromium vložiť do existujúcej architektúry namiesto toho, aby slúžil ako základ celého produktu.
Rozhodnutie napokon závisí od toho, čo vytvárate. Ak chcete vytvoriť kompletnú desktopovú aplikáciu pomocou webových technológií, Electron je zvyčajne lepším východiskovým bodom. Ak chcete pridať Chromium do natívnej aplikácie, CEF bude pravdepodobne vhodnejším nástrojom.


