Node-Webkit проти Electron [закрито]


81

Ми плануємо створити крос-платформний настільний додаток. Ми виявили, що Node-Webkit - ідеальний вибір для нас. Але GitHub розробив власну структуру під назвою Electron замість використання Node-Webkit.

Яка різниця між ними?


2
Е лектрон проти N W.js (квітень'17). Запитання щодо Stackoverflow E: 2630 проти N: 269 , запити на витяг Github E: 102 проти N: 6 , програми, побудовані на Electron проти NW.js і, нарешті, Google Trends - Electron, здається, є кращим вибором.
kinjelom

Я вибрав 'nw.js', оскільки я можу просто вказати його на мій 'index.html', і він просто працює. З "nw.js" я відчуваю, ніби програмую для браузера з доданим "node.js" замість "node.js" з браузером, прикріпленим до верхнього підходу "Electron" - і це, на мій погляд, є кращою парадигмою і підійти.
Даніель Соколовський

Відповіді:


79

У Electron є сторінка, що пояснює відмінності з node-webkit:

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

Як і Node-Webkit, Electron надає платформу для написання настільних додатків з використанням JavaScript та HTML, а також інтеграцію Node для надання доступу до системи низького рівня на веб-сторінках.

Але існують також принципові відмінності між двома проектами, які роблять Electron абсолютно окремим продуктом від Node-Webkit:

1 - Вступ заявки

У NW.js основною точкою входу програми є веб-сторінка або сценарій JS. Ви вказуєте файл html або js у файлі package.json, і він відкривається у вікні браузера як головне вікно програми (у випадку точки входу html) або виконується сценарій.

Перебуваючи в Electron, точкою входу є сценарій JavaScript, замість того, щоб надавати URL-адресу безпосередньо, вам потрібно вручну створити вікно браузера і завантажити в нього HTML-файл із відповідним API. Вам також потрібно прослухати події вікна, щоб вирішити, коли залишити програму.

Таким чином Electron працює більше як час виконання Node.js, а API на нижчому рівні, ви також можете використовувати Electron для веб-тестування, наприклад phantomjs,

2 - Побудова системи

Щоб уникнути складності побудови цілого Chromium, Electron використовує libchromiumcontent для доступу до API вмісту Chromium, libchromiumcontent - це єдина спільна бібліотека, що включає модуль Chromium Content та всі його залежності. Тому користувачам не потрібна потужна машина для побудови атомної оболонки.

3 - Інтеграція вузлів

У Node-Webkit інтеграція Node на веб-сторінках вимагає виправлення Chromium для роботи, тоді як у Electron ми вибрали інший спосіб інтеграції циклу libuv у цикл повідомлень кожної платформи, щоб уникнути злому Chromium, див. Код node_bindings про те, як це було зроблено.

4 - Мультиконтекст

Якщо ви досвідчений користувач Node-Webkit, вам слід знати поняття контексту Node та веб-контексту, ці концепції були винайдені завдяки тому, як було реалізовано Node-Webkit.

Використовуючи багатоконтекстну функцію Node, Electron не представляє новий контекст JavaScript на веб-сторінках.

Захист вихідного коду

Electron упаковує свої програми в систему asar , яка містить незахищений вихідний код програм. Це дозволяє додатку 1 витягувати додаток 2 та вводити вразливі сценарії, не знаючи про це користувача. Ви можете перевірити цей проект на GitHub, щоб побачити приклад того, як маніпулювати програмою Slack для прикладу. На даний момент команда Electron не планує впроваджувати підтримку захисту вихідного коду .

NW.js має вбудовану підтримку для компіляції вихідного коду для захищених виконуваних файлів .


3
Тепер node-webkit перейменовано на NW
Marwen Trabelsi

70
Це може бути трохи упередженим щодо Electron, оскільки ця стаття надійшла з репозиторію Electron.
gbmhunter

7
nw.js може запускати програми Chrome нестандартно. Це є цінним для багатьох програмістів, чиї програми у веб-магазині Chrome незабаром залишаться сиротами.
марлар

16
Насправді я нещодавно намагався використовувати обидва, і написав про це в блозі . Я виявив, що nw.js насправді простіший і простіший у використанні, ніж Electron. Досить легко просто взяти кілька веб-сторінок і додати їх до nw.js і піти. Електрон складніший у налаштуванні, і їх багатопроцесорна конструкція означає, що вам доведеться перескакувати обручі навіть для того, щоб робити прямі речі. Electron має набагато багатший API інтеграції платформи, що дозволяє ширше використовувати власні функції Mac / Windows / Linux у вашому додатку.
Ming-Yee Iu

3
Я також знайшов браузер NW.js спочатку, а Node.js додав дизайн набагато розумніший і простіший у роботі, ніж підхід Electron до Node.js з підтримкою браузера, прикріпленою зверху. З NW.js я кодую для браузера, з Electron я кодую для Node.js.
Даніель Соколовський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.