Electron verzus NW.js

Porovnajte Electron a NW.js z hľadiska architektúry, výkonu, bezpečnosti a rozšírenosti. Zistite, prečo sa Electron stal obľúbenejšou voľbou pre desktopové aplikácie.

20. októbra 2026

Quang Lam · Founder & CEO

Electron verzus NW.js

Electron a NW.js sú dva osvedčené frameworky na vytváranie multiplatformových desktopových aplikácií pomocou webových technológií. Oba kombinujú Chromium a Node.js, vďaka čomu môžu vývojári vytvárať aplikácie pomocou HTML, CSS, JavaScriptu a známych frontendových frameworkov, ako sú React, Vue a Angular.

NW.js je v skutočnosti starší framework. Projekt, pôvodne známy ako node-webkit, vznikol v roku 2011 a verejne dostupný bol už v roku 2012. Electron nasledoval v roku 2013, keď ho GitHub začal vyvíjať pre svoj editor kódu Atom. Hoci prišiel neskôr, Electron sa napokon stal rozšírenejším frameworkom pre bežne používané desktopové aplikácie.

Dnes Electron poháňa významné aplikácie, ako sú Visual Studio Code, Slack, Discord, Notion a Figma. Ťaží aj z účasti veľkých technologických spoločností a zo správy pod záštitou nadácie OpenJS Foundation. Vo WebCatalog sme si Electron vybrali ako základ našich multiplatformových desktopových aplikácií.

NW.js má zatiaľ medzi významnými aplikáciami na zvýšenie produktivity a podnikovými aplikáciami oveľa menšie viditeľné zastúpenie. Jeho pretrvávajúce využívanie je obzvlášť zjavné v hernom priemysle vrátane nezávislých hier a titulov vytvorených pomocou RPG Maker.

Ako teda tieto dva frameworky obstáli v porovnaní a ktorý by si mali vývojári vybrať?

Electron vs. NW.js v skratke

Oba frameworky umožňujú vývojárom vytvárať desktopové aplikácie pomocou webových technológií, no odlišne pristupujú k architektúre aplikácií, natívnej integrácii a bezpečnosti.

VlastnosťElectronNW.js
Prvé uvedenie20132011 – 2012
Pôvodný vývojárGitHubIntel Open Source Technology Center
Správa a ekosystémOpenJS Foundation s významnými firemnými prispievateľmiSpravovaný komunitou, s pôvodom v spoločnosti Intel
Jadro prehliadačaChromiumChromium
Behové prostredie JavaScriptuNode.jsNode.js
Desktopové platformymacOS, Windows, LinuxmacOS, Windows, Linux
ArchitektúraHlavný proces a vykresľovacie procesyArchitektúra Chromium s priamou integráciou Node.js
Prístup k Node.jsHlavný proces a riadená integrácia vo vykresľovacích procesochPriamy prístup zo stránok aplikácie s príslušným oprávnením
Veľkosť aplikáciePomerne veľkáPomerne veľká
VýkonZávisí od aplikácieZávisí od aplikácie
BezpečnosťSandboxovanie, izolácia kontextu, IPCKonfigurovateľný prístup k Node.js a izolácia rámcov
RozšírenieŠiroko používaný v bežných desktopových aplikáciáchMenší ekosystém, výrazné využitie v hrách
Podpora mobilných zariadeníBez oficiálnej podporyBez oficiálnej podpory

Najdôležitejšie rozdiely nespočívajú vo výkone ani vo veľkosti aplikácií. Oba frameworky obsahujú Chromium a Node.js, takže ich nároky na prostriedky sú vo všeobecnosti porovnateľné. Hlavné rozdiely sa týkajú architektúry, bezpečnostných hraníc, vývojárskych nástrojov a podpory ekosystému.

História: NW.js prišiel prvý, no Electron sa stal populárnejším

NW.js bol jedným z prvých projektov, ktoré ukázali, že vývojári môžu kombinovať Node.js s technológiami prehliadača a vytvárať tak desktopové aplikácie. Pôvodne sa nazýval node-webkit a vznikol v centre Open Source Technology Center spoločnosti Intel. Jeho vývoj sa začal v roku 2011 a verejné vydania sa objavili už v roku 2012.

Jeho základná myšlienka bola jednoduchá: umožniť JavaScriptu spustenému v prostredí podobnom prehliadaču priamy prístup k modulom Node.js. To umožnilo vyvíjať desktopové aplikácie pomocou známych webových technológií bez vytvárania tradičného natívneho rozhrania.

