вебмастер, фидошник
0,0
рейтинг
18 декабря 2012 в 17:05

Разработка → Новшества node-webkit версии 0.3.6

Roger Wang 14 декабря объявил о выходе новой версии движка node-webkit созданного в недрах Intel Open Source Technology Center мощного сочетания WebKit и Node.js, позволяющего создавать кросс-платформенные графические приложения методом веборазработки на языках HTML, CSS и JavaScript.

Новая версия имеет номер 0.3.6 и выглядит вот как:

[скриншот]

По сравнению с версией 0.3.0, которую я обозревал в октябре, за последние два месяца случались только небольшие изменения, заслуживающие не более чем последней цифры в номере версии node-webkit. Зато изменений этих накопилось порядочно.

Прежде всего нетрудно заметить, что окна утратили «округлый» и «синенький» вид, похожий на Google Chrome, а вместо того вновь обрели общесистемный вид и форму. (На иллюстрации я привожу вид окна в Windows XP.) Также вернулся значок в заголовке окна. (Для сегодняшней демонстрации я поместил туда значок сайта Хабрахабра.)

Вот список остальных новшеств этой версии (по сравнению с 0.3.0):

  • Возможен режим kiosk, в котором node-webkit распахивается на весь экран и не может быть закрыт при помощи мыши. (Подходит для создания информационных терминалов.)
     
  • Обеспечивается автозапуск джаваскрипта, упомянутого в параметре node-main в файле package.json. (Скрипт запускается в контексте движка Node — а не в WebKit, как было бы по событию load, например. Это удобно для инициализации модулей Node.)
     
  • Появился API управления приложением. (Можно считать параметры командной строки, можно сразу закрыть все окна приложения.)
     
  • Поддерживается элемент <datalist> а значит, появляются подсказки для автозаполнения текстовых полей по мере печатания текста.
     
  • Создано средство nw-gyp вариант node-gyp, который служит для сборки двоичного кода неджаваскриптовых модулей для node-webkit таким же образом, каким node-gyp собирает их для Node. (Это необходимо, так как ABI у Node и node-webkit различаются.)
     
  • Можно помещать элементы в меню окна. (Ещё один привычный элемент графического интерфейса пользователя.)
     
  • Запуск консольных команд под Windows не приводит к появлению видимых окон консоли. (Как правило, вызывались они лишь ненадолго — и оттого их подмигивание не было никому приятно или полезно.)
     
  • Можно использовать кодеки, защищённые патентом, если снабдить node-webkit собственной сборкою libffmpeg. (Но в комплекте с node-webkit продолжает поставляться ограниченная версия.)
     
  • Окна могут предотвращать или откладывать своё закрытие, перехватывая и обрабатывая событие close.
     
  • Авторы приложений могут прикладывать к ним (в подпапку plugins) некоторый набор браузерных плагинов (NPAPI), который станет использоваться наряду с общесистемным.
     
  • Объект window стал доступен в контексте Node под тем же именем.
     
  • В отладчике стал виден исходный код скриптов из контекста Node.
     
  • Окну можно придать свойство «всегда наверху», чтобы оно перекрывало другие окна приложений.
     
  • Появилась поддержка source maps, то есть возможность видеть в отладчике код приложений на других языках, компилируемых в JavaScript (например, Clojure или TypeScript), если их компилятор это также поддерживает.
     
  • Появилась поддержка Pointer Lock API, то есть возможность удержания мыши в приложении и реагирования на её относительное движение (наподобие 3D-стрелялок), а не на её положение.
     
  • Теперь cookies сохраняются на компьютере после завершения приложения (между запусками).
     
  • Появилась кнопка полного перезапуска приложения его разработчиком (в отладочных целях). Одновременно перезапускается и код для Node, и веботехнологическая часть (HTML, CSS, JS) в WebKit.
     
  • Запуск nw.exe без параметров приводит к загрузке package.json (и приложения) из той же папки, в которой node-webkit лежит.

