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

151

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

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

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

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

Свен Слотвег
источник
Вам повезло, глядя на различия между тем? Можете покопаться на этих выходных
Стефан
@stefan Пока нет, нет: / Я немного поэкспериментировал с node-webkit в практическом смысле, но пока не вышел за рамки этого. Не
удосужились
3
Итак, вот основные различия между node-webkit и atom-shell, выделенные командой atom-shell, github.com/atom/atom-shell/blob/master/docs/development/… .
отгорожен
2
Как насчет слона в комнате: отладка. Я использовал nw.js и обнаружил, что при разработке платформы linux совершенно не хватает отладки. Для разработки больших приложений отладка является важной особенностью IMO. Можем ли мы добавить отладку в список желаемых функций для общения?
Тимоти К. Куинн
@JavaScriptDude Спасибо, я добавил это в список.
Свен Слотвег

Ответы:

42

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

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

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

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

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

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

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

Джон В. Кларк
источник
Не могли бы вы уточнить, есть ли какая-либо разница в отношении воспроизведения MP4 в скобках-оболочке и атом-оболочке? Из вашего ответа не ясно, является ли это причудой в большинстве дистрибутивов WebKit или просто в node-webkit.
Свен Слотвег
Проблема воспроизведения MP4 - это проблема webkit. Вы должны помнить, что webkit действительно хром в глубине души, и если технология AV не является открытой и бесплатной, они не поддерживают ее «из коробки». Стандартный ответ - заменить / перестроить ffmpegsumo. Замена его на одну из текущей установки Chrome, кажется, работает довольно хорошо.
Джон У. Кларк
1
Просто так получилось, что Brackets построен на основе bracket-shellAtom atom-shell, но вы можете использовать любой редактор или IDE по своему выбору для создания кода с ними. Я думаю, что OP хочет больше технических различий между 3. Было бы приятно увидеть что-то вроде TodoMVC в трех средах, подобных среде исполнения.
Этеш Чоудхури
@SvenSlootweg поддержка кодеков - это больше о библиотеках, используемых с веб-набором, который вы используете. Все трое используют Chromium в качестве базы веб-наборов, поэтому у них у всех одинаковые проблемы с кодеками, и их можно решить одинаково.
Джон В. Кларк
40

Я играл с 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, его прочном, стабильном, быстром и простом в написании кода. Я надеюсь, что это поможет кому-то.

Люк Чейверс
источник
Можете ли вы рассказать о различиях с node-webkit в частности? Насколько я могу судить, все (большинство?) Из этих пунктов также предлагаются node-webkit, но я не уверен, что, возможно, что-то упускаю.
Свен Слотвег
привет, Люк, можно ли обновить приложение atom-shell самостоятельно ...?
Муниш Капур
@SvenSlootweg Извините, я пропустил ваш комментарий несколько месяцев назад; К сожалению, я не очень хорошо разбираюсь в node-webkit и не могу их эффективно сравнить. Но я прочитал эту статью о StrongLoop , которая, по крайней мере, указывает на то, что Atom-Shell открыла новые возможности. : \
Люк Чейверс
@MunishKapoor Для развития? Вы можете скачать последнюю версию. Я более или менее просто переименую старый каталог атомов и заменим его новым. У них может быть какой-то шикарный процесс, такой как «npm update» - но я его не исследовал. Для обновления вашего app + atom shell на клиенте я не думаю, что они обращаются к этому напрямую (вообще), и, вероятно, ожидают, что вы будете использовать для этого установщик или другую внешнюю платформу. Однако я нашел эту статью в их документах интересной.
Люк Чейверс
1
@Moonwalker Да, он использует приложение под названием " Asar " для упаковки. (см .: «Упаковка приложений» ). Я также только что нашел это сравнение Node-Webkit / Atom-Shell .
Люк Чейверс
22

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

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

Роджер Ван
источник
3
+1 в режиме киоска Роджер. Я вижу, что это функция, которую я буду использовать в будущем. Надеюсь, возможности отладки улучшатся, поэтому я могу остаться на nw.js, однако сейчас я серьезно подумываю над тем, чтобы переключиться на Atom Electron на некоторое время, чтобы протестировать воды. Я нашел отладку в nw.js немного желающим.
Тимоти К. Куинн
Я немного обеспокоен включением там «защиты источника JS» - это тот же класс, что и DRM, в том смысле, что он не работает. Он только «защищает» от тех, от кого вам не нужно «защищаться» с самого начала. Не похоже на то, что должно рекламироваться как функция для меня.
Свен Слотвег
1
Это не то же самое, что DRM для Web - программисты JS должны иметь возможность делать все, что могут программисты на C ++, включая компиляцию исходного кода в машинный код при разработке собственных приложений.
Роджер Ван
@JavaScriptDude ты имеешь в виду devtools? В следующей версии (0.13) опыт будет почти таким же, как в браузере Chrome.
Роджер Ван
@Роджер. Извините за задержку ответа. Да, devtools. Я обнаружил, что существуют следующие ограничения, некоторые из которых, вероятно, присутствуют в самом devtools: 1) Не запущена отладка новых окон. 2) Удаленная отладка никогда не работала. 3) Невозможность вызова точек останова, просмотра переменных и открытых источников (при каждом перезапуске приложения все настройки очищаются). 4) (настоящая важная персона). Невозможность отладки кода, загруженного с помощью require ().
Тимоти К. Куинн
10

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

  • 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 встроена, и вы можете общаться с узлом из вашего веб-приложения. Таким образом, вы можете использовать узел для доступа к файловой системе и т. Д.
  • архитектура Проект хорошо настроен, хорошо разделяя проект оболочки и работающее в нем ваше веб-приложение. В вашем собственном приложении доступен глобальный объект-оболочка, который дает вам доступ к функциональности скобок (доступ к файловой системе, связь с процессом узла, ...).
Карел Брекман
источник
6
То, что заставило меня держаться подальше от Brackes-shell, было их собственным обзором. github.com/adobe/brackets-shell "Примечание. Оболочка brackets поддерживается только для использования в проекте Brackets. Хотя некоторые люди определенно добились успеха, используя его в качестве оболочки приложения для других проектов, мы не предоставляем никаких официальных документов. поддержка этого, и мы не проделали огромную работу, чтобы сделать оболочку приложения легко пригодной для повторного использования. Многим людям, вероятно, будет легче использовать проект, такой как node-webkit, который является более общим по своему дизайну ».
Джон В. Кларк
5

Стоит отметить, что 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 для более новых ОС.

Jaredcheeda
источник
1
Chrome не прекратил поддержку после того, как MS это сделала - поддержка была продлена до конца 2015 года - chrome.blogspot.com/2015/04/…
Karol Klepacki
электрон (atom-shell) не работает на RHEL 6.6 и ниже, и исходный код не может быть скомпилирован на этих дистрибутивах.
Майкл Круглос
Вы можете использовать nw-builder для создания версий MAS. Есть сборки рук для NW.js , а также.
Джаредхид