logo
Разработка Web-приложения с использованием JavaScript каркаса Node.js

1.1 Что позволяет делать Node?

Node - платформа для написания JavaScript-приложений вне веб-браузера. Это не тот JavaScript, с которым все мы знакомы по опыту работы с браузерами. В Node не встроена ни объектная модель документа (DOM), ни какие-либо ещё возможности браузера. Именно язык JavaScript в сочетании с асинхронным вводом/выводом делает Node мощной платформой для разработки приложений. Но вот для чего Node непригодна, так это для разработки персональных приложений с графическим интерфейсом пользователя (ГИП). На сегодняшний день в Node нет встроенного эквивалента Swing (или SWT). Нет и подключаемой библиотеки ГИП для Node, и внедрить Node в браузер тоже нельзя. Если бы для Node существовала библиотека ГИП, то на этой платформе можно было строить и персональные приложения. Недавно появилось несколько проектов по созданию интерфейса между Node и GTK, итогом которых должна стать кросс-платформенная библиотека ГИП. В состав движка V8, используемого в Node, входят API-расширения, позволяющие писать на C/C++ код для расширения JavaScript или интеграции движка с платформенными библиотеками.

Помимо встроенного умения исполнять код на JavaScript, включенные в состав дистрибутива модули предоставляют и другие возможности:

утилиты командной строки (для включения в скрипты оболочки);

средства написания интерактивных консольных программ (цикл «чтение - выполнение - печать»);

великолепные функции управления процессами для наблюдения за дочерними процессами;

объект Buffer для работы с двоичными данными;

механизм для работы с сокетами TCP и UDP с полным комплектом обратных вызовов в ответ на события;

поиск в системе DNS;

средства для создания серверов и клиентов протоколов HTTP и HTTPS, построенные на основе библиотеки ТСР-сокетов;

средства доступа к файловой системе;

встроенная рудиментарная поддержка автономного тестирования с помощью утверждений.

Сетевой слой Node находится на низком уровне, но работать с ним все равно просто. Например, модули HTTP позволяют реализовать HTTP-сервер (или клиент), написав всего несколько строк кода, но, тем не менее, на этом уровне программист работает очень близко к реальным запросам по протоколу и может точно указать, какие HTTP-заголовки следует включать в ответ на запрос. Если программист на РНР обычно не интересуется заголовками, то для программиста на Node они существенны.

Иными словами, написать на Node HTTP-сервер очень просто, но типичному разработчику веб-приложений нет нужды работать на таком низком уровне. Например, кодируя на РНР, программист предполагает, что Apache уже присутствует, так что реализовывать серверную часть стека ему не нужно. Сообщество, сложившееся вокруг Node, создало широкий спектр каркасов для разработки веб-приложений, в том числе Connect, которые позволяют быстро сконфигурировать HTTP так, чтобы предоставлялось все, к чему мы привыкли, - сеансы, куки, обслуживание статических файлов, протоколирование и т.д. - и пусть разработчик занимается бизнес-логикой приложения.