Node -Webkit vs Electron

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

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

Ответ 1

Электрон имеет страницу, объясняющую различия с 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 script. Вы указываете файл html или js в package.json, и это открывается в окне браузера в качестве главного окна приложения (в случае точки входа html) или выполняется script.

В элементе Electron точкой входа является JavaScript script, вместо прямое URL-адрес, вам необходимо вручную создать окно браузера и загрузите html файл в него с соответствующим API. Вы также должны слушайте события окна, чтобы решить, когда выйти из приложения.

Итак, Electron работает больше, чем во время выполнения Node.js, а API - ниже. уровне, вы также можете использовать Electron для целей веб-тестирования, например phantomjs,

2 - Сборка системы

Чтобы избежать сложностей построения всего хрома, Electron использует libchromiumcontent для доступа к Xromium Content API, libchromiumcontent - это отдельная разделяемая библиотека, которая включает в себя Chromium Content и все его зависимости. Поэтому пользователям не нужны мощная машина для сборки атомной оболочки.

3 - Node интеграция

В node -Webkit интеграция Node на веб-страницах требует исправления Хром работать, в то время как в Electron мы выбрали другой способ интегрируйте цикл libuv в каждый цикл сообщений платформы, чтобы избежать взлома Chromium, см. Код node_bindings для того, как это было сделано.

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

Если вы опытный пользователь node -Webkit, вы должны быть знакомы с концепцией контекста Node и контекстом сети, эти концепции были изобретен из-за того, как был реализован node -Webkit.

Используя мультиконтективную функцию Node, Electron не вводит новый контекст JavaScript на веб-страницах.

Защита исходного кода

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

NW.js имеет встроенную поддержку для компиляции исходного кода в защищенные двоичные файлы.