Electron prišiel v roku 2013 pod názvom Atom Shell. GitHub ho vyvinul ako základ svojho editora kódu Atom, ktorý vstúpil do verejnej beta verzie v roku 2014. Electron bol navrhnutý ako alternatíva k vtedy dostupným desktopovým frameworkom založeným na webových technológiách vrátane node-webkit a Chromium Embedded Framework.

Hoci oba frameworky mali spoločný cieľ sprístupniť vývoj desktopových aplikácií webovým vývojárom, Electron zvolil odlišnú architektúru, ktorá oddeľovala funkcie na úrovni aplikácie od webového obsahu. Tento prístup bol čoraz atraktívnejší, keď vývojári začali vytvárať zložitejšie aplikácie.

Electron sa následne rozšíril medzi startupmi aj veľkými technologickými spoločnosťami. GitHub, Slack, Microsoft a ďalšie organizácie prispievali k jeho vývoju a ekosystému. V roku 2019 sa Electron pripojil k OpenJS Foundation a prešiel tak z vlastníctva GitHubu pod neutrálnu nadáciu zameranú na open source.

Dnes Electron funguje podľa zavedeného modelu správy s pracovnými skupinami pre bezpečnosť, vydávanie verzií, API, aktualizácie Chromium a Node.js a ďalšie oblasti. Na jeho údržbe a správe sa podieľali inžinieri spojení s organizáciami, ako sú Microsoft a Slack.

Aj NW.js má firemný pôvod, keďže vznikol v spoločnosti Intel. Jeho súčasný ekosystém je však menší a nemá rovnako širokú viditeľnú účasť veľkých spoločností vyvíjajúcich desktopový softvér.

Táto história ilustruje dôležitý rozdiel: byť prvý nezaručuje dlhodobú dominanciu. NW.js pomohol presadiť koncept vytvárania desktopových aplikácií pomocou Chromium a Node.js, no Electron prilákal širší ekosystém vývojárov, správcov a komerčných používateľov.

Ďalšie súvislosti nájdete v retrospektíve 10 rokov Electronu, v článku o pripojení Electronu k OpenJS Foundation a v histórii projektu node-webkit.

Architektúra: hlavné procesy verzus priama integrácia Node.js

Electron používa viacprocesovú architektúru prevzatú z Chromium. Každá aplikácia Electron má hlavný proces zodpovedný za správu okien, udalosti životného cyklu aplikácie, integráciu s operačným systémom a privilegované funkcie. Webový obsah beží v samostatných vykresľovacích procesoch, ktoré komunikujú s hlavným procesom prostredníctvom medziprocesovej komunikácie (IPC).

Tým sa oddeľuje aplikačná logika od kódu používateľského rozhrania. Vykresľovací proces sa zvyčajne správa ako bežné prostredie prehliadača, zatiaľ čo hlavný proces spracúva operácie vyžadujúce prístup k Node.js alebo natívnym API. Electron poskytuje aj prednačítavacie skripty a API contextBridge, ktoré vývojárom umožňujú sprístupniť vykresľovaciemu procesu vybrané funkcie bez udelenia neobmedzeného prístupu k Node.js.

NW.js volí iný prístup. Bol navrhnutý tak, aby funkcie Node.js sprístupňoval priamo vo webových aplikáciách. Na stránke aplikácie s príslušným oprávnením môžu vývojári pristupovať k modulom Node.js pomocou známych rozhraní JavaScript API bez vytvárania samostatného rozhrania IPC pre každú operáciu.

Napríklad lokálne zabalená aplikácia NW.js môže používať Node.js priamo zo skriptu spusteného na svojej stránke:

const fs = require('node:fs');

const content = fs.readFileSync('notes.txt', 'utf8');
document.body.textContent = content;

Táto jednoduchosť je jednou z charakteristických výhod NW.js. Vývojári môžu kombinovať API prehliadača a funkcie Node.js bez toho, aby museli svoj kód rozdeliť do samostatných aplikačných vrstiev. NW.js podporuje aj samostatné kontexty JavaScriptu a režim zmiešaného kontextu, čo poskytuje flexibilitu pri vzájomnej interakcii funkcií prehliadača a Node.js.

