В чем функциональные различия между NW.js, Brackets-Shell и Electron?

Теперь, когда TideSDK фактически мертв, я искал альтернативные «оболочки» для запуска приложений HTML / CSS / JS в качестве автономных настольных приложений. До сих пор я встречал три жизнеспособных варианта: NW.js (ранее node-webkit) , brackets-shell и Электрон (ранее - атом-оболочка).

Проблема в том, что, похоже, нет достаточно полного сравнения между тремя с точки зрения набора функций, совместимости и т. Д. Я надеюсь превратить это в более или менее канонический тред в отношении (объективных) различий между три, в частности, в отношении:

  • Поддержка платформы; операционные системы, зависимости и т. д.
  • Поддержка языковых функций в том, что касается HTML5, CSS3 и JavaScript. Подумайте, например, «работает ли видео HTML5, и если да, то какие кодеки доступны?»
  • Нестандартные дополнительные функции, такие как значки в области уведомлений, всплывающие уведомления и строки меню, отображаемые в ОС.
  • Расширяемость; например. возможность «встраивать» собственный код, общаться с Node.js и т. д.
  • Архитектура; в частности, архитектурные различия, влияющие на повседневное использование в качестве разработчика.
  • Отладка; включены инструменты разработки, совместимость с часто используемыми инструментами, такими как node-inspector и т. д.
  • ... и так далее.

Какие объективные технические различия имеют значение при выборе между ними как разработчиком приложения?


person Sven Slootweg    schedule 19.05.2014    source источник
comment
Удалось ли вам за это время разглядеть различия? Могу покопаться в эти выходные   -  person stefan    schedule 02.06.2014
comment
@stefan Нет, нет: / Я немного поэкспериментировал с node-webkit в практическом смысле, но еще не продвинулся дальше. Не удосужился искать официальную документацию о различиях ...   -  person Sven Slootweg    schedule 04.06.2014
comment
Итак, вот основные различия между node-webkit и atom-shell, описанные командой atom-shell: github.com/atom/atom-shell/blob/master/docs/development/.   -  person sepulchered    schedule 06.06.2014
comment
Как насчет слона в комнате: отладка. Я использовал nw.js и обнаружил, что при разработке на платформе linux совсем не хватает отладки. Для разработки больших приложений отладка является важной функцией IMO. Можем ли мы добавить отладку в список желаемых функций, о которых следует поговорить?   -  person Timothy C. Quinn    schedule 08.05.2015
comment
@JavaScriptDude Спасибо, я добавил это в список.   -  person Sven Slootweg    schedule 08.05.2015
comment
Отладка @JavaScriptDude в NW.js очень похожа на отладку любого js. Единственная уловка - убедиться, что файл package.json для вашего приложения имеет window: {toolbar: true}, как только это будет сделано, есть кнопка для открытия консоли отладки /   -  person John W. Clark    schedule 16.09.2015
comment
@Джон. Спасибо, я знаю о различных способах отладки nw.js и других. Я говорю о том, что при сравнении различных фреймворков на основе хрома важно учитывать, как они различаются в зависимости от возможностей отладки. Существует вероятность того, что они немного различаются по реализации и имеют возможность оптимизировать процесс отладки для разработчиков. ИМО, отладка - одна из важнейших функций при разработке сложного программного обеспечения.   -  person Timothy C. Quinn    schedule 17.09.2015


Ответы (5)


Я провел подобное исследование около двух месяцев назад и в конце концов выбрал node-webkit. Самым большим преимуществом node-webkit является node.js и npm. Управление пакетами в npm действительно хорошее, и у узла есть хороший доступ к файловой системе.

Brackets-shell выглядела интересно, но, кроме красивой IDE, я действительно не понял, что делает ее такой же хорошей или лучше, чем остальные. Они очень ясно заявляют, что «оболочка скобок поддерживается только для использования проектом скобок», что крики убегают ко мне.

https://github.com/adobe/brackets-shell#overview

Кажется, что оболочка Atom была недавно активна, но она очень похожа на скобки в том смысле, что они действительно пишут и редактор / IDE, который просто прикреплен к среде выполнения webkit. Он также построен поверх node.js. У этого есть обратная сторона: его трудно искать в Интернете, не напоминая о химии в средней школе.

