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?
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?
Odpowiedzi:
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 .