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

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

Жанры

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 - это поток, открытый для чтения, созданный где-то в другом месте программы. Ниже будет показано, как создавать объекты потоков для файлов и сетевых сокетов:

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

Газлайтер. Том 39

Володин Григорий Григорьевич
39. История Телепата
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 39

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача

Полонянин

Гончаров Олег
2. Ночь Сварога
Приключения:
исторические приключения
8.30
рейтинг книги
Полонянин

Династия. Феникс

Майерс Александр
5. Династия
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Династия. Феникс

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

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

Грехов Тимофей
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда IV

Gloster Gladiator

Иванов С. В.
72. Война в воздухе
Научно-образовательная:
история
военная техника и вооружение
военная история
5.00
рейтинг книги
Gloster Gladiator

Серые сутки

Сай Ярослав
4. Медорфенов
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Серые сутки

Обрыв

Гончаров Иван Александрович
Проза:
классическая проза
русская классическая проза
8.93
рейтинг книги
Обрыв

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Метатель. Книга 2

Тарасов Ник
2. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 2

Моров. Том 3

Кощеев Владимир
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 3

Старая школа рул

Ромов Дмитрий
1. Второгодка
Фантастика:
альтернативная история
6.00
рейтинг книги
Старая школа рул