Мне действительно не нужен новый редактор, а у большинства программистов уже есть любимый. Для фактической разработки приложений они в значительной степени работают одинаково и должны, поскольку все они используют webkit. Вы в основном пишете 90-95% его как веб-сайт, а затем занимаетесь нативными частями и некоторой конфигурацией.

Это верно для всех трех платформ - работает на Windows, Mac и поддерживает языки Linux - HTML5, CSS3 и Javascript: поскольку они запускают javascript, вы можете загрузить и запустить практически любую библиотеку / фреймворк, которые захотите.

Большой недостаток webkit - поддержка кодеков. Обычно у вас будут проблемы с платными видеокодеками, если вы не перестроите dll / so для их поддержки. Например, поставляемый node-webkit не будет воспроизводить видео в формате mp4.

person John W. Clark    schedule 09.06.2014
comment
Не могли бы вы уточнить, есть ли разница в воспроизведении MP4 в скобках-оболочке и атом-оболочке? Из вашего ответа неясно, является ли это причудой в большинстве дистрибутивов WebKit или просто в node-webkit. - person Sven Slootweg; 10.06.2014
comment
Воспроизведение MP4 связано с проблемой webkit. Вы должны помнить, что webkit - это действительно хром в глубине души, и, если AV-технология не открыта и не бесплатна, они не поддерживают ее из коробки. Стандартный ответ - заменить / пересобрать ffmpegsumo. Замена его на один из вашей текущей установки Chrome, похоже, работает достаточно хорошо. - person John W. Clark; 11.06.2014
comment
Просто так получилось, что Brackets построен на bracket-shell, а Atom построен на atom-shell, но вы можете использовать любой редактор или IDE по выбору для создания кода с ними. Я думаю, что OP хочет больше о технических различиях между 3. Было бы приятно увидеть что-то вроде TodoMVC в трех средах выполнения. - person Ehtesh Choudhury; 08.11.2014
comment
@SvenSlootweg Поддержка кодеков больше связана с библиотеками, используемыми с используемым вами webkit. Все трое используют Chromium в качестве основы webkit, поэтому все они имеют одинаковые проблемы с кодеками и могут быть решены одинаково. - person John W. Clark; 18.11.2014

Я играл с Atom-Shell последние несколько дней, и мне очень нравится это пока.

Самое приятное в этом то, что он поддерживается GitHub ... что должно позволить вам освоиться на платформе в долгосрочной перспективе, особенно если она получит большое количество поклонников. Это также стало возможным благодаря прямым улучшениям Node.js благодаря контракту с StrongLoop, который крупный участник Node.js (они утверждают, что нанимают больше разработчиков ядра Node.js, чем любая другая компания, даже Joyent).

Мне также было довольно удобно начать работу. Мне потребовалось около дня, чтобы изучить структуру и получить первое доказательство работоспособности концепции. Очень круто.


Отверстия от пуль:

  • Поддержка платформ: Windows, Linux, Mac OSX (дополнительная информация здесь)
  • Поддержка языковых функций: HTML5, CSS3, JS через Chromium - пока нет проблем, но я специально не тестировал видео.
  • Встроенные функции: встроенные меню приложений, поддержка панели задач, глобальные горячие клавиши, поддержка обработчика протоколов (что я видел до сих пор).
  • Расширяемость: отличная интеграция с Node.js, и клиент, и сервер могут «требовать» модули и собственные компоненты Node.js. Я также без проблем протестировал библиотеки Bower (включая jQuery).
  • Архитектура: покрыта другими пунктами, но в целом все очень гладко.

Обновление (25.11.14): я еще не нашел варианта использования Atom-Shell в каком-либо официальном качестве, но я использовал его для создания нескольких небольших приложений для собственного использования, Самая сложная из них - это приложение, которое извлекает мои журналы учета рабочего времени из моего программного обеспечения PM и создает счета Paypal.

Мое мнение о платформе остается положительным. Это довольно круто.

В моем приложении для выставления счетов-фактур я успешно ввел пример шаблона панели управления Bootstrap 3 и несколько узловых модулей (bluebird, Paypal SDK, Teamwork PM Client) для создания приложения средней сложности. Это заняло у меня несколько дней и хорошо справляется со своей задачей.

Я действительно не могу придумать ничего плохого, чтобы сказать об Atom-Shell, его прочном, стабильном, быстром и простом коде. Я надеюсь, что это помогает кому-то.