Electron vo všeobecnosti podporuje explicitnejšie oddelenie. Pri čítaní súboru z vykresľovacieho procesu by typická bezpečná aplikácia Electron sprístupnila obmedzenú operáciu prostredníctvom prednačítavacieho skriptu a prístup k súborovému systému by spracovala v hlavnom procese.

Tento prístup vyžaduje dodatočný kód, no zreteľnejšie vymedzuje hranicu medzi privilegovanými funkciami aplikácie a webovým obsahom. Pri zložitých aplikáciách môže toto oddelenie zlepšiť udržiavateľnosť a uľahčiť pochopenie zodpovedností v oblasti bezpečnosti.

Ani jedna architektúra nie je univerzálne lepšia. NW.js môže pôsobiť priamočiarejšie pri menších aplikáciách alebo projektoch, ktoré ťažia z priamej integrácie Node.js. Electron poskytuje štruktúru, ktorá môže byť obzvlášť užitočná s rastúcou zložitosťou aplikácie.

Výkon, využitie pamäte a veľkosť aplikácie

Keďže Electron aj NW.js obsahujú Chromium a Node.js, ani jeden framework nemá prirodzenú architektonickú výhodu porovnateľnú s rozdielom vo veľkosti medzi Electronom a Tauri.

Aj jednoduchá aplikácia vytvorená pomocou ktoréhokoľvek z týchto frameworkov musí distribuovať pomerne objemné behové prostredie. Oba frameworky môžu vytvárať aj viacero procesov Chromium, čo zvyšuje spotrebu pamäte, no pomáha izolovať úlohy a zlepšovať odozvu.

Priama integrácia Node.js s prostredím prehliadača v NW.js môže pri určitých operáciách znížiť potrebu IPC. V závislosti od konfigurácie kontextu môže kód JavaScriptu priamo pracovať s funkciami Node.js, čím sa niektoré operácie zjednodušujú a potenciálne sa znižuje komunikačná réžia.

Electron oddeľuje privilegované operácie od kódu vykresľovacieho procesu, čo pri prekračovaní hraníc procesov vyžaduje IPC. To však neznamená, že Electron je zo svojej podstaty pomalší. Dodatočná réžia môže byť pri bežných interakciách s používateľským rozhraním zanedbateľná a oddelenie môže pomôcť udržať náročné backendové úlohy mimo vykresľovacieho procesu.

V praxi výkon aplikácie výrazne závisí od toho, ako vývojári používajú Chromium, spravujú procesy na pozadí, implementujú vykresľovanie a pracujú so stavom aplikácie.

Pre zmysluplné porovnanie by mali vývojári vyhodnotiť:

  • Čas spustenia: Ako rýchlo sa aplikácia stane interaktívnou.
  • Využitie pamäte: Spotrebu v nečinnosti aj pri realistickom zaťažení.
  • Využitie CPU: Spotrebu prostriedkov pri vykresľovaní a operáciách na pozadí.
  • Veľkosť aplikácie: Veľkosť sťahovaných dát a nároky na úložisko po inštalácii.
  • Odozvu: Ako dobre sa rozhranie správa počas úloh náročných na prostriedky.

Ani jeden framework by sa nemal považovať za jednoznačne rýchlejší bez merania reprezentatívnej aplikácie. Výsledky výkonnostných testov môžu ovplyvniť rozdiely vo verziách Chromium, konfiguráciách zostavenia, natívnych moduloch aj architektúre aplikácie.

Vývojárom, ktorí chcú predovšetkým zmenšiť aplikáciu, prechod z Electronu na NW.js pravdepodobne neprinesie výrazné úspory spojené s prechodom na framework využívajúci systémový webview.

Bezpečnosť: rôzne prístupy k natívnemu prístupu

Bezpečnosť je jedným z najdôležitejších rozdielov medzi Electronom a NW.js, najmä pri aplikáciách, ktoré zobrazujú vzdialené webové stránky alebo iný nedôveryhodný obsah.

Electron poskytuje viacero bezpečnostných mechanizmov vrátane sandboxovania Chromium, izolácie kontextu a možnosti vypnúť integráciu Node.js vo vykresľovacích procesoch. Moderné verzie Electronu majú dôležité ochranné mechanizmy predvolene zapnuté a bezpečnostná dokumentácia projektu dôrazne odporúča oddeľovať privilegované natívne API od vzdialeného obsahu.

NW.js umožňuje priamejší prístup k Node.js zo stránok aplikácie s príslušným oprávnením, čo môže zjednodušiť vývoj, ale zároveň vyžaduje dôkladné zváženie, ktorému obsahu sa tieto oprávnenia udelia.

