Прямо сегодня (19 августа) интеловский Центр технологий с открытым исходным кодом выдал на-горá очередную версию движка node-webkit. Движок этот, как и прежде, интересен тем, что умеет открывать браузероподобные окна (на основе кода Chromium) и употреблять в них API Node.js — так что он обеспечивает нетрудное создание GUI-приложений методами веборазработки (на языках JavaScript, HTML, CSS, WebGL и т. д.) под операционные системы Windows, Mac OS X и Linux.
Новая версия получила номер 0.7.1 и содержит движок Node версии 0.10.12, как нетрудно видеть в тестовом окне:
Код тестового окна я сегодня открыл на Гитхабе, так что желающие могут с ним ознакомиться и убедиться воочию, что начальные (helloworldные) шаги программирования для node-webkit ничуть не сложнее обычной веборазработки, усиленной возможностями API Node.
Менее месяца тому назад (24 июля) я обозрел одну из предыдущих версий node-webkit (версию 0.6.3). С тех пор прошло не много времени, однако в node-webkit появился ряд небезынтересных новшеств:
- Появилась поддержка протокола app. Теперь в манифесте приложения можно записать параметр main в виде «"main": "app://hostname/path"», причём в роли имени хоста (hostname) может выступать любой идентификатор, а путь (path) отсчитывается от того каталога-корня, в котором лежит сам манифест (файл package.json). После этого во браузерной части приложения (в HTML, в CSS и т. п.) все «абсолютные адреса от корня» (начинающиеся косою чертою) станут отсчитываться от того же каталога — этот эффект будет необыкновенно полезен для тех, кто переупаковывает под node-webkit какое-нибудь такое приложение, которое ранее крутилось в Паутине и содержало массу путей «от корня». Понятно, что это частный случай. Если же случай противоположный (все пути были относительными), то можно не возёхаться с новым протоколом, а в значении у "main" записывать, как и раньше, относительный путь от манифеста. (В простейшем случае — "index.html".)
- Появилась возможность джаваскриптом менять значение элемента input, имеющего атрибут type="file"; таким образом, обеспечивается полная автоматизация отгрузки файлов в Сеть внутрибраузерным способом (что удобнее, чем в API Node).
- В новом поле App.manifest можно считывать значения манифеста приложения. Не нужно лишний раз делать require('package.json'), ведь все эти сведения и без того считываются node-webkit при запуске приложения.
- К обработчику события App.open теперь поступает командная строка целиком. Раньше каждый параметр командной строки вызывал отдельное такое событие, а теперь можно обрабатывать и те случаи, когда в командной строке не только перечисляются файлы, которые необходимо открыть, но и указаны параметры, имеющие какое-нибудь другое значение (например, флаги настроек).
- API getUserMedia стало можно использовать для захвата копии всего экрана, как вон в том примере.
В новой версии также устранены баги, в отдельных случаях прежде приводившие к падению или зависанию приложения.
Автор: Mithgol