Pull to refresh

Node.js + Chromium = AppJS: один из перспективных вариантов второго шага эволюции веборазработчика

Reading time 4 min
Views 35K
Сейчас мы с вами немного поговорим о том, как недавнее появление нового инструмента и связанных с ним возможностей открывает перед современными веборазработчиками возможность достаточно быстро эволюционировать, переходить на новые уровни, обретать новые профессиональные навыки, осваивать новые области созидательного труда. Таким инструментом является Node.js и растущая вокруг него инфраструктура.

Первый шаг эволюции веборазработчика совершается тогда, когда разработчик знакомится с Node.js и тотчас же постигает, что ему теперь достаточно воспользоваться знанием джаваскрипта и изучить довольно простой API Node, чтобы немедленно получить возможность сочинять не одни только скрипты для сайтов, но также и консольные приложения, и даже серверные (в частности, вебсерверные).

Исторически это не первый из таких инструментов.
Каждый из нас может вспомнить, что были и до появления Node.js попытки создать движок для удобного программирования на джаваскрипте (Windows Script Host, Rhino, JSDB, и так далее).

Однако только у Node мы видим и достаточно быстрый движок (V8), и кросс-платформенность, и простой API, и превеликое множество дополнительных модулей. Сочетание этих достоинств делает Node удачным и удобным.

Второй шаг эволюции веборазработчика совершается тогда, когда знание языка JavaScript (а также других веботехнологий — прежде всего CSS и HTML или XML) становится можно применять для разработки ещё и приложений с графическим интерфейсом пользователя — то есть с GUI.

Многие производители создавали средства вебоподобной разработки GUI-приложений.
Здесь можно припомнить с десяток более или менее успешных попыток достигнуть желаемого.

Фонд Мозиллы придумал сперва XUL и XULRunner, а затем и целую операционную систему — Firefox OS.

«Хьюлетт-Паккард» выпустил webOS (с недавних пор — Open webOS).

Google придумал Google Chrome OS.

Ещё можно вспомнить, что у Qt есть основанный на JavaScript язык разметки GUI — QML называется.

Развиваются PhoneGap, Appcelerator Titanium, Adobe AIR и другие средства вебоподобного программирования кросс-платформенных приложений.

Часть вышеперечисленных решений родилась на свет увесистою (например, когда для запуска вебоподобного приложения требуется крупная виртуальная машина или даже новая операционная система). Большинство из них также потребует от программиста выучить некоторый API, иногда довольно корявый и страшный (например, XPCOM для XULRunner), но даже когда такой API достаточно изящен, то всё же изучение его требует усилий. Чем больше он умеет, тем более обширным окажется API.

Между тем, если на первом шаге своей эволюции веборазработчик успел выучить API от Node.js — нет ли возможности опереться на это знание и не учить в дальнейшем ничего лишнего?

Второй шаг эволюции веборазработчика становится естественным продолжением первого, если разметка и оформление вебоподобного приложения задаются при помощи HTML и CSS, а поведение — при помощи JavaScript, причём «под капотом» работает ужé известный разработчику движок Node.js.

В частности, если воспользоваться AppJS, то тогда объектная модель (DOM) демонстрируемой «страницы» содержит под именем window.node глобальный объект Node.js, и мы можем без труда прочесть в window.node.process.versions.node версию Node, в window.node.process.arch архитектуру процессора, в window.node.process.platform платформу, и вывести какое-нибудь такое сообщение в окне нашего графического приложения:

[скриншот]

(Понятно, что аналогичным образом можно употреблять и другие возможности Node.js — сетевые, файловые и так далее.)

Что же такое AppJS?

AppJS — это движок Node, к которому в качестве одного из его модулей пристроен движок WebKit от браузера Google Chrome, а точнее — от его свободной версии, Chromium. В настоящее время Chromium используется в форме CEF (Chromium Embedded Framework), о которой достаточно подробно рассказал нам Dima_Sharihin, когда говорил о подключении Chromium к .NET. Как видно, прикрутить CEF можно не только к дотнету, но и к джаваскрипту, что и удалось создателям AppJS.

В настоящее время проект AppJS находится в самом начале своего развития и не достиг ещё даже версии 0.1 — имеющиеся на Гитхабе демонстрационные сборки имеют номер 0.0.19. Документации нет никакой, кроме примеров кода; с возможностями AppJS можно, однако, до известной степени ознакомиться даже сейчас, если скачать с Гитхаба демонстрационную сборку (содержащую своего рода «hello world») под свою операционную систему, запускать, читать исходный код и комментарии к нему, вносить изменения и смотреть, что получается.

В этой сборке под именем «data/app.js» располагается файл, содержащий настройки главного окна приложения. Когда окно создано, в него грузится страница «data/content/index.html», которая может обращаться к window.node и тем достигать движка Node.

Окно приложения AppJS обладает многими качествами браузера Chromium, хотя и лишено панели инструментов, строки статуса и других элементов браузерного интерфейса. В частности, можно жмякнуть Alt+F12 и получить отладочную консоль.

AppJS запускает движок Node с ключом «--harmony», поэтому приложению доступны все те возможности ECMAScript Harmony, которые имеются в V8.

Завидев такой многообещающий проект, я не стал, конечно, дожидаться его развития до версии 0.1 — до этого, быть может, ещё много недель и месяцев остаётся — а поспешил поскорее ознакомить с ним читателей Хабрахабра.

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

Постпостскриптум.  И рассказал про node-webkit — проект, который выглядит ещё перспективнее, чем AppJS.
Tags:
Hubs:
+41
Comments 58
Comments Comments 58

Articles