
Electron a NW.js jsou dva zavedené frameworky pro tvorbu multiplatformních desktopových aplikací pomocí webových technologií. Oba kombinují Chromium a Node.js a umožňují vývojářům vytvářet aplikace pomocí HTML, CSS, JavaScriptu a známých frontendových frameworků, jako jsou React, Vue a Angular.
NW.js je ve skutečnosti starší framework. Projekt, původně známý jako node-webkit, vznikl v roce 2011 a v roce 2012 už byl veřejně dostupný. Electron následoval v roce 2013, kdy jej GitHub začal vyvíjet pro svůj editor kódu Atom. Přestože přišel později, nakonec se stal rozšířenějším frameworkem pro běžné desktopové aplikace.
Dnes Electron pohání významné aplikace, jako jsou Visual Studio Code, Slack, Discord, Notion a Figma. Těží také ze zapojení velkých technologických společností a ze správy pod hlavičkou OpenJS Foundation. Ve WebCatalogu jsme si Electron zvolili jako základ našich multiplatformních desktopových aplikací.
NW.js má naproti tomu mezi významnými aplikacemi pro produktivitu a firemními aplikacemi mnohem méně viditelné zastoupení. Jeho přetrvávající využití je patrné zejména v herním průmyslu, včetně nezávislých her a titulů vytvořených pomocí RPG Makeru.
Jak si tedy oba frameworky stojí ve vzájemném srovnání a který by si vývojáři měli vybrat?
Electron vs. NW.js v kostce
Oba frameworky umožňují vývojářům vytvářet desktopové aplikace pomocí webových technologií, ale k architektuře aplikací, nativní integraci a zabezpečení přistupují odlišně.
| Vlastnost | Electron | NW.js |
|---|---|---|
| První uvedení | 2013 | 2011–2012 |
| Původní vývojář | GitHub | Intel Open Source Technology Center |
| Správa a ekosystém | OpenJS Foundation s významnými firemními přispěvateli | Udržovaný komunitou, s původem v Intelu |
| Jádro prohlížeče | Chromium | Chromium |
| Běhové prostředí JavaScriptu | Node.js | Node.js |
| Desktopové platformy | macOS, Windows, Linux | macOS, Windows, Linux |
| Architektura | Hlavní a vykreslovací procesy | Architektura Chromia s přímou integrací Node.js |
| Přístup k Node.js | Hlavní proces a řízená integrace ve vykreslovacích procesech | Přímý přístup z oprávněných stránek aplikace |
| Velikost aplikace | Poměrně velká | Poměrně velká |
| Výkon | Závisí na aplikaci | Závisí na aplikaci |
| Zabezpečení | Sandbox, izolace kontextu, IPC | Nastavitelný přístup k Node.js a izolace rámců |
| Rozšíření | Široce používaný v běžných desktopových aplikacích | Menší ekosystém, významné využití ve hrách |
| Podpora mobilních platforem | Bez oficiální podpory | Bez oficiální podpory |
Nejdůležitější rozdíly se netýkají výkonu ani velikosti aplikací. Oba frameworky obsahují Chromium a Node.js, takže jejich nároky na prostředky jsou obecně srovnatelné. Zásadní rozdíly se místo toho týkají architektury, bezpečnostních hranic, vývojářských nástrojů a podpory ekosystému.
Historie: NW.js přišel první, ale Electron se stal populárnějším
NW.js byl jedním z prvních projektů, které ukázaly, že vývojáři mohou kombinovat Node.js s technologiemi prohlížečů a vytvářet tak desktopové aplikace. Původně se jmenoval node-webkit a vzešel z Intel Open Source Technology Center. Vývoj začal v roce 2011 a veřejné verze se objevily v roce 2012.
Jeho základní myšlenka byla jednoduchá: umožnit JavaScriptu běžícímu v prostředí podobném prohlížeči přímý přístup k modulům Node.js. Díky tomu bylo možné vyvíjet desktopové aplikace pomocí známých webových technologií, aniž by bylo nutné vytvářet tradiční nativní rozhraní.
Electron přišel v roce 2013 pod názvem Atom Shell. GitHub jej vyvinul pro svůj editor kódu Atom, který vstoupil do veřejné betaverze v roce 2014. Electron byl navržen jako alternativa k tehdy dostupným frameworkům pro desktopové aplikace založené na webových technologiích, včetně node-webkitu a Chromium Embedded Frameworku.
Přestože oba frameworky sdílely cíl zpřístupnit vývoj desktopových aplikací webovým vývojářům, Electron zvolil jinou architekturu, která oddělovala funkce na úrovni aplikace od webového obsahu. Tento přístup byl stále atraktivnější s tím, jak vývojáři začali vytvářet složitější aplikace.
Electron si následně získal oblibu mezi startupy i velkými technologickými společnostmi. GitHub, Slack, Microsoft a další organizace přispívaly k jeho vývoji a ekosystému. V roce 2019 se Electron připojil k OpenJS Foundation a přešel tak z vlastnictví GitHubu pod neutrální nadaci podporující open source.
Dnes Electron funguje podle zavedeného modelu správy s pracovními skupinami, které se věnují zabezpečení, vydávání verzí, API, aktualizacím Chromia a Node.js i dalším oblastem. Na jeho údržbě a správě se podíleli inženýři spojení s organizacemi, jako jsou Microsoft a Slack.
Také NW.js má firemní původ, protože vznikl v Intelu. Jeho současný ekosystém je však menší a nemá stejně široké viditelné zapojení velkých společností vyvíjejících desktopový software.
Tato historie ilustruje důležitý rozdíl: být první nezaručuje dlouhodobou dominanci. NW.js pomohl zavést koncept tvorby desktopových aplikací pomocí Chromia a Node.js, ale Electron přilákal širší ekosystém vývojářů, správců a komerčních uživatelů.
Další souvislosti najdete v ohlédnutí za deseti lety Electronu, v článku o připojení Electronu k OpenJS Foundation a v historii projektu node-webkit.
Architektura: hlavní procesy vs. přímá integrace Node.js
Electron používá víceprocesovou architekturu převzatou z Chromia. Každá aplikace v Electronu má hlavní proces odpovědný za správu oken, události životního cyklu aplikace, integraci s operačním systémem a privilegované funkce. Webový obsah běží v samostatných vykreslovacích procesech, které s hlavním procesem komunikují prostřednictvím meziprocesové komunikace (IPC).
Tím vzniká oddělení aplikační logiky a kódu uživatelského rozhraní. Vykreslovací proces se obvykle chová jako běžné prostředí prohlížeče, zatímco hlavní proces zpracovává operace vyžadující přístup k Node.js nebo nativním API. Electron také poskytuje přednačítací skripty a API contextBridge, které vývojářům umožňují zpřístupnit vykreslovacímu procesu vybrané funkce, aniž by mu udělili neomezený přístup k Node.js.
NW.js volí jiný přístup. Byl navržen tak, aby funkce Node.js zpřístupnil přímo uvnitř webových aplikací. Na oprávněné stránce aplikace mohou vývojáři přistupovat k modulům Node.js pomocí známých JavaScriptových API, aniž by pro každou operaci vytvářeli samostatné rozhraní IPC.
Například lokálně zabalená aplikace NW.js může používat Node.js přímo ze skriptu běžícího na její stránce:
const fs = require('node:fs');
const content = fs.readFileSync('notes.txt', 'utf8');
document.body.textContent = content;
Tato jednoduchost je jednou z charakteristických výhod NW.js. Vývojáři mohou kombinovat API prohlížeče a funkce Node.js, aniž by nutně museli rozdělovat kód do samostatných aplikačních vrstev. NW.js také podporuje oddělené kontexty JavaScriptu a režim smíšeného kontextu, což poskytuje flexibilitu ve způsobu, jakým spolu funkce prohlížeče a Node.js spolupracují.
Electron obecně podporuje explicitnější oddělení. Pro čtení souboru z vykreslovacího procesu by typická bezpečná aplikace v Electronu zpřístupnila omezenou operaci prostřednictvím přednačítacího skriptu a přístup k souborovému systému by zpracovala v hlavním procesu.
Tento přístup vyžaduje více kódu, ale jasněji vymezuje hranici mezi privilegovanými funkcemi aplikace a webovým obsahem. U složitých aplikací může toto oddělení zlepšit udržovatelnost a usnadnit pochopení odpovědnosti za zabezpečení.
Žádná z těchto architektur není univerzálně lepší. NW.js může působit přímočařeji u menších aplikací nebo projektů, které těží z přímé integrace Node.js. Electron poskytuje strukturu, která může být obzvláště užitečná s rostoucí složitostí aplikace.
Výkon, využití paměti a velikost aplikace
Protože Electron i NW.js obsahují Chromium a Node.js, nemá ani jeden framework vrozenou architektonickou výhodu srovnatelnou s rozdílem ve velikosti mezi Electronem a Tauri.
I jednoduchá aplikace vytvořená v kterémkoli z těchto frameworků musí distribuovat poměrně rozsáhlé běhové prostředí. Oba frameworky mohou také vytvářet více procesů Chromia, což zvyšuje spotřebu paměti, ale pomáhá izolovat jednotlivé úlohy a zlepšovat odezvu.
Přímá integrace Node.js a prostředí prohlížeče v NW.js může u některých operací snížit potřebu IPC. V závislosti na konfiguraci kontextu může JavaScriptový kód pracovat s funkcemi Node.js přímo, což některé operace zjednodušuje a potenciálně snižuje komunikační režii.
Electron odděluje privilegované operace od kódu vykreslovacího procesu, což při překračování hranic procesů vyžaduje IPC. To však neznamená, že je Electron ze své podstaty pomalejší. Dodatečná režie může být při běžné interakci s uživatelským rozhraním zanedbatelná a toto oddělení může pomoci udržet náročnou backendovou práci mimo vykreslovací proces.
V praxi výkon aplikace výrazně závisí na tom, jak vývojáři používají Chromium, spravují procesy na pozadí, implementují vykreslování a pracují se stavem aplikace.
Pro smysluplné srovnání by vývojáři měli vyhodnotit:
- Dobu spuštění: Jak rychle je aplikace připravena k interakci.
- Využití paměti: Spotřebu v nečinnosti i při realistické zátěži.
- Využití CPU: Spotřebu prostředků při vykreslování a operacích na pozadí.
- Velikost aplikace: Velikost stahovaných dat a nároky na úložiště po instalaci.
- Odezvu: Jak dobře se rozhraní chová při úlohách náročných na prostředky.
Žádný z frameworků by neměl být bez měření reprezentativní aplikace považován za jednoznačně rychlejší. Výsledky výkonnostních testů mohou ovlivnit rozdíly ve verzích Chromia, konfiguraci sestavení, nativních modulech i architektuře aplikace.
Vývojářům, kteří chtějí především zmenšit velikost aplikace, přechod z Electronu na NW.js pravděpodobně nepřinese tak výrazné úspory jako přechod na framework využívající systémové webview.
Zabezpečení: odlišné přístupy k nativnímu přístupu
Zabezpečení je jedním z nejdůležitějších rozdílů mezi Electronem a NW.js, zejména u aplikací, které zobrazují vzdálené weby nebo jiný nedůvěryhodný obsah.
Electron poskytuje několik bezpečnostních mechanismů, včetně sandboxu Chromia, izolace kontextu a možnosti zakázat integraci Node.js ve vykreslovacích procesech. Moderní verze Electronu ve výchozím nastavení zapínají důležité ochranné prvky a bezpečnostní dokumentace projektu důrazně doporučuje udržovat privilegovaná nativní API oddělená od vzdáleného obsahu.
NW.js umožňuje přímější přístup k Node.js z oprávněných stránek aplikace, což může zjednodušit vývoj, ale zároveň vyžaduje pečlivé zvážení, kterému obsahu budou tato oprávnění udělena.
NW.js rozlišuje mezi běžnými rámci a rámci s povoleným Node.js. Podporuje také nastavení, jako je node-remote, která určují, které vzdálené URL mohou přistupovat k funkcím Node.js. Jeho komponenta webview může zobrazovat hostovaný obsah v samostatném procesu, aniž by mu automaticky udělila oprávnění aplikace.
| Bezpečnostní hledisko | Electron | NW.js |
|---|---|---|
| Privilegovaný přístup k Node.js | Především hlavní proces a řízené komunikační mosty | Dostupný přímo v oprávněných kontextech aplikace |
| Izolace vzdáleného obsahu | Vykreslovací procesy a webový obsah v sandboxu | Běžné rámce a izolovaná webview |
| Zpřístupnění nativních API | IPC a contextBridge | Kontexty Node.js a nastavitelný přístup |
| Sandbox Chromia | Podporován s bezpečným výchozím nastavením | Závisí na typu rámce a konfiguraci |
| Odpovědnost vývojáře | Ověřovat IPC, navigaci, oprávnění a zpřístupněná API | Řídit privilegované rámce, přístup k Node.js a vzdálený obsah |
Electron ani NW.js by neměly být automaticky považovány za bezpečný univerzální prohlížeč. Aplikace, které zobrazují libovolné weby třetích stran, vyžadují další bezpečnostní opatření bez ohledu na použitý framework.
U aplikací postavených výhradně na důvěryhodném lokálním obsahu může být přímá integrace NW.js praktická. U aplikací, které potřebují důsledně oddělit privilegovaný kód od nedůvěryhodného webového obsahu, může architektura Electronu tyto hranice vymezit jasněji.
Zabezpečení v konečném důsledku závisí na návrhu aplikace, konfiguraci, správě závislostí a rychlosti, s jakou vývojáři aplikují bezpečnostní aktualizace.
Rozšíření: Electron dominuje běžným desktopovým aplikacím
Jedním z nejvýznamnějších rozdílů mezi Electronem a NW.js je jejich rozšíření mezi vývojáři desktopového softwaru.
Přestože je Electron mladší projekt, etabloval se jako běžně používaný framework pro produkční desktopové aplikace. Jeho využití zahrnuje vývojářské nástroje, komunikační platformy, software pro produktivitu, návrhářské aplikace i firemní nástroje.
Mezi známé příklady patří:
| Společnost | Aplikace v Electronu |
|---|---|
| Microsoft | Visual Studio Code |
| Salesforce | Slack |
| Discord | Discord |
| Notion | Notion |
| Figma | Figma |
| GitHub | GitHub Desktop |
| Signal | Signal Desktop |
| Postman | Postman |
Tyto produkty ukazují, že Electron dokáže podporovat sofistikované desktopové aplikace používané miliony lidí. Jeho rozšíření také přispělo ke vzniku rozsáhlého ekosystému knihoven, dokumentace, ladicích nástrojů a řešení pro tvorbu instalačních balíčků.
Další výhodou je zapojení firem. Electron původně vyvinul GitHub a později přilákal příspěvky inženýrů z velkých technologických společností. Jeho správa prostřednictvím OpenJS Foundation poskytuje organizační strukturu pro spolupráci, údržbu zabezpečení, správu vydávání verzí a dlouhodobý vývoj.
To neznamená, že každá společnost používající Electron přímo přispívá k jeho vývoji, ani to nezaručuje, že bude vždy lépe udržován. Široce používaný framework s různorodou skupinou komerčních subjektů, které na něm mají zájem, však může těžit ze sdílených investic do vývoje a zkušeností z reálného provozu.
NW.js má jiný profil využití. Ačkoli se používá k tvorbě desktopových aplikací, poměrně málo významných moderních aplikací pro produktivitu nebo firemních aplikací veřejně uvádí NW.js jako svůj framework. Mnohé aplikace tradičně zmiňované v přehledech NW.js jsou starší projekty, takže tyto seznamy jsou pro posuzování jeho současného rozšíření méně užitečné.
To neznamená, že je NW.js opuštěný nebo nepoužívaný. Nadále vycházejí verze obsahující aktualizované Chromium a Node.js. Jeho viditelný ekosystém v oblasti běžného desktopového softwaru je však výrazně menší než u Electronu.
Pro vývojáře, kteří vybírají framework pro novou komerční aplikaci, je tento rozdíl důležitý. Větší ekosystém obvykle usnadňuje hledání existujících řešení, nábor vývojářů s relevantními zkušenostmi a řešení problémů v produkčním provozu.
Popularita Electronu neznamená, že je technicky lepší ve všech ohledech, ale jeho širší rozšíření a zapojení firem představují praktické výhody, které by se neměly přehlížet.
Další příklady si můžete prohlédnout v oficiálním přehledu aplikací v Electronu.
Kde je NW.js stále populární: nezávislé hry
Přestože NW.js není široce zastoupen mezi významnými moderními aplikacemi pro produktivitu, nadále má výrazné zastoupení ve vývoji her, zejména mezi nezávislými vývojáři.
Jedním z důvodů je jeho integrace s nástroji pro vývoj her, jako je RPG Maker MV. Hry vytvořené v RPG Makeru MV mohou používat NW.js jako své desktopové běhové prostředí, díky čemuž mohou hry založené na HTML5 a JavaScriptu běžet jako samostatné aplikace.
To znamená, že vývojáři mohou NW.js používat nepřímo prostřednictvím svého herního enginu, místo aby si jej vybírali jako univerzální desktopový framework.
Existují také nezávislé doklady o tom, že se NW.js nadále objevuje v nově vydávaných hrách. SteamDB sleduje hry používající NW.js automatickou analýzou charakteristických znaků technologií v distribuovaných souborech. Její databáze zahrnuje hry vydané v letech 2025 a 2026 a dokládá tak pokračující používání, aniž by se spoléhala výhradně na potenciálně zastaralé přehledy aplikací.
Mezi příklady spojené s NW.js patří:
| Hra | Žánr | Vydání na Steamu |
|---|---|---|
| Look Outside | Hororové RPG | Březen 2025 |
| OMORI | RPG | Prosinec 2020 |
| CrossCode | Akční RPG | Září 2018 |
| Fear & Hunger | Hororové RPG | Prosinec 2018 |
| Ib | Hororová adventura | Duben 2022 |
| Saihate Station | Adventura | Březen 2025 |
| Sheepy: A Short Adventure | Plošinovka | Únor 2024 |
Zdroj: Detekce technologie NW.js ve SteamDB.
SteamDB identifikuje technologie automaticky z herních souborů, takže jednotlivé detekce mohou obsahovat chyby nebo odrážet přibalenou závislost, nikoli běhové prostředí záměrně zvolené vývojářem. Přítomnost NW.js také neprokazuje, jakou verzi frameworku hra používá ani zda ji její vývojář aktivně udržuje.
Přesto tyto příklady ukazují, že NW.js zůstává součástí současného ekosystému vývoje her.
Mezi oběma frameworky tak vzniká zajímavý rozdíl. Electron je velmi viditelný v běžných desktopových aplikacích, zejména v nástrojích pro produktivitu a vývoj. NW.js má v těchto kategoriích menší zastoupení, ale nadále se objevuje v nezávisle vyvíjených hrách.
Pro vývojáře vytvářející firemní software, komunikační nástroje nebo komplexní aplikace pro produktivitu může být ekosystém Electronu relevantnější. Pro vývojáře pracující s RPG Makerem nebo udržující hry postavené na NW.js zůstává starší framework zavedenou a praktickou volbou.
Vývojářská zkušenost, nástroje a dlouhodobá údržba
Oba frameworky podporují moderní frontendové technologie a balíčky Node.js, takže jsou přístupné vývojářům obeznámeným s vývojem webů. Electron má však podstatně větší ekosystém zaměřený na univerzální desktopový software.
NW.js nabízí poměrně přímočarý model vývoje. Jednoduchou aplikaci lze definovat pomocí manifestu package.json a vstupní stránky HTML. Vývojáři mohou přistupovat k modulům Node.js přímo z oprávněných stránek aplikace a používat API NW.js ke správě oken, nabídek, ikon v oznamovací oblasti a dalších desktopových funkcí.
Electron obvykle vyžaduje rozsáhlejší počáteční strukturu. Vývojáři vytvářejí vstupní bod hlavního procesu, konfigurují okna aplikace a spravují komunikaci mezi hlavním a vykreslovacími procesy. U malých aplikací to může působit složitěji, ale zároveň to vede vývojáře k uspořádání funkcí aplikace do oddělených vrstev.
Electron těží ze zavedených nástrojů, jako jsou Electron Forge a electron-builder, které poskytují řešení pro tvorbu balíčků, podepisování, distribuci a aktualizaci aplikací. Jeho široké rozšíření také znamená, že vývojáři najdou více příkladů a komunitních diskusí o pokročilých problémech při vývoji desktopových aplikací.
NW.js poskytuje nástroje pro tvorbu balíčků, jako je nw-builder, a podporuje také ruční balení. Zpřístupňuje rovněž API odvozená z architektury aplikací a rozšíření Chromia, což může být atraktivní pro projekty, které tato API již používají.
Oba frameworky vyžadují, aby vývojáři řešili rozdíly mezi operačními systémy, podepisování kódu, kompatibilitu nativních modulů a aktualizace aplikací. Ani jeden neodstraňuje složitost distribuce produkčního desktopového softwaru.
Velikost a složení ekosystému jsou obzvláště důležité pro dlouhodobou údržbu. Týmy vytvářející komerční aplikace mohou potřebovat řešení pro podepisování kódu, automatické aktualizace, hlášení pádů, přístupnost, nativní integrace a chyby specifické pro jednotlivé platformy.
Širší rozšíření Electronu mezi velkými softwarovými společnostmi usnadňuje hledání zavedených postupů a opakovaně použitelných řešení pro mnohé z těchto požadavků. NW.js zůstává schopným nástrojem, ale vývojáři mohou pro specializované desktopové funkce narazit na menší množství příkladů nebo udržovaných integrací.
U projektu, jehož údržba má trvat mnoho let, si vyspělost ekosystému a průběžné investice zaslouží stejnou pozornost jako API frameworku nebo výsledky výkonnostních testů.
Proč ve WebCatalogu volíme Electron
Ve WebCatalogu jsme si zvolili Electron, protože jeho architektura velmi dobře odpovídá požadavkům našich produktů. WebCatalog umožňuje uživatelům měnit weby na desktopové aplikace, nezávisle spravovat více účtů a organizovat své aplikace v macOS, Windows a Linuxu.
Na rozdíl od vývojářů vytvářejících běžnou desktopovou aplikaci s frontendem, který mají plně pod kontrolou, musíme podporovat weby vytvořené tisíci různých vývojářů. Tyto weby mohou využívat různé autentizační systémy, mechanismy ukládání dat, API prohlížeče, multimediální funkce a složité JavaScriptové aplikace.
Electron i NW.js používají Chromium, takže nabízejí podobné výhody v oblasti kompatibility jádra prohlížeče. Rozdíl pro nás spočívá v tom, jak velkou kontrolu framework poskytuje nad okny aplikace, relacemi prohlížeče, navigací, oprávněními a oddělením privilegovaného kódu aplikace od vzdáleného obsahu.
Electron poskytuje pro tyto požadavky vyspělou sadu API. Jeho rozhraní BrowserWindow, webContents a session nám umožňují řídit chování prohlížeče na poměrně nízké úrovni. Trvalé oddíly relací jsou obzvláště důležité, protože umožňují uživatelům zůstat přihlášeni k více účtům na stejném webu, aniž by tyto účty sdílely cookies a další data relace.
NW.js také podporuje vložená webview, správu cookies a oddíly úložiště, takže tyto možnosti nejsou výlučné pro Electron. Vyhrazený aplikační proces Electronu a jeho osvědčená API pro správu prohlížeče však poskytují architekturu, která dobře vyhovuje našim potřebám.
Dalším důležitým hlediskem je zabezpečení. Protože WebCatalog zobrazuje weby třetích stran, které nemáme pod kontrolou, musíme pečlivě oddělovat vzdálený obsah od privilegovaných funkcí aplikace. Procesní model Electronu, izolace kontextu a mechanismy IPC nám pomáhají toto oddělení udržovat, i když stále musíme sami zavádět a udržovat odpovídající bezpečnostní opatření.
A konečně, ekosystém Electronu usnadňuje multiplatformní vývoj a údržbu. Naše aplikace musí běžet v macOS, Windows a Linuxu s podporou funkcí specifických pro jednotlivé platformy, tvorby balíčků, podepisování a aktualizací. Nástroje, dokumentace a rozsáhlé využití Electronu v reálném provozu poskytují pro tuto práci pevný základ.
Oceňujeme také ekosystém dlouhodobého vývoje Electronu. Zapojení velkých technologických společností a správa prostřednictvím OpenJS Foundation nám dávají větší jistotu ohledně dostupnosti technických zdrojů, údržby zabezpečení a komunitní podpory během dalšího rozvoje našich produktů.
Uvědomujeme si nevýhody Electronu, zejména velikost aplikací a nároky na prostředky. Místo nahrazení frameworku nadále hledáme způsoby, jak snížit zbytečnou režii. Například jsme zavedli klony APFS ke snížení využití disku u generovaných aplikací pro Mac.
Naše rozhodnutí nevychází z přesvědčení, že by NW.js nedokázal podporovat sofistikovaný software. Oba frameworky nabízejí konzistentní chování Chromia, kterého si ceníme. Pro WebCatalog je Electron vhodnější díky své architektuře, bezpečnostním mechanismům, širšímu rozšíření mezi běžnými aplikacemi a zavedenému vývojářskému ekosystému.
Kde NW.js stále dává smysl
Přestože má Electron větší ekosystém, NW.js si zachovává některé významné výhody, které by vývojáři měli zvážit.
Jeho nejvýraznější vlastností je možnost přistupovat k Node.js přímo z oprávněných kontextů prohlížeče. Vývojářům převádějícím existující webovou aplikaci na desktopovou může poskytnout pohodlný způsob, jak přidat přístup k souborovému systému, integraci s operačním systémem a další nativní funkce bez navrhování samostatné komunikační vrstvy.
NW.js může být dobrou volbou, když:
- Vytváříte hry pomocí existující sady nástrojů založené na NW.js. Vývojáři používající RPG Maker MV nebo udržující projekty závislé na NW.js mohou mít jen málo důvodů ke změně frameworku.
- Je žádoucí přímá integrace Node.js. Aplikace může těžit z přímého přístupu k funkcím Node.js ve svém důvěryhodném rozhraní.
- Aplikace je poměrně jednoduchá. Menší projekt nemusí potřebovat explicitnější oddělení logiky hlavního a vykreslovacího procesu, které nabízí Electron.
- Projekt již používá NW.js. Migrace na Electron může přinést jen malý užitek, pokud je stávající aplikace stabilní a dobře udržovaná.
- Jsou důležitá konkrétní aplikační API Chromia. NW.js poskytuje přístup k podporovaným API Chromu, která mohou být pro určité aplikace užitečná.
NW.js je také nadále aktivně udržován. Průběžné aktualizace Chromia ukazují, že se dále vyvíjí spolu s platformou prohlížeče.
Pro vývojáře udržující existující aplikaci nebo hru v NW.js by přechod na Electron vyžadoval vyhodnocení architektonických rozdílů, změn při tvorbě balíčků a požadavků na kompatibilitu. Pokud neexistuje jasný technický nebo obchodní přínos, může být praktičtější zůstat u stávajícího frameworku.
Electron vs. NW.js: který byste si měli vybrat?
Oba frameworky umožňují vytvářet multiplatformní desktopové aplikace. U nových projektů závisí volba především na tom, jak chtějí vývojáři strukturovat svůj kód a který ekosystém nejlépe vyhovuje jejich požadavkům.
| Vaše priorita | Lepší výchozí volba | Proč |
|---|---|---|
| Velké a složité desktopové aplikace | Electron | Zavedená architektura a ekosystém |
| Běžný software pro produktivitu nebo firemní použití | Electron | Mnohem širší rozšíření v těchto kategoriích |
| Dlouhodobý ekosystém a zapojení firem | Electron | OpenJS Foundation a významní přispěvatelé z oboru |
| Hry vytvořené pomocí RPG Makeru MV | NW.js | Zavedená integrace a sada nástrojů |
| Přímý přístup k Node.js ze stránek aplikace | NW.js | Základní vlastnost architektury |
| Explicitní oddělení uživatelského rozhraní a privilegovaného kódu | Electron | Model hlavního a vykreslovacího procesu a IPC |
| Rozsáhlé nástroje pro tvorbu balíčků a distribuci | Electron | Vyspělý ekosystém nástrojů |
| Existující aplikace v NW.js | NW.js | Vyhnutí se zbytečné migraci |
| Konzistentní chování Chromia napříč desktopovými platformami | Kterýkoli | Oba obsahují Chromium |
| Minimální velikost aplikace | Ani jeden nemá jasnou výhodu | Oba obsahují Chromium a Node.js |
| Správa relací prohlížeče a oken | Electron | Vyspělá specializovaná API |
| Široká nabídka komunitních zdrojů a příkladů | Electron | Větší rozšíření mezi běžnými aplikacemi |
Pro většinu týmů, které začínají vyvíjet rozsáhlejší novou desktopovou aplikaci, je Electron lepší výchozí volbou. Jeho architektura, ekosystém, bezpečnostní doporučení, zapojení firem a rozsáhlé využití v produkci z něj dělají praktický framework pro dlouhodobý vývoj.
NW.js nadále stojí za zvážení u projektů, které těží z přímé integrace Node.js, u postupů vývoje her, které na něm již závisejí, nebo u zavedených kódových základen NW.js. Pro některé případy použití může být jednodušší a jeho základ v Chromiu poskytuje širokou kompatibilitu s webovou platformou.
Vývojáři by také měli mít na paměti, že ani jeden framework není zvlášť úsporný. Pokud jsou hlavními prioritami malá velikost aplikace a nízká základní spotřeba prostředků, stojí za zvážení alternativy, jako je Tauri.
Závěrečné úvahy
Electron a NW.js mají více společného než rozdílného. Oba kombinují Chromium a Node.js a umožňují vývojářům vytvářet multiplatformní desktopové aplikace pomocí známých webových technologií. Oba podporují moderní JavaScriptové frameworky, nativní integraci s operačním systémem a sofistikované desktopové aplikace.
NW.js přišel první a představil svůj přístup ke kombinování Node.js s webovými technologiemi ještě před vznikem Electronu. Electron se však následně stal rozšířenějším frameworkem pro běžné desktopové aplikace a těžil z původních investic GitHubu, příspěvků velkých technologických společností a správy prostřednictvím OpenJS Foundation.
Způsoby jejich využití se výrazně liší. Electron pohání oblíbené aplikace pro produktivitu, komunikaci a vývoj používané miliony lidí. NW.js je na tomto trhu méně viditelný, ale nadále má významné zastoupení v nezávislých hrách, včetně titulů založených na RPG Makeru i nedávno vydaných her.
Ve WebCatalogu volíme stejný framework jako mnoho významných vývojářů desktopového softwaru. Electron nám poskytuje konzistentní chování Chromia, možnosti správy prohlížeče, bezpečnostní architekturu a multiplatformní nástroje potřebné k podpoře široké škály webových aplikací v macOS, Windows a Linuxu.
NW.js není zastaralý a jeho pokračující využití při vývoji her ukazuje, že je stále užitečný. Pro vývojáře, kteří začínají vytvářet novou univerzální desktopovou aplikaci, je však Electron díky širšímu ekosystému, zavedeným nástrojům, zapojení firem a větší komunitě praktičtější výchozí volbou.
Lepší volba nakonec závisí na požadavcích aplikace, zkušenostech vývojového týmu a dlouhodobých nákladech na údržbu softwaru.