NW.js rozlišuje medzi bežnými rámcami a rámcami s povoleným Node.js. Podporuje aj nastavenia, ako je node-remote, na riadenie toho, ktoré vzdialené URL môžu pristupovať k funkciám Node.js. Jeho komponent webview dokáže zobrazovať hosťovský obsah v samostatnom procese bez toho, aby mu automaticky udelil oprávnenia aplikácie.

Bezpečnostné hľadiskoElectronNW.js
Privilegovaný prístup k Node.jsPredovšetkým hlavný proces a riadené premosteniaDostupný priamo v kontextoch aplikácie s príslušným oprávnením
Izolácia vzdialeného obsahuVykresľovacie procesy a webový obsah v sandboxeBežné rámce a izolované webview
Sprístupnenie natívnych APIIPC a contextBridgeKontexty Node.js a konfigurovateľný prístup
Sandboxovanie ChromiumPodporované s bezpečnými predvolenými nastaveniamiZávisí od typu rámca a konfigurácie
Zodpovednosť vývojáraOverovať IPC, navigáciu, oprávnenia a sprístupnené APIRiadiť privilegované rámce, prístup k Node.js a vzdialený obsah

Ani Electron, ani NW.js by sa nemali automaticky považovať za bezpečný univerzálny prehliadač. Aplikácie zobrazujúce ľubovoľné webové stránky tretích strán vyžadujú dodatočné bezpečnostné opatrenia bez ohľadu na použitý framework.

Pri aplikáciách vyvinutých výhradne pre dôveryhodný lokálny obsah môže byť priama integrácia NW.js praktická. Pri aplikáciách, ktoré potrebujú dôsledne oddeľovať privilegovaný kód od nedôveryhodného webového obsahu, môže architektúra Electronu tieto hranice zreteľnejšie vymedziť.

Bezpečnosť v konečnom dôsledku závisí od návrhu aplikácie, konfigurácie, správy závislostí a rýchlosti, s akou vývojári nasadzujú bezpečnostné aktualizácie.

Rozšírenie: Electron dominuje medzi bežnými desktopovými aplikáciami

Jedným z najvýznamnejších rozdielov medzi Electronom a NW.js je ich rozšírenie medzi vývojármi desktopového softvéru.

Napriek tomu, že je Electron mladším projektom, etabloval sa ako bežne používaný framework pre desktopové aplikácie v produkčnom nasadení. Jeho využitie zahŕňa vývojárske nástroje, komunikačné platformy, softvér na zvýšenie produktivity, dizajnérske aplikácie a podnikové nástroje.

Medzi známe príklady patria:

SpoločnosťAplikácia Electron
MicrosoftVisual Studio Code
SalesforceSlack
DiscordDiscord
NotionNotion
FigmaFigma
GitHubGitHub Desktop
SignalSignal Desktop
PostmanPostman

Tieto produkty ukazujú, že Electron dokáže podporovať sofistikované desktopové aplikácie používané miliónmi ľudí. Jeho rozšírenie zároveň prispelo k rozsiahlemu ekosystému knižníc, dokumentácie, ladiacich nástrojov a riešení na balenie aplikácií.

Ďalšou výhodou je účasť firiem. Electron pôvodne vyvinul GitHub a neskôr získal príspevky od inžinierov z veľkých technologických spoločností. Jeho správa prostredníctvom OpenJS Foundation poskytuje organizačnú štruktúru pre spoluprácu, bezpečnostnú údržbu, správu vydaní a dlhodobý vývoj.

To neznamená, že každá spoločnosť používajúca Electron priamo prispieva do frameworku, ani to nezaručuje, že Electron bude vždy lepšie udržiavaný. Široko používaný framework s rozmanitou skupinou komerčných zainteresovaných strán však môže ťažiť zo spoločných investícií do vývoja a zo skúseností z reálneho produkčného nasadenia.

NW.js má odlišný profil využitia. Hoci sa používal na vytváranie desktopových aplikácií, pomerne málo významných moderných aplikácií na zvýšenie produktivity alebo podnikových aplikácií verejne uvádza NW.js ako svoj framework. Mnohé aplikácie tradične uvádzané v prehľadoch NW.js sú staršie projekty, takže tieto zoznamy sú pri hodnotení jeho súčasného rozšírenia menej užitočné.

