Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Интерпретатор Node построен на основе механизма V8 JavaScript, разработанного компанией Google. Версия Node 0.4 использует версию V8 3.1, которая реализует все особенности ECMAScript 5, за исключением строгого режима.

После загрузки, компиляции и установки Node вы сможете запускать программы, написанные для этого интерпретатора, как показано ниже:

node program.js

******************************************

Знакомство с интерпретатором Rhino мы начали с функций print и load. Интерпретатор Node имеет похожие инструменты, но с другими именами:

//
Подобно броузерам, для вывода отладочной информации Node определяет

// функцию console.log.

console.log("Hello Node"); // Выведет отладочную информацию в консоль

// Вместо load в нем используется функция require.

// Она загружает и выполняет (только один) указанный модуль и возвращает объект,

// содержащий имена, экспортируемые модулем.

var fs = require("fs"); // Загрузит модуль ”fs" и вернет объект с его API

Интерпретатор Node реализует в глобальном объекте все стандартные конструкторы, свойства и функции, предусмотренные стандартом ECMAScript 5. Однако в дополнение к этому он также поддерживает клиентские функции для работы с таймером:

setTimeout, setlnterval, clearTimeout и clearlnterval:

//Вывести приветствие через одну секунду.

setTimeout(function { console.log( "Привет, Мир!"); }, 1000);

Эти глобальные клиентские функции рассматриваются в разделе 14.1. Реализация Node совместима с реализациями интерпретаторов в веб-броузерах.

Интерпретатор Node также определяет и другие глобальные компоненты в пространстве имен process. Ниже перечислены некоторые из свойств этого объекта:

process.version // Строка с версией Node

process.argv // Аргументы командной строки в виде массива, argv[0] = "node"

process.env // Переменные окружения в виде объекта.

// например: process.env.PATH

process.pid // Числовой идентификатор процесса

process.getuid // Возвращает числовой идентификатор пользователя

process.cwd // Возвращает текущий рабочий каталог

process.chdir // Выполняет переход в другой каталог

process.exit // Завершает программу (после запуска всех обработчиков)

Поскольку функции и методы, реализуемые интерпретатором Node, являются асинхронными, они не блокируют выполнение программы в ожидании завершения операций. Неблокирующий метод не может вернуть результат выполнения асинхронной операции. Если в программе потребуется получить результат или просто определить, когда завершится операция, необходимо определить функцию, которую интерпретатор Node сможет вызвать, когда результат будет доступен

или когда операция завершится (или возникнет ошибка). В некоторых случаях (например, в вызове
setTimeout
выше) достаточно просто передать методу функцию в виде аргумента, и Node вызовет ее в соответствующий момент времени. В других случаях можно воспользоваться инфраструктурой событий интерпретатора Node. Объекты, реализованные в интерпретаторе Node, которые генерируют события (их часто называют источниками (emitter) событий), определяют метод
on
для регистрации обработчиков. Они принимают в первом аргументе тип события (строку) и функцию-обработчик во втором аргументе. Для различных типов событий функциям-обработчикам передаются различные аргументы, поэтому вам может потребоваться обратиться к документации по API, чтобы точно узнать, как писать свои обработчики:

emitter.on(name, f) // Регистрирует f для обработки события name,

// генерируемого объектом emitter

emitter.addListener(name, f) // То же самое: addListener - синоним для оп

emitter.once(name, f) // Для обработчиков однократного срабатывания,

// затем f автоматически удаляется

emitter.listeners(name) // Возвращает массив функций-обработчиков

emitter.removeListener(name, f) // Удаляет обработчик f

emitter.removeAHListeners(name) // Удаляет все обработчики события name

Объект

process
, представленный выше, является источником событий. Ниже приводится пример обработчиков некоторых его событий:

// Событие "exit" отправляется перед завершением работы Node,

process.on("exit", function { console.log("Goodbye"); });

// Необработанные исключения генерируют события, если имеется хотя бы один

// зарегистрированный обработчик. В противном случае исключение

// заставляет интерпретатор Node вывести сообщение и завершить работу,

process.on("uncaughtException", function(e) { console.log(Exception, e); });

// Сигналы POSIX, такие как SIGINT, SIGHUP и SIGTERM, также генерируют события

process.on("SIGINT", function { console.logCIgnored Ctrl-C"); });

Поскольку интерпретатор Node позволяет выполнять высокопроизводительные операции ввода/вывода, его прикладной интерфейс к потокам ввода/вывода является одним из наиболее часто используемых в программах. Потоки, открытые для чтения, генерируют события, когда появляются данные, готовые для чтения. В следующем примере предполагается, что s - это поток, открытый для чтения, созданный где-то в другом месте программы. Ниже будет показано, как создавать объекты потоков для файлов и сетевых сокетов:

Поделиться:
Популярные книги

Комментарии к «Евгению Онегину» Александра Пушкина

Набоков Владимир Владимирович
Документальная литература:
критика
5.00
рейтинг книги
Комментарии к «Евгению Онегину» Александра Пушкина

Дважды одаренный. Том III

Тарс Элиан
3. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
юмористическое фэнтези
5.50
рейтинг книги
Дважды одаренный. Том III

Под-Московье

Калинкина Анна
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
Под-Московье

Гримуар темного лорда VIII

Грехов Тимофей
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.25
рейтинг книги
Гримуар темного лорда VIII

Из истории русской, советской и постсоветской цензуры

Рейфман Павел Семенович
Научно-образовательная:
история
5.00
рейтинг книги
Из истории русской, советской и постсоветской цензуры

Точка Бифуркации XI

Смит Дейлор
11. ТБ
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации XI

50 знаменитых городов мира

Скляренко Валентина Марковна
31. 100 знаменитых
Научно-образовательная:
история
4.75
рейтинг книги
50 знаменитых городов мира

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Последний реанорец. Том XII – Часть II

Павлов Вел
12. Высшая Речь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний реанорец. Том XII – Часть II

Под знаком Песца

Видум Инди
1. Под знаком Песца
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Под знаком Песца

Дневники

Толстой Лев Николаевич
Проза:
русская классическая проза
6.83
рейтинг книги
Дневники

Искусство управления складом

Улыбина Юлия Николаевна
Деловая литература:
о бизнесе популярно
5.00
рейтинг книги
Искусство управления складом

Испытания

Мусаханов Валерий Яковлевич
Проза:
новелла
повесть
5.00
рейтинг книги
Испытания

Экспансия

Каменев Алекс
8. Цитадели гордыни
Фантастика:
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Экспансия