Как видите, за два месяца появилось более полутора десятков полезных новшеств, каждое из которых кого-нибудь да порадует, потому что упрощает жизнь.
Mithgol the Webmaster @Mithgol
карма
61,5
рейтинг 0,0
вебмастер, фидошник
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (24)

  • +6
    как здорово! Можно подключить ExtJS, и получится почти как обычное настольное приложение
    • +3
      Все бы хорошо, но написание чего-то десктопного(не берем в рассчет десктопный API) займет сильно больше времени, чем на обычном Windows Forms. И куда больше времени на отладку.
      Поэтому практического смысла не вижу.
      • +1
        Лично я противоположенного времени. Особенно если есть опыт веб-разработки больший или равный среднему.
        Единственное что меня смущает, проигрывание при помощи VLC Web Plugin и аппаратное ускорение декодировки видео. Правда что-то мне подсказывает что и на десктопном варианте она не всегда включается.
      • 0
        ума не приложу, как это разработка приложения для OS X займет на Windows Forms меньше времени чем на node-webkit.
  • 0
    Реально ли на нем написать гуишное приложение для управления сервером, как на пример Open Server?
    • 0
      Вы имеете в виду гуишное приложение для управления сервером SCO OpenServer 6?
      • +1
        Скорее, как open-server.ru
        • 0
          В таком случае не вижу препятствий к написанию такой программы поверх node-webkit.

          (Сам, правда, сочинять её не стану — занят другим.)
        • +1
          Именно как http://open-server.ru/
          Я то и хочу сам поиграться попробовать :)
  • +2
    В целом решение интересное как альтернатива Adobe AIR
    • +1
      Еще бы на мобилках бы работало быстро (или работало вообще?) — цены бы ему не было.
      • 0
        Да, аналога node-webkit для мобильников не существует — прежде всего оттого, что там не работает Node. (Насколько мне известно, проект anode далёк от окончательного успеха.)
      • 0
        на мобилках возможно и будет — НО:
        1) для работы node.js нужно портировать libuv
        2) для iOS работать не будет т.к. Apple не пустит в маркет
        3) для Android нужно пилить java обертки
        4) Qt не так давно только стал нормально поддерживать мобильные системы и тач (Symbian не в счет)

        А вот на Windows RT думаю ОЧЕНЬ скоро будет, т.к. проблем с ARM у V8 нету, а Windows RT поддерживает Win32 (для RT — aka Legacy) API.
        • 0
          2) Пустит, если не будет подгрузок JS кода из внешних источников.
      • +2
        А чем вам phoneGap не понравился? Или qooxdoo, тогда уж.
        • 0
          И это не говоря уже о WAC спецификации.
  • 0
    AppJS: те же яйца, только с API и командой.
    И сайт еще у них есть: appjs.org
    • +1
      Тут ведется дискуссия на тему сравнения node-webkit и app.js, но в целом картина остается неясной: кто же из этих двух лучше.
      • +3
        Я знаю о существовании AppJS и упоминал этот движок 1 октября.

        На следующий день (2 октября) я сравнил AppJS и node-webkit; сравнение оказалось не в пользу AppJS (а в пользу node-webkit) по следующим пунктам:

        • Более непосредственный стиль обращения к API Node.js: node-webkit использует прямое обращение (например, process.version), тогда как в AppJS приходится использовать пространство имён (node.process.version).
           
        • AppJS не издаёт звук при помощи тега <audio>, тогда как node-webkit не имеет этой проблемы.
           
        • В node-webkit есть поддержка ZIP-упаковки приложений и даже пристыковывания их в хвост к файлу движка. AppJS не имел ничего подобного.
           
        • Документация node-webkit более или менее подробна (вики особенно). Документация AppJS почти совершенно отсутствовала, приходилось обходиться примерами кода.
           
        • Манифест приложения node-webkit позволяет ограничить минимальную и максимальную ширину окна приложения. Средствами AppJS этого нельзя было достигнуть (по крайней мере, так просто).
           
        • node-webkit поддерживает значок и меню в системном лотке, тогда как AppJS (ещё) не поддерживал. То же самое можно было сказать и о некоторых других ништяках (получение имён файлов, управление меню, доступ к буферу обмена).
           
        • Как сказано на Гитхабе, создание и разработка node-webkit идёт при некоторой поддержке Intel. По моим ощущениям, node-webkit развивается резвее, чем AppJS.

        Проведя это сравнение, я забросил AppJS и перешёл к употреблению node-webkit. Допускаю, что с тех пор (за два с лишним месяца) и в AppJS также произошли некоторые изменения к лучшему — например, значок и меню в системном лотке теперь можно поместить и в AppJS.
        • +1
          К тому же выводу пришел, изучив вики node-webkit.
          Еще бы всяческие обертки системных API имелись, так цены бы им не было. Пока что для таких вещей, как, к примеру, системные хуки, придется писать модуль на C++, а node-ffi не вариант для конечного пользователя.
          • 0
            Сам я ещё не пробовал этого, но оптимистически подозреваю, что node-ffi можно сперва собрать посредством nw-gyp, а затем раздавать конечным пользователям в готовом двоичном виде — тем способом, который я изложил в первом своём комментарии вон к той проблеме на Гитхабе.
  • +2
    Осталось дождаться, когда решат с webSQL и sqlite3. Либо полностью выпилят первое, чтобы заменить на node-sqlite3, либо разберутся, как расширять первое.

    А то как-то неприятно, что нельзя описать статичное расположение БД (хардлинки не предлагать), да и жесткие ограничения безопасности webSQL на десктопном приложении ни к чему.

    Я видел обсуждение на github автора статьи и одного из разработчиков на github по этому вопросу. Судя по переписке, идеей заинтересовались. Интересно, как там в этом вопросе дела продвигаются. Если активно взялись, это очень радует.

    Вообще, есть мысль сделать и русское комьюнити, для создания справочников API (в т.ч. переведенной на Русский), и технической помощи проекту. Очень много проблем у проекта(нестабильность), но его перспективы очень неплохие(кроссплатформенность, очень неплохая производительность, полные возможности всего chromium(с его же и проблемами правда)).

    Я исходники не успеваю изучать, как они вносят изменения =). Очень активно работают. Поэтому надеюсь смогу в следующем году присоединиться к разработке. Слишком уж он меня перспективой заинтересовал, что немного времени думаю можно будет им уделить.
  • 0
    Вопрос. Можно ли без проблем использовать внутри node-webkit какой нибудь node.js mvc framevork например Express? Если да где бы посмотреть примеры? Или это совершенно бессмысленно? Просьба сильно не пинать если я глупость спросил.
    • 0
      Прошу прощения! Поспешно задал вопрос. Просто занимаюсь этим в свободное от работы и семьи время, обычно ночью, так что не был внимателен и не заметил. Вот здесь есть ответ.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.