person Luke Chavers    schedule 11.08.2014
comment
Можете ли вы подробнее рассказать о различиях, в частности, с node-webkit? Насколько я могу судить, все (большинство?) Из этих пунктов также предлагаются node-webkit, но я не уверен, что мне чего-то не хватает. - person Sven Slootweg; 12.08.2014
comment
привет, люк, можно ли самостоятельно обновить приложение атомной оболочки ...? - person Munish Kapoor; 24.11.2014
comment
@SvenSlootweg Извините, я пропустил ваш комментарий несколько месяцев назад; К сожалению, я плохо разбираюсь в node-webkit и не могу эффективно сравнить их. Но я прочитал эту статью StrongLoop, что, по крайней мере, указывает на то, что Atom-Shell открыла новые горизонты. : \ - person Luke Chavers; 25.11.2014
comment
@MunishKapoor Для разработки? Вы можете скачать последнюю версию. Я более или менее просто переименовываю старый каталог Atom и заменяю его новым. У них может быть какой-то шикарный процесс, такой как обновление npm, но я его не исследовал. Я не думаю, что для обновления вашего приложения + атомной оболочки на клиенте они обращаются к этому напрямую (вообще) и, по-видимому, ожидают, что вы будете использовать для этого установщик или другую внешнюю платформу. Я нашел эту статью в их документации Хотя интересно. - person Luke Chavers; 25.11.2014
comment
Вариант использования? - Играл с приложениями Chrome, в частности с Webview. Сценарий использования создает поведение, подобное API, для веб-сайтов, которые не предлагают API для своих данных, а их данные XHR обычно труднодоступны. Рабочий процесс через приложения Chrome немного неуклюж, поэтому я ищу альтернативы, такие как Atom-Shell. - person user1541413; 29.12.2014
comment
@LukeChavers Есть ли что-то похожее на снапшот v8 для атомной оболочки? - person Moonwalker; 02.02.2015
comment
@Moonwalker Да, для упаковки он использует приложение под названием Asar. (см .: Упаковка приложений) . Я также только что нашел это Сравнение Node-Webkit / Atom-Shell. - person Luke Chavers; 03.02.2015
comment
Не могли бы вы взглянуть на этот вопрос: stackoverflow.com/questions/37797780/ - person Vishal; 13.06.2016

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

В вики есть на что посмотреть, в том числе Menu, Tray и т. Д.

person Roger Wang    schedule 06.05.2015
comment
+1 в режиме киоска Роджер. Я вижу, что это функция, которую я буду использовать в будущем. Надеюсь, возможности отладки улучшатся, так что я могу остаться на nw.js, однако прямо сейчас я серьезно подумываю о переходе на Atom Electron на некоторое время, чтобы проверить, что происходит. Я обнаружил, что отладка в nw.js немного не нравится. - person Timothy C. Quinn; 08.05.2015
comment
Меня немного беспокоит включение в него защиты источника JS - он принадлежит к тому же классу, что и DRM, в том смысле, что он не работает. Он защищает только от тех, от кого вам не нужно было защищаться с самого начала. Не похоже на то, что мне следует рекламировать как функцию. - person Sven Slootweg; 08.05.2015
comment
Это не похоже на DRM для Интернета - программисты JS должны иметь возможность делать все, что могут делать программисты на C ++, включая компиляцию исходного кода в машинный код, когда они разрабатывают собственные приложения. - person Roger Wang; 08.05.2015
comment
@JavaScriptDude вы имеете в виду инструменты разработчика? В следующей версии (0.13) работа будет почти такой же, как в браузере Chrome. - person Roger Wang; 08.05.2015
comment
@Роджер. Приносим извинения за задержку с ответом. Да, инструменты разработчика. Я обнаружил, что существуют следующие ограничения, некоторые из которых, скорее всего, присутствуют в самих инструментах разработки: 1) Отсутствие отладки запускаемых новых окон. 2) Удаленная отладка никогда не работала. 3) Невозможность вспомнить точки останова, наблюдать за открытыми переменными и источниками (каждый раз при перезапуске приложения все настройки сбрасываются) 4) (самое важное) Невозможность отлаживать код, загруженный с помощью require (). - person Timothy C. Quinn; 12.05.2015
comment
@RogerWang Компиляция исходного кода в машинный код - это побочный продукт работы скомпилированных языков. Он не предназначен для защиты исходного кода. Я возражаю против этого пункта исключительно из-за предположения, что он каким-либо образом защищает ваш код (а это не так). - person Sven Slootweg; 08.06.2015