To neznamená, že NW.js je opustený alebo nepoužívaný. Naďalej vychádzajú jeho verzie obsahujúce aktualizované verzie Chromium a Node.js. Jeho viditeľný ekosystém v oblasti bežného desktopového softvéru je však podstatne menší než ekosystém Electronu.

Pre vývojárov, ktorí si vyberajú framework pre novú komerčnú aplikáciu, je tento rozdiel dôležitý. Väčší ekosystém vo všeobecnosti uľahčuje hľadanie existujúcich riešení, nábor vývojárov s relevantnými skúsenosťami a riešenie problémov v produkčnom prostredí.

Popularita Electronu z neho nerobí technicky lepšie riešenie v každom ohľade, no jeho širšie rozšírenie a účasť firiem predstavujú praktické výhody, ktoré by sa nemali prehliadať.

Ďalšie príklady si môžete pozrieť v oficiálnom prehľade aplikácií Electron.

Kde je NW.js stále populárny: nezávislé hry

Hoci NW.js nemá široké zastúpenie medzi významnými modernými aplikáciami na zvýšenie produktivity, naďalej má výrazné zastúpenie vo vývoji hier, najmä medzi nezávislými vývojármi.

Jedným z dôvodov je jeho integrácia s nástrojmi na vývoj hier, ako je RPG Maker MV. Hry vytvorené pomocou RPG Maker MV môžu používať NW.js ako svoje desktopové behové prostredie, vďaka čomu hry založené na HTML5 a JavaScripte bežia ako samostatné aplikácie.

To znamená, že vývojári môžu NW.js používať nepriamo prostredníctvom svojho herného enginu namiesto toho, aby si ho vybrali ako univerzálny desktopový framework.

Existujú aj nezávislé dôkazy, že NW.js sa naďalej objavuje v novo vydaných hrách. SteamDB sleduje hry používajúce NW.js automatickým skúmaním identifikačných znakov technológií v ich distribuovaných súboroch. Jeho databáza zahŕňa hry vydané v rokoch 2025 a 2026, čo poskytuje dôkaz o pokračujúcom používaní namiesto spoliehania sa výhradne na potenciálne zastarané prehľady aplikácií.

Medzi príklady spojené s NW.js patria:

HraŽánerVydanie na Steame
Look OutsideHororové RPGMarec 2025
OMORIRPGDecember 2020
CrossCodeAkčné RPGSeptember 2018
Fear & HungerHororové RPGDecember 2018
IbHororová adventúraApríl 2022
Saihate StationAdventúraMarec 2025
Sheepy: A Short AdventurePlošinovkaFebruár 2024

Zdroj: Detekcia technológie NW.js v SteamDB.

SteamDB identifikuje technológie automaticky zo súborov hier, takže jednotlivé detekcie môžu obsahovať chyby alebo predstavovať priloženú závislosť namiesto behového prostredia, ktoré si vývojár vedome vybral. Prítomnosť NW.js takisto nepreukazuje, ktorú verziu frameworku hra používa ani či ju jej vývojár aktívne udržiava.

Tieto príklady napriek tomu ukazujú, že NW.js zostáva súčasťou moderného ekosystému vývoja hier.

Vzniká tak zaujímavý rozdiel medzi týmito dvoma frameworkmi. Electron je veľmi viditeľný v bežných desktopových aplikáciách, najmä v nástrojoch na zvýšenie produktivity a vo vývojárskych nástrojoch. NW.js má v týchto kategóriách menšie zastúpenie, no naďalej sa objavuje v nezávisle vyvíjaných hrách.

Pre vývojárov vytvárajúcich podnikový softvér, komunikačné nástroje alebo zložité aplikácie na zvýšenie produktivity môže byť ekosystém Electronu relevantnejší. Pre vývojárov pracujúcich s RPG Maker alebo udržiavajúcich hry postavené na NW.js zostáva starší framework osvedčenou a praktickou voľbou.

Vývojárska skúsenosť, nástroje a dlhodobá údržba

Oba frameworky podporujú moderné frontendové technológie a balíky Node.js, vďaka čomu sú prístupné vývojárom so skúsenosťami s webovým vývojom. Electron má však podstatne väčší ekosystém zameraný na univerzálny desktopový softvér.

