Node-Webkit vs Electron [zamknięte]

81

Planujemy zbudować wieloplatformową aplikację desktopową. Odkryliśmy, że Node-Webkit jest dla nas idealnym wyborem. Ale GitHub opracował własny framework o nazwie Electron zamiast używać Node-Webkit.

Jaka jest różnica między nimi?

Fizer Khan
źródło
2
E lectron vs N W.js (kwiecień 2017). Pytania dotyczące Stackoverflow E: 2630 vs N: 269 , Github pull request E: 102 vs N: 6 , aplikacje zbudowane na Electron vs NW.js i wreszcie Google Trends - Electron wydaje się lepszym wyborem.
kinjelom
Wybrałem „nw.js”, ponieważ mogę po prostu wskazać go na mój „index.html” i po prostu działa. Z „nw.js” czuję, że programuję dla przeglądarki z dodanym „node.js” zamiast „node.js” z przeglądarką przykręconą do górnego podejścia „Electron” - i moim zdaniem jest to lepszy paradygmat i podejście.
Daniel Sokolowski

Odpowiedzi:

79

Electron ma stronę wyjaśniającą różnice między pakietem node-webkit:

https://github.com/atom/electron/blob/master/docs/development/atom-shell-vs-node-webkit.md

Podobnie jak Node-Webkit, Electron zapewnia platformę do pisania aplikacji komputerowych z JavaScript i HTML, a także ma integrację z Node, aby zapewnić dostęp do systemu niskiego poziomu na stronach internetowych.

Ale istnieją również fundamentalne różnice między dwoma projektami, które sprawiają, że Electron jest całkowicie oddzielnym produktem od Node-Webkit:

1 - Zgłoszenie wniosku

W NW.js głównym punktem wejścia do aplikacji jest strona internetowa lub skrypt JS. W pliku package.json określasz plik html lub js i jest on otwierany w oknie przeglądarki jako główne okno aplikacji (w przypadku punktu wejścia html) lub skrypt jest wykonywany.

Podczas gdy w Electronie punktem wejścia jest skrypt JavaScript, zamiast bezpośrednio podawać adres URL, musisz ręcznie utworzyć okno przeglądarki i załadować w nim plik html z odpowiednim API. Musisz także nasłuchiwać zdarzeń okna, aby zdecydować, kiedy zamknąć aplikację.

Więc Electron działa bardziej jak środowisko uruchomieniowe Node.js, a interfejsy API są niższego poziomu, możesz również używać Electron do celów testowania w sieci, takich jak phantomjs,

2 - Zbuduj system

Aby uniknąć złożoności budowania całego Chromium, Electron używa libchromiumcontent do uzyskiwania dostępu do Content API Chromium, libchromiumcontent to pojedyncza, współdzielona biblioteka, która zawiera moduł Chromium Content i wszystkie jego zależności. Dlatego użytkownicy nie potrzebują potężnej maszyny do budowania powłoki atomowej.

3 - Integracja węzłów

W Node-Webkit integracja węzła ze stronami internetowymi wymaga łatania Chromium do działania, podczas gdy w Electron wybraliśmy inny sposób integracji pętli libuv z pętlą komunikatów każdej platformy, aby uniknąć hakowania Chromium, zobacz kod node_bindings, aby to zrobić.

4 - Wielokontekstowy

Jeśli jesteś doświadczonym użytkownikiem Node-Webkit, powinieneś być zaznajomiony z koncepcją kontekstu węzła i kontekstu internetowego, koncepcje te zostały wymyślone ze względu na sposób implementacji Node-Webkit.

Korzystając z funkcji multi-kontekstowej Node, Electron nie wprowadza nowego kontekstu JavaScript na stronach internetowych.

Ochrona kodu źródłowego

Electron pakuje swoje aplikacje za pomocą narzędzia asar , który zawiera niezabezpieczony kod źródłowy aplikacji. Dzięki temu aplikacja 1 może wyodrębnić aplikację 2 i wstrzyknąć wrażliwe skrypty bez wiedzy użytkownika. Możesz sprawdzić ten projekt na GitHub, aby zobaczyć przykład, jak manipulować aplikacją Slack na przykład. Na razie zespół Electron nie planuje implementacji obsługi ochrony kodu źródłowego .

NW.js ma wbudowaną obsługę kompilowania kodu źródłowego do chronionych plików binarnych .

max collomb
źródło
3
Teraz nazwa node-webkit została zmieniona na NW
Marwen Trabelsi.
70
Może to być nieco stronnicze w kierunku Electron, ponieważ ten artykuł pochodzi z repozytorium Electrona.
gbmhunter
7
nw.js może uruchamiać aplikacje Chrome natychmiast po wyjęciu z pudełka. Jest to cenne dla wielu programistów, których aplikacje w Chrome Web Store wkrótce zostaną osierocone.
marlar
16
Ostatnio próbowałem używać obu i napisałem o tym na blogu . Odkryłem, że nw.js jest w rzeczywistości prostszy i łatwiejszy w użyciu niż Electron. Dość łatwo jest po prostu pobrać niektóre strony internetowe i wrzucić je do nw.js i gotowe. Electron jest trudniejszy w konfiguracji, a ich wieloprocesowa konstrukcja oznacza, że ​​musisz przeskakiwać przez obręcze, nawet aby robić proste rzeczy. Electron ma jednak znacznie bogatszy interfejs API integracji platformy, umożliwiający szersze korzystanie z natywnych funkcji Mac / Windows / Linux w Twojej aplikacji.
Ming-Yee Iu
3
Znalazłem też najpierw przeglądarkę NW.js z dodanym projektem Node.js o wiele rozsądniejszy i łatwiejszy w obsłudze niż podejście firmy Electron do Node.js z przykręconą obsługą przeglądarki. W NW.js koduję dla przeglądarki, z Electron koduję dla Node.js.
Daniel Sokolowski