Я уже некоторое время работаю с скобками-оболочкой, вот некоторые из моих выводов:

  • brackets-shell в основном разрабатывается как оболочка в рамках проекта IDE скобок, но проект может запускать любое веб-приложение. Вам просто нужно указать его на свою собственную html-страницу. Клинт Берри написал отличный учебник по этому поводу: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/
  • Проект поддерживается Adobe и активно развивается.
  • Документация могла быть лучше

  • поддержка платформы. Они поддерживают Windows, Mac и Linux. Также можно создать установочный пакет. Я тестировал только на Win и Mac, работает отлично.

  • поддержка функций html5, css3, js. Видео в формате Html5 не работает из коробки, но его очень легко включить (по умолчанию файл ffmpegsumo.dll не копируется в установщик, если вы измените скрипт для его копирования, он будет работать).
  • собственные функции, строка меню, "открыть файл с помощью", доступ к файловой системе. Я не использую ничего из этого, так как все, что мне нужно, - это связь с процессом узла.
  • расширяемость встроен в nodejs, и вы можете общаться с node из своего веб-приложения. Таким образом, вы можете использовать узел для доступа к файловой системе и т. Д.
  • архитектура. Проект хорошо настроен, сохранено четкое разделение между проектом оболочки и вашим собственным веб-приложением, работающим внутри него. В вашем собственном приложении доступен глобальный объект оболочки приложения, который дает вам доступ к функциям скобок (доступ к файловой системе, связь с процессом узла, ...).
person Karel Braeckman    schedule 21.08.2014
comment
То, что заставило меня держаться подальше от Brackes-shell, было их собственным обзором. github.com/adobe/brackets-shell Примечание. Оболочка скобок предназначена только для использования. проектом Brackets. Хотя некоторые люди определенно добились успеха, используя его в качестве оболочки приложения для других проектов, мы не предоставляем официальной поддержки для этого, и мы не проделали тонну работы, чтобы сделать оболочку приложения легко повторно используемой. Многим, вероятно, будет проще использовать такой проект, как node-webkit, который является более универсальным по дизайну. - person John W. Clark; 18.11.2014

Следует отметить (если вам интересно), что Electron официально не поддерживает Windows Vista. Доля рынка Vista составляет примерно на полпути между OSX 10.9 и 10.10 (оба из которых полностью поддерживаются Electron). Vista также по-прежнему поддерживается Microsoft до 2017 года.

NW.js отлично работает в Vista, а также в OSX 10.9+. NW.js работает с Ubuntu, Debian, Zorin, Manjaro, Arch и большинством других ОС Linux на базе Debian. Electron отказался от PR для исправления специфических ошибок Ubuntu на своей платформе, что вызывает обеспокоенность.

NW.js работает и в XP. В настоящее время 18% рынка все еще находится на XP. Поэтому, если ваше настольное приложение более общего назначения или вы хотите иметь доступ к поздним пользователям, которые все еще используют XP, вам, вероятно, лучше использовать NW.js (0.14.7), поскольку Electron поддерживает только Win 7 и выше.

Если вы используете NW.js 0.12.3, вы также можете поддерживать OSX 10.6+ и очень старые версии ОС Linux на основе Debian, такие как Ubuntu и Win XP +. Тем не менее, рекомендуется делать специальные сборки только для этих устаревших систем и использовать более новые версии NW.js для новых ОС.

person Jaredcheeda    schedule 02.01.2015
comment
Chrome не прекратил поддержку после того, как это сделала MS - поддержка была продлена до конца 2015 года - chrome.blogspot.com/2015/04/. - person Karol Klepacki; 07.07.2015
comment
electronic (atom-shell) не работает на RHEL 6.6 и ниже, и исходный код не может быть скомпилирован на этих дистрибутивах. - person Michael Kruglos; 22.07.2015
comment
comment
Вы можете использовать nw-builder для создания версий MAS. Также существуют сборки рук для NW.js. - person Jaredcheeda; 02.09.2017