NW.js ponúka pomerne priamočiary vývojový model. Jednoduchú aplikáciu možno definovať pomocou manifestu package.json a vstupnej stránky HTML. Vývojári môžu pristupovať k modulom Node.js priamo zo stránok aplikácie s príslušným oprávnením a používať API NW.js na správu okien, ponúk, ikon v systémovej lište a ďalších desktopových funkcií.

Electron zvyčajne vyžaduje na začiatku viac štruktúry. Vývojári vytvárajú vstupný bod hlavného procesu, konfigurujú okná aplikácie a riadia komunikáciu medzi hlavným a vykresľovacími procesmi. Pri malých aplikáciách to môže pôsobiť zložitejšie, no zároveň to vývojárov vedie k organizácii funkcií aplikácie do samostatných vrstiev.

Electron ťaží z osvedčených nástrojov, ako sú Electron Forge a electron-builder, ktoré poskytujú riešenia na balenie, podpisovanie, distribúciu a aktualizáciu aplikácií. Jeho široké rozšírenie tiež znamená, že vývojári nájdu viac príkladov a komunitných diskusií o pokročilých problémoch pri vývoji desktopových aplikácií.

NW.js poskytuje nástroje na balenie, ako je nw-builder, a podporuje aj ručné balenie. Sprístupňuje tiež API odvodené od architektúry aplikácií a rozšírení Chromium, čo môže byť atraktívne pre projekty, ktoré už tieto API používajú.

Oba frameworky vyžadujú, aby vývojári riešili rozdiely medzi operačnými systémami, podpisovanie kódu, kompatibilitu natívnych modulov a aktualizácie aplikácií. Ani jeden neodstraňuje zložitosť distribúcie desktopového softvéru určeného do produkcie.

Veľkosť a zloženie ekosystému sú obzvlášť dôležité pri dlhodobej údržbe. Tímy vytvárajúce komerčné aplikácie môžu potrebovať riešenia na podpisovanie kódu, automatické aktualizácie, hlásenie pádov, prístupnosť, natívne integrácie a chyby špecifické pre jednotlivé platformy.

Širšie rozšírenie Electronu medzi veľkými softvérovými spoločnosťami uľahčuje hľadanie osvedčených postupov a opakovane použiteľných riešení pre mnohé z týchto požiadaviek. NW.js je naďalej schopné riešenie, no vývojári môžu nájsť menej príkladov alebo udržiavaných integrácií pre špecializované desktopové funkcie.

Pri projekte, ktorý sa má udržiavať mnoho rokov, si vyspelosť ekosystému a priebežné investície zaslúžia rovnakú pozornosť ako API frameworku či výsledky výkonnostných testov.

Prečo sme si vo WebCatalog vybrali Electron

Vo WebCatalog sme si vybrali Electron, pretože jeho architektúra 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ť svoje aplikácie v systémoch macOS, Windows a Linux.

Na rozdiel od vývojárov vytvárajúcich bežnú desktopovú aplikáciu s frontendom, ktorý majú plne pod kontrolou, musíme podporovať webové stránky vytvorené tisíckami rôznych vývojárov. Tieto stránky môžu využívať rôzne systémy overovania, mechanizmy ukladania dát, API prehliadača, multimediálne funkcie a zložité aplikácie v JavaScripte.

Electron aj NW.js používajú Chromium, takže ponúkajú podobné výhody z hľadiska kompatibility jadra prehliadača. Pre nás je rozhodujúce, akú mieru kontroly framework poskytuje nad oknami aplikácie, reláciami prehliadača, navigáciou, oprávneniami a oddelením privilegovaného kódu aplikácie od vzdialeného obsahu.

Electron poskytuje pre tieto požiadavky vyspelú súpravu API. Jeho rozhrania BrowserWindow, webContents a session nám umožňujú riadiť správanie prehliadača na pomerne nízkej úrovni. Trvalé oddiely relácií sú obzvlášť dôležité, pretože používateľom umožňujú zostať prihlásenými do viacerých účtov na tej istej webovej stránke bez zdieľania súborov cookie a ďalších údajov relácie.

NW.js tiež podporuje vložené webview, správu súborov cookie a oddiely úložiska, takže tieto možnosti nie sú výhradnou vlastnosťou Electronu. Vyhradený aplikačný proces Electronu a jeho osvedčené API na správu prehliadača však poskytujú architektúru, ktorá dobre vyhovuje našim potrebám.

