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

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

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

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

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

5 ответов

Решение

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

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

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

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

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

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

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

Я играл с 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.

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

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

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

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

В вики можно увидеть гораздо больше, в том числе Меню, Поднос и т. Д.

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

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

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

  • Поддержка функций HTML5, CSS3, JS. HTML5 видео не работает "из коробки", но его очень легко включить (по умолчанию файл ffmpegsumo.dll не копируется в установщик, если вы измените скрипт для его копирования, он будет работать).
  • панель меню ссобственными функциями, "открыть файл с помощью", доступ к файловой системе. Я не использую ничего из этого, так как все, что мне нужно, это связь с процессом узла.
  • Расширяемость nodejs встроена, и вы можете общаться с узлом из вашего веб-приложения. Таким образом, вы можете использовать узел для доступа к файловой системе и т. Д.
  • архитектура Проект хорошо настроен, хорошо разделяя проект оболочки и работающее в нем ваше веб-приложение. В вашем собственном приложении доступен глобальный объект-оболочка, который дает вам доступ к функциональности скобок (доступ к файловой системе, связь с процессом узла,...).

Стоит отметить, что 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 отказался от пиара, чтобы исправить определенные ошибки 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 для более новых ОС.

Другие вопросы по тегам