Мы планируем создать кроссплатформенное настольное приложение. Мы обнаружили, что 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 для доступа к 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 имеет встроенную поддержку компиляции исходного кода в защищенные двоичные файлы .