Ďalším dôležitým hľadiskom je bezpečnosť. Keďže WebCatalog zobrazuje webové stránky tretích strán, ktoré nemáme pod kontrolou, musíme dôsledne oddeľovať vzdialený obsah od privilegovaných funkcií aplikácie. Procesný model Electronu, izolácia kontextu a mechanizmy IPC nám pomáhajú toto oddelenie zachovať, hoci vhodné bezpečnostné opatrenia musíme aj naďalej implementovať a udržiavať sami.

Napokon, ekosystém Electronu robí multiplatformový vývoj a údržbu praktickejšími. Naše aplikácie musia fungovať v systémoch macOS, Windows a Linux s podporou funkcií špecifických pre jednotlivé platformy, balenia, podpisovania a aktualizácií. Nástroje, dokumentácia a rozsiahle používanie Electronu v praxi poskytujú pre túto prácu pevný základ.

Ceníme si aj ekosystém dlhodobého vývoja Electronu. Účasť veľkých technologických spoločností a jeho správa prostredníctvom OpenJS Foundation nám dávajú väčšiu istotu v dostupnosť technických zdrojov, bezpečnostnej údržby a komunitnej podpory pri ďalšom rozvoji našich produktov.

Uvedomujeme si nevýhody Electronu, najmä veľkosť aplikácií a nároky na prostriedky. Namiesto nahradenia frameworku naďalej skúmame spôsoby, ako znížiť zbytočnú réžiu. Napríklad sme implementovali klony APFS na zníženie využitia disku generovanými aplikáciami pre Mac.

Naše rozhodnutie nevychádza z presvedčenia, že NW.js nedokáže podporovať sofistikovaný softvér. Oba frameworky ponúkajú konzistentnosť Chromium, ktorú si ceníme. Pre WebCatalog je však Electron vhodnejšou voľbou vďaka svojej architektúre, bezpečnostným mechanizmom, širšiemu rozšíreniu medzi bežnými aplikáciami a zavedenému vývojárskemu ekosystému.

Kde má NW.js stále zmysel

Hoci má Electron väčší ekosystém, NW.js si zachováva niekoľko významných výhod, ktoré by mali vývojári zvážiť.

Jeho najvýraznejšou vlastnosťou je možnosť pristupovať k Node.js priamo z kontextov prehliadača s príslušným oprávnením. Vývojárom, ktorí menia existujúcu webovú aplikáciu na desktopovú, to môže poskytnúť pohodlný spôsob, ako zaviesť prístup k súborovému systému, integráciu s operačným systémom a ďalšie natívne funkcie bez navrhovania samostatnej komunikačnej vrstvy.

NW.js môže byť dobrou voľbou v týchto prípadoch:

  • Vytváranie hier s existujúcou súpravou nástrojov založenou na NW.js. Vývojári používajúci RPG Maker MV alebo udržiavajúci projekty závislé od NW.js môžu mať len málo dôvodov na zmenu frameworku.
  • Priama integrácia Node.js je žiaduca. Aplikácia môže ťažiť z priameho prístupu k funkciám Node.js v rámci svojho dôveryhodného rozhrania.
  • Aplikácia je pomerne jednoduchá. Menší projekt nemusí potrebovať explicitnejšie oddelenie logiky hlavného a vykresľovacieho procesu, ktoré ponúka Electron.
  • Projekt už používa NW.js. Migrácia na Electron môže priniesť len malý úžitok, ak je existujúca aplikácia stabilná a dobre udržiavaná.
  • Dôležité sú konkrétne API aplikácií Chromium. NW.js poskytuje prístup k podporovaným API Chrome, ktoré môžu byť užitočné pre určité aplikácie.

NW.js je tiež naďalej aktívne udržiavaný. Jeho priebežné aktualizácie Chromium ukazujú, že sa naďalej vyvíja spolu s platformou prehliadača.

Pre vývojárov udržiavajúcich existujúcu aplikáciu alebo hru NW.js by prechod na Electron vyžadoval vyhodnotenie architektonických rozdielov, zmien v balení a požiadaviek na kompatibilitu. Ak neexistuje jasný technický alebo obchodný prínos, zotrvanie pri existujúcom frameworku môže byť praktickejšie.

Electron vs. NW.js: ktorý by ste si mali vybrať?

Oba frameworky sú schopné vytvárať multiplatformové desktopové aplikácie. Pri nových projektoch výber do veľkej miery závisí od toho, ako chcú vývojári štruktúrovať svoj kód a ktorý ekosystém najlepšie podporuje ich požiadavky.

