Новшества node-webkit версии 0.4.1

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

    Новая версия имеет номер 0.4.1; на её основе нетрудно составить и запустить, например, вот такое окно:

    [скриншот]

    Почти семь недель прошло с того дня (18 декабря), когда я обозревал одну из предыдущих версий (0.3.6) этого движка. Вам нетрудно заметить, что за это время успела перемениться не только последняя, но и предпоследняя цифра версии. Сейчас я расскажу, какие изменения, в node-webkit произошедшие, отражает эта перемена.

    Прежде всего необходимо упомянуть опубликованный 18 января план выпусков node-webkit на 2013 год. В нём запланировано, что новая крупная версия node-webkit (с изменением предпоследней цифры версии) будет появляться каждые два месяца (например, 0.5.0 выйдет через два месяца после 0.4.0), и с каждым таким выпуском будут появляться новые крупные усовершенствования (например, в 0.5.0 ожидается поддержка распечатывания страниц); кроме того, каждая такая версия будет основываться на свежих (ко времени её выхода) версиях Node.js и Chromium. Более мелкие версии (такие, как 0.4.1) станут появляться несколько чаще, но содержать только более мелкие усовершенствования и исправления багов.

    Сразу скажу, что переход от 0.4.0 к 0.4.1 сопровождался исправлением более полудесятка достаточно неприятных багов, из которых один серьёзный (падение программы при попытке подключить и использовать плагин). Я даже поневоле призадумался, не следует ли в дальнейшем опасливо воздерживаться (как от нестабильных) от употребления тех версий, номера которых оканчиваются на «.0».

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

    • Приложение, работающее на движке node-webkit, теперь может задать какое угодно значение заголовка «User-Agent» в HTTP-запросе к отдалённым сайтам. Для этой цели достаточно изменить значение поля "user-agent" в манифесте приложения. Внутри этого значения можно употреблять некоторые ключевые слова, которые окажутся автоматически заменены на версию или имя приложения, на версию node-webkit или WebKit, на сведения об операционной системе и о разрядности процессора (подобные имеющимся в популярных браузерах). Если же значение заголовка «User-Agent» не изменено, то в нём указывается та версия Chromium, на которой node-webkit построен.
       
    • Серьёзно расширены средства дистанционного управления компьютером: доверенным отдалённым страницам, открытым в node-webkit, предоставляется доступ к движку Node в соответствии с некоторым «белым списком». Этот список доверенных сайтов указывается в манифесте приложения как значение поля с именем "node-remote", мною придуманным. Список составляется совершенно по тем же самым правилам, что и список локальных сайтов (к которым браузеру можно обращаться напрямую без прокси) — иными словами, он содержит через запятую (или через точку с запятою) ряд шаблонов, которыми могут быть имена сайтов (например, «example.com», «*example.com», «*.example.com», «*example.com:99», «https://x.*.example.com:99»), или суффиксы доменов («.example.com», «.com», «http://.example.com»), или IP-адреса («127.0.1», «[0:0::1]», «[::1]», «http://[::1]:99»), или IP-диапазоны («192.168.1.1/16», «fefe:13::abc/33»), или просто ключевое слово «<local>» (соответствующее списку «127.0.0.1,::1,localhost»). Теперь можно держать некоторую часть исходного кода приложения у себя на сайте (как скрипты, так и интерфейсы), а работать оно станет у пользователя на компьютере через API Node. Одно из возможных решений проблемы обновления программного обеспечения.
       
    • Появился диалог HTTP-аутентификации на тот случай, когда отдалённый сайт спрашивает имя и пароль.
       
    • Поддерживается API document.cookie для локальных страниц.
       
    • В манифесте приложения появилось поле "chromium-args" (для имитации аргументов командной строки Chromium: например, "--enable-webaudio-input" для экспериментов с API getUserMedia) и поле "js-flags" (для задания параметров V8: например, "--harmony_proxies --harmony_collections" для доступа к части возможностей JavaScript Harmony).
       
    • API «require("nw.gui").Window.open()» пополнился новым полем "new-instance", посредством которого можно запустить в новом окне новый экземпляр процесса Node и WebKit.
       
    • У того же объекта Window появилось свойство zoom (и одноимённое ему событие), отражающие внутрибраузерное увеличение сайта. В некоторых случаях это проще, чем менять font-size для body.
       
    • Можно переходить по гиперссылкам с небраузерными именами протокола (допустим, «mailto:» или «area://»), и они будут скармливаться обработчикам, прописанным в операционной системе.
       
    • Свойство process.mainModule станет указывать на основной скрипт, прописанный в поле "node-main" в манифесте приложения.

    Как видите, полезных новшеств понабралось почти с десяток — и каждое из них кого-нибудь да порадует, потому что упрощает жизнь разработчикам.
    Поделиться публикацией

    Комментарии 35

      +1
      Спасибо за обзор, слежу за разработкой с осени, готовим потихоньку приложение к релизу на базе node-webkit.
        +1
        Сам для себя пишу приложение на нод-вебкит, в процессе сталкивался с несколькими багами. Пришлось рапортовать или в группу или Роджеру. Очень долго злил баг с черными точками по углам. Очень был рад когда его убрали в этой версии. Можно сказать чем больше людей будут использовать этот продукт тем стабильнее и лучше он будет. Так что можно не стесняться и писать сюда в группу. И попутно хочу задать вопрос. На данный момент использую встроенный web-sql как базу данных. Пока вроде этого достаточно. Но чует мое сердце что это не надолго. Какие базы используете вы и что можете посоветовать? От MySQL отказался. Приложение под windows.
          0
          Если база небольшая, то почему не SQLite?
          Что мне нравится в AIR так то что сразу в комплекте весь набор UI и база SQlite без сторонних библиотек.
          На сегодня node-webkit очень заманчев, но ему еще расти, пока это голый вариант как PhoneGap, для реальной задачи нужно сразу искать тучу сторонних библиотек и все это собирать в салянку.
          Пока решаю все вопросы с Adobe AIR, под линух все еще приходится юзать старый SDK, а вот Win и Mak решаются в AIR кросс-платформено с коробки. Такчто слежу активно за node-webkit с надеждой что это вырастет во чтото большее чем просто оболочка.
            +1
            AIR гораздо «продвинутее», чем все browser-based конкуренты, спору нет, но вот его будущее, как платформы для десктопа, достаточно туманно. Глядя на новый Roadmap от Adobe возникают обоснованные сомнения в целесообразности разработки приложений под него. Создается впечатление, что Adobe решила полностью развернуть его в сторону мобильных устройств и геймдева.

            Косвенным свидетельством незаинтересованности Adobe в десктопах является передача Flex в OpenSource. Нет, я всеми руками за эту передачу, ибо за последние полгода в Apache было пофикшено достаточно большое количество багов, которые висели у Adobe по несколько лет, да и добавление Spark контролов в следующем релизе не может не радовать. Но сам факт отказа от поддержки основного UI фреймворка для Flash платформы, лично меня, немного пугает. В следующий раз может оказаться. что версия AIR 4.0 будет поддерживать только Android/iOS и с этим придется мириться. Прецедент с Linux уже был.

            При этом я не понимаю, как Adobe собирается конкурировать с кучей кроссплатформенных фреймворков для игроделов, генерирующих нативные приложения (Unity, Marmalade и др) обходящие по скорости/использованию ресурсов любую игру на базе AIR.
              +1
              У меня теже самые мысли по поводу AIR, к моюему большому разачарованию. Досих пор нету даже близко аналога к AIR. Причем AIR единая среда была и для десктопов и для мобильных. В отличие от Qt, TideSDK, Accelerator и др. чтобы покрыть все нужно иметь целый набор таких SDK, а компиляция под платформы еще веселее.
              Но, вот то, что происходит с AIR напрягает очень сильно. Насколько я вижу и понимаю, Adobe полностью перешла на Flash платформу для медиа и игровых целей под AIR. Т.е. Flex грубо говоря уже умер, Flash как плагин можно сказать тоже уже перечеркнут. Осталось только направление Game Development на AcionScript под AIR, за счет Stage3D и фреймворков типа Starling. Все остальное они уже похоронили.
              Раньше как и в node-webkit, в самом AIR можно было не только на AS3 писать, но и HTML5 приложение завернуть… но когда я просмотрел недавно эту тему снова… оказалось что Adobe даже с dev центра убрали все линки на тему JavaScript под AIR. В самом sdk еще осталась такая функция но они ее спрятали и забыли, ну и перестали развивать.
              Roadmap реально показал конец эпохи AIR, поставив последнюю точку — отмена планов на Windows8 Metro, а продолжать компилить декстоп приложения под Вин8 метро, какбы уже бредово.
              Вообщем Adobe все свои силы кинули на PhoneGap. Причем это было заметно последние 2 года по всем блогам и порталам. Особенно заметно как ведущие специалисти от Adoba в своих блогах резко забили на Flex и стали пропагандировать PhoneGap.
              Самое плохое в этой всей истории… то что щас переходное время и самое неудачное… То что было и работало — убили, а новое еще не построили, и вот мне как разработчику, просто выносит мозг что делать, старое скоро исчезнет совсем и уже перекрывают кислород, а новое еще только в зародыше.
              Я никогда не прощу Adobe за то что они похоронили Flex и AIR, эта связка было лучшее для кросс-платформенной разработки, имея на момент смерти все что нужно было прямо из коробки.
                0
                Хочется верить, что у них хватит мудрости отдать Desktop версию в OpenSource, как это сделал Appcelerator со своим Titanium Desktop. Flex после передачи значительно оживился, а уж сайт так вообще загляденье, если сравнивать с Labs. Возможно сообщество и поддержку Linux вернуло, а то действительно выглядит странно — MacOS поддерживаем, а Linux побоку.
                  0
                  Если они отдадут AIR в Open Source то считай умрет и эта часть. Слишком тяжелый проэкт чтобы плавал самостоятельно без вливаний. Да и для Adobe это пока еще большой кусок чтобы отдать его.
                  Flex вот отдали и все… он считай умер, то что там еще шевелятся чтото, активность идет, но это уже не вернет его в тот режим и на тот уровень. Такие проэкты без больших вливаний долго не протянут. И говорю я не просто так… у меня в фаворитах за все года, по теме Flex, 99,9% из всех ресурсов уже умерли, часть постили последний раз в 2009 году, другие перешли на PhoneGap. Tour de Flex тоже молчит и так повсеместно. А без ресурсов и без комюнити о Flex просто забудут.
                  Также нужно не забывать что Flex полностью зависит от AIR который как я писал выше, ушел с Linux и отказался от Windows8, а так как на Вин8 за счет акции от МС стали переходить массово (я уже на вин8), так что даже при скромных 30% от Вин7 пользователей уже сейчас, это потерянные клиенты и снова поиск другого SDK для покрытия этого куска.
                  Так как Intel объявили от ухода с декстоп платформ то нам светит только планшетные девайсы в ближ. пару лет окончательно. А значит это iOS / Android / Win8RT… и мы уже знаем что AIR отказались от Win8, для меня это значит что нужно срочно искать другие варианты. TideSDK тоже не покрывает все. Qt вообще отдельная тема.

                  В PhoneGap появились папки с потдержкой платформ Win7 и Win8, правда это еще бредовое решение пока. Но уже видно движение. В отличие от AIR… вот такие пирожки.

                  Я был фанатом Flex и AIR, и заступался за них везде и всегда… рад былбы их развитию и дальше, но вижу что тут тупик, судя по тому как все идет.

                  Надежда только если ктото создаст аналог Flash но под другим именем, потому как Линуксоиды и Апловцы, своими криками и холиварами, пропагандировали против Flash что и привело к его смерти. И его уже невернуть, Хотя это было самое идеальное решение для всех платформ, как для юзвера так и для разработчика. Аналога я не видел еще даже в зародыше. То что иемли не ценили, а потеряв остались с пустыми руками.
        +3
        Да, хорошая штука. Есть ли у кого список маломальски законченных приложений, которые можно пощупать?)
          0
          Есть в вики.
            0
            Можно еще попробовать потыкать в мой редактор звездолётов.
            Правда это совсем еще альфа и я нифига не веб-программист.
              +2
              В настоящий момент завершаю проект информационной консоли на базе node-webkit для сенсорных моноблоков. Приложение отображает технологические карты блюд для персонала кухни используя в качестве первичной базы данных 1С Общепит.

              Планирую написать статью на Хабр после запуска проекта.
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  Само приложение кроссплатформенное. Сейчас выбираем модель моноблока. В качестве ОС планируется Linux. Т.к. консоли будут стоять на 30+ точках, лицензионные расходы в случае с Windows будут некстати.
                    +1
                    Почему не рассматриваете андроид планшеты? Сайчас 4х ядерные планшеты уже стоят дешевле моноблоков, да и получаете все в одном. И интернет, и бесплатную ось, сенсорный экран и т.д. На чем писать под дроид тоже проблем нету, java, js, actionscript И т.д. тотже AS3 уже идет с sqlite в комплекте, останется только вопрос синхронизации через инет. Тотже сканер штрих кодов прикручивается без проблем.
                    Для меня на сегодня в планах только две платформы, Windows и Android.
                    Дроид как недорогой и мобильный вариант. Винда как мощный CPU, потому как даже самые последние Arm и Atom процессоры не тянут нагрузку с медиа энкодингом. А учитывая что в Win8 уже встроили в framework все необходимое для работы с media то на Win8 работа с видео и камерами решается буквально в несколько строк, без лишних или стороних дорогих библиотек.
                    Win8RT планшеты пока в пролете, довольно таки высокая цена по сравнению с аналогами на Androide
                      0
                      Почему не рассматриваете андроид планшеты?

                      С учётом эксплуатационных условий моноблоки выбираются с диаганалью 21" и разрешением 1600х900 — планшеты отпадают.

                      Windows не устраивает необходимостью приобретать лицензию ради простого терминала с одной единственной задачей.

                      С учётом всех аспектов, Linux как ОС для данной задачи оказалась адекватнее всего.
                        0
                        насчет андроида и экрана.
                        Посмотрети девайс MK808 www.mk808.com/MK808/en/index.html, у меня вот лично лежит на столе такой девайс с ОС 4.1 на борду, и выводом на любой ТВ или Монитор. Подключенна мышка и клавиатура. Сам девайс размером чуть больше зажигалки и стоимостью от 30-50$. Для меня такой девайс не справился только с энкодингом, для которого нужен проц уровня Core i3 минимум.
                          0
                          Сенсорный экран диаганалью 21"
                            0
                            Нету возможности подключить и проверить сенсорный монитор к Mk808 девайсу. Вывод на ТВ и экран идет 1080p, мышкой управляется как родное, но вот насчет сенсорного монитора большие сомнения, и как заставить девайс понимать такое устройство даже не представляю.
                            Нужно будет взять с собой в супермаркет и там попроовать подклбчить к сенсорникам. Если что отпишусь.
                        • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            а смысл? для Android есть PhoneGap который несет тотже смысл — оболочка для JS приложения.
                            Кстати PhoneGap уже начал потдержку Вин8 Метро, а node-webkit чисто декстоп, да сейчас это полезная тулса, но что дальше? С каждым днем все больше пользователей Win7 переходят на Вин8 и многие захотят Метро приложения а не декстоп. А сказать что пользователи Вин8 неинтересуют — сразу похоронить будущее проэкта. Adobe Air уже слетели с этой позиции.
                            Снова и снова, везде вижу временные решения которые не облегчают проблему кросс-платформенности. А ведь уже было у нас всех готовое решение. 2013 год уже, а проблема кросс-платформенности доси выносит мозг.
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  Извините, я немного не в теме, правильно понимаю, что этот инструмент собирает бинарник под конкретную ОС, который самодостаточный и включает в себя всё-всё-всё, в т.ч. node.js и webkit? Если так, то инструмент просто бесценный!
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Если честно, туго понял. Сейчас попробую на практике проникнуться :) В любом случае, уверен, нужный инструмент.
                        +1
                        Поставил. Проникся. Единственная мысль, которая у меня сейчас крутится в голове: «Это… Это прекрасно!». В насколько отдалённой перспективе версия под макось?
                        • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    А можно вопрос, сколько весит эта штуковина? И сколько соответственно будет весить приложение после сборки?
                      0
                      ZIP-архив node-webkit 0.4.1 (в версии для Windows) занимает 21 775 290 байтов.

                      В распакованном виде занимает 49 449 килобайта.

                      К этому количеству надобно прибавить вес самогó приложения (его HTML, CSS, JavaScript, иллюстрации, плагины), и тогда получится точный ответ на Ваш вопрос.
                        +1
                        Ни фига ж себе!
                          0
                          Если размер важен для Вас, то можно натравить UPX Tool на основной EXE-файл; примерно пару недель назад заинтересованные лица сообщили, что таким способом размер основного EXE-файла можно сократить от более чем 30 мегабайтов до 11 083 килобайтов.

                          (Понятно, что при этом сокращение размера достигается некоторым замедлением запуска программы.)
                            +1
                            Это уже лучше, спасибо:)
                      0
                      Тоже поглядываю на него.
                      Он может быть использован как небольшой вебсервер для доступа к контенту с девайсов?
                      Например, есть десктопный апп, у него интерфейс на html и тот же самый интерфейс доступен с девайсов, если зайти по адресу машины, где запущен апп.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Что значит может быть использован?) Что то вы страное описываете. Чем вам обычный сайт не подойдет?)
                          0
                          Попробовал изменить user-agent
                          {
                          «main»: «index.html»,
                          «name»: «nw-demo»,
                          «description»: «demo app of node-webkit»,
                          «version»: «0.1.0»,
                          «keywords»: [ «demo», «node-webkit» ],
                          «useragent»:«Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25»,
                          «User-Agent»:«Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25»,

                          «window»: {
                          «title»: «node-webkit demo»,
                          «icon»: «link.png»,
                          «toolbar»: true,
                          «frame»: true,
                          «width»: 800,
                          «height»: 500,
                          «position»: «center»,
                          «min_width»: 50,
                          «min_height»: 50,
                          «max_width»: 800,
                          «max_height»: 600
                          },
                          «webkit»: {
                          «plugin»: true
                          },
                          «user-agent»:«Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25»
                          }

                          Это не работает!
                          Я где-то неправ? Если все остальное у них работает также, то…

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

                          Самое читаемое