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

81

Мы планируем создать кроссплатформенное настольное приложение. Мы обнаружили, что Node-Webkit - идеальный выбор для нас. Но GitHub разработал собственный фреймворк под названием Electron. вместо использования Node-Webkit.

В чем разница между ними?

Физер Хан
источник
2
E lectron vs N W.js (апрель 17 г.). Вопросы по стеку 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' - и это, на мой взгляд, лучшая парадигма и подход.
Daniel Sokolowski
Хорошее прочтение: tangiblejs.com/posts/nw-js-and-electron-compared-2016-edition
Daniel Sokolowski

Ответы:

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 для доступа к Chromium Content API, 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
Марвен Трабелси 01
70
Это могло быть слегка предвзято в отношении Electron, поскольку эта статья была взята из репозитория Electron.
gbmhunter
7
nw.js может запускать приложения Chrome прямо из коробки. Это ценно для многих программистов, чьи приложения в Интернет-магазине Chrome скоро останутся сиротами.
marlar 05
16
На самом деле я недавно пробовал использовать оба и написал об этом в блоге . Я обнаружил, что nw.js на самом деле проще и проще в использовании, чем Electron. Достаточно легко просто взять несколько веб-страниц и поместить их в nw.js и начать. Electron сложнее настроить, а их многопроцессорный дизайн означает, что вам придется прыгать через обручи даже для того, чтобы делать простые вещи. Electron имеет гораздо более богатый API интеграции платформ, что позволяет вам более широко использовать собственные функции Mac / Windows / Linux в вашем приложении.
Ming-Yee Iu
3
Я также обнаружил, что сначала браузер NW.js с добавленным дизайном Node.js намного разумнее и проще в работе, чем подход Electron к Node.js с закрепленной сверху поддержкой браузера. С NW.js я кодирую для браузера, с Electron я кодирую для Node.js.
Daniel Sokolowski