Vaša prioritaLepší východiskový bodPrečo
Veľké, zložité desktopové aplikácieElectronOsvedčená architektúra a ekosystém
Bežný softvér na zvýšenie produktivity alebo podnikový softvérElectronOveľa širšie rozšírenie v týchto kategóriách
Dlhodobo fungujúci ekosystém a účasť firiemElectronOpenJS Foundation a významní prispievatelia z odvetvia
Hry vytvorené pomocou RPG Maker MVNW.jsOsvedčená integrácia a súprava nástrojov
Priamy prístup k Node.js zo stránok aplikácieNW.jsZákladná architektonická vlastnosť
Explicitné oddelenie používateľského rozhrania od privilegovaného kóduElectronModel hlavného a vykresľovacieho procesu a IPC
Rozsiahle nástroje na balenie a distribúciuElectronVyspelý ekosystém nástrojov
Existujúca aplikácia NW.jsNW.jsPredídete zbytočnej migrácii
Konzistentnosť Chromium naprieč desktopovými platformamiKtorýkoľvekOba obsahujú Chromium
Minimálna veľkosť aplikácieAni jeden nemá jasnú výhoduOba obsahujú Chromium a Node.js
Správa relácií prehliadača a okienElectronVyspelé, špecializované API
Rozsiahle komunitné zdroje a príkladyElectronVäčšie rozšírenie medzi bežnými aplikáciami

Pre väčšinu tímov, ktoré začínajú vyvíjať rozsiahlejšiu novú desktopovú aplikáciu, je Electron lepšou predvolenou voľbou. Jeho architektúra, ekosystém, bezpečnostné odporúčania, účasť firiem a rozsiahle produkčné využitie z neho robia praktický framework na dlhodobý vývoj.

NW.js stojí za zváženie pri projektoch, ktoré ťažia z priamej integrácie Node.js, pri postupoch vývoja hier, ktoré od neho už závisia, alebo pri existujúcich kódových základniach NW.js. V určitých prípadoch použitia môže byť jednoduchší a jeho základ v Chromium poskytuje širokú kompatibilitu s webovou platformou.

Vývojári by mali pamätať aj na to, že ani jeden framework nie je obzvlášť nenáročný. Ak sú hlavnými prioritami malá veľkosť aplikácie a nízka základná spotreba prostriedkov, môžu stáť za zváženie alternatívy, ako je Tauri.

Záverečné úvahy

Electron a NW.js majú viac podobností než rozdielov. Oba kombinujú Chromium a Node.js, aby vývojárom umožnili vytvárať multiplatformové desktopové aplikácie pomocou známych webových technológií. Oba podporujú moderné frameworky JavaScriptu, natívnu integráciu s operačným systémom a prepracované desktopové prostredie.

NW.js prišiel prvý a svoj prístup ku kombinovaniu Node.js s webovými technológiami predstavil ešte pred vznikom Electronu. Electron sa však následne stal rozšírenejším frameworkom pre bežné desktopové aplikácie, pričom ťažil z počiatočnej investície GitHubu, príspevkov veľkých technologických spoločností a správy prostredníctvom OpenJS Foundation.

Spôsoby ich využívania sa výrazne líšia. Electron poháňa populárne aplikácie na zvýšenie produktivity, komunikáciu a vývoj, ktoré používajú milióny ľudí. NW.js je na tomto trhu menej viditeľný, no naďalej má významné zastúpenie v nezávislých hrách vrátane titulov založených na RPG Maker a nedávno vydaných hier.

Vo WebCatalog volíme rovnaký framework ako mnohí významní vývojári desktopového softvéru. Electron nám poskytuje konzistentnosť Chromium, možnosti správy prehliadača, bezpečnostnú architektúru a multiplatformové nástroje potrebné na podporu širokej škály webových aplikácií v systémoch macOS, Windows a Linux.

NW.js nie je zastaraný a jeho pokračujúce používanie pri vývoji hier dokazuje, že zostáva užitočný. Pre vývojárov, ktorí začínajú vytvárať novú univerzálnu desktopovú aplikáciu, však širší ekosystém Electronu, osvedčené nástroje, účasť firiem a väčšia komunita robia z Electronu praktickejšiu predvolenú voľbu.

Lepšia voľba v konečnom dôsledku závisí od požiadaviek aplikácie, skúseností vývojového tímu a dlhodobých nákladov na údržbu softvéru.

Súvisiace články