Ми плануємо створити крос-платформний настільний додаток. Ми виявили, що Node-Webkit - ідеальний вибір для нас. Але GitHub розробив власну структуру під назвою Electron замість використання Node-Webkit.
Яка різниця між ними?
Ми плануємо створити крос-платформний настільний додаток. Ми виявили, що Node-Webkit - ідеальний вибір для нас. Але GitHub розробив власну структуру під назвою Electron замість використання Node-Webkit.
Яка різниця між ними?
Відповіді:
У 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 має вбудовану підтримку для компіляції вихідного коду для захищених виконуваних файлів .