Три дня назад (1 февраля) Roger Wang объявил о выходе новой версии движка node-webkit — созданного в недрах Intel Open Source Technology Center мощного сочетания WebKit и Node.js, позволяющего создавать кросс-платформенные графические приложения методом веборазработки на языках HTML, CSS и JavaScript.
Новая версия имеетномер 0.4.1; на её основе нетрудно составить и запустить, например, вот такое окно:
![[скриншот]](https://habrastorage.org/r/w1560/storage2/ba3/f71/2a7/ba3f712a75a501b27ad40cbb773e9541.png)
Почти семь недель прошло с того дня (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):
Как видите, полезных новшеств понабралось почти с десяток — и каждое из нихкого-нибудь да порадует, потому что упрощает жизнь разработчикам.
Новая версия имеет
![[скриншот]](https://habrastorage.org/storage2/ba3/f71/2a7/ba3f712a75a501b27ad40cbb773e9541.png)
Почти семь недель прошло с того дня (18 декабря), когда я обозревал одну из предыдущих версий
Прежде всего необходимо упомянуть опубликованный 18 января план выпусков
Сразу скажу, что переход
Вот список остальных новшеств
- Приложение, работающее на движке
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" в манифесте приложения.
Как видите, полезных новшеств понабралось почти с десяток — и каждое из них