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

Расширение E4X полностью поддерживает пространства имен, а также включает синтаксические конструкции и функции для работы с пространствами имен XML:

<b>// Объявить пространство имен по умолчанию с помощью инструкции</b>

<b>// &quot;default xml namespace&quot; statement:</b>

<b>default xml namespace = &quot;</b><a href="http://www.w3.org/1999/xhtml"><b>http://www.w3.org/1999/xhtml</b></a><b>&quot;;</b>

<b>// Следующий документ xhtml содержит несколько тегов svg: </b>

<b>d = &lt;html&gt;</b>

<b>  &lt;body&gt;</b>

<b>    Маленький красный квадрат:</b>

<b>    &lt;svg xmlns=&quot;</b><a href="http://www.w3.org/2000/svg"><b>http://www.w3.org/2000/svg</b></a><b>&quot; width=&quot;10&quot; height=&quot;10&quot;&gt;</b>

<b>      &lt;rect x=&quot;0&quot; y=&quot;0&quot; width=&quot;10&quot; height=&quot;10&quot; fill=&quot;red&quot;/&gt;</b>

<b>    &lt;/svg&gt;</b>

<b>  &lt;/body&gt;</b>

<b>&lt;/html&gt;</b>

<b>// Элемент body c uri его пространства имен и локальным именем</b>

<b>var tagname = d.body.name();</b>

<b>var bodyns = tagname.uri;</b>

<b>var localname = tagname.localName;</b>

<b>// Выборка элементов &lt;svg&gt; выполняется сложнее, потому что они не принадлежат</b>

<b>// пространству имен по умолчанию. Поэтому для выборки svg сначала нужно создать</b>

<b>// объект Namespace и затем использовать его</b>

<b>// оператор :: добавляет пространство имен в имя тега</b>

<b>var svg = new Namespace('</b><a href="http://www.w3.org/2000/svg'"><b>http://www.w3.org/2000/svg'</b></a><b>);</b>

<b>var color = d..svg::rect.@fill // &quot;red&quot;</b>

12 Серверный JavaScript

В предыдущих главах подробно рассматривался базовый язык JavaScript, и вскоре мы перейдем ко второй части книги, в которой рассказывается о том, как JavaScript встраивается в веб-броузеры, и описывается обширнейший API клиентского JavaScript. JavaScript - это язык программирования для Веб, и большая часть программного кода на языке JavaScript написана для выполнения в веб-броузерах. Однако JavaScript - это быстрый и универсальный язык с широкими возможностями, и нет никаких причин, по которым JavaScript не мог бы использоваться для решения других задач программирования. Поэтому, прежде чем перейти к знакомству с клиентским JavaScript, мы коротко рассмотрим две другие реализации JavaScript. Rhino - это интерпретатор JavaScript, написанный на языке Java, что обеспечивает программам на языке JavaScript доступ ко всем библиотекам языка Java. Интерпретатор Rhino рассматривается в разделе 12.1. Node -версия интерпретатора V8 JavaScript, созданного компанией Google, включающая низкоуровневые интерфейсные библиотеки доступа к POSIX (Unix) API -к файлам, процессам, потокам, сокетам и так далее - с особым упором на асинхронные операции ввода/вывода, сетевые взаимодействия и работу с протоколом HTTP. Интерпретатор Node рассматривается в разделе 12.2.

Название главы говорит, что она посвящена «серверному» JavaScript, а обычно для создания серверов и для управления ими используются интерпретаторы Node и Rhino. Но под словом «серверный» можно также понимать «все, что за пределами веб-броузера». Программы, выполняемые под управлением Rhino, способны создавать графические интерфейсы пользователя, используя фреймворк Swing для языка Java. А интерпретатор Node может выполнять программы на языке JavaScript, способные манипулировать файлами подобно тому, как это делают сценарии командной оболочки.

Цель этой короткой главы состоит в том, чтобы осветить некоторые направления за пределами веб-броузеров, где может использоваться язык JavaScript. Здесь не предпринимается попытка в полном объеме охватить интерпретатор Rhino или Node, а обсуждаемые здесь прикладные интерфейсы не описываются в справочном разделе. Очевидно, что в одной главе невозможно сколько-нибудь полно описать платформу Java или POSIX API, поэтому раздел об интерпретаторе Rhino предполагает, что читатели имеют некоторое знакомство с Java, а раздел об интерпретаторе Node предполагает знакомство с низкоуровневыми прикладными интерфейсами Unix.

12.1. Управление Java с помощью Rhino

Rhino - это интерпретатор JavaScript, написанный на языке Java, цель которого - упростить возможность создания программ на языке JavaScript, которые могли бы использовать мощь платформы Java. Интерпретатор Rhino автоматически выполняет преобразование простых типов JavaScript в простые типы Java и наоборот, благодаря чему сценарии на языке JavaScript могут читать и изменять свойства и вызывать методы объектов на языке Java.

Rhino определяет несколько важных глобальных функций, не являющихся частью базового языка JavaScript:

<b>// Специфические глобальные функции, определяемые интерпретатором</b>

<b>// Введите help() в строке приглашения rhino, чтобы получить дополнительную информацию </b>

<b>print(х);          // Глобальная функция вывода в консоль </b>

<b>version(170);      // Требует от Rhino задействовать особенности версии 1.7 );</b>

<b>load(filename....  // Загружает и выполняет один или более файлов</b>

<b>                   // с программами на языке JavaScript</b>

<b>readFile(file);    // Читает текстовый файл и возвращает его содержимое в виде строки</b>

<b>readUrl(url);      // Читает текстовое содержимое по адресу URL и возвращает </b>

<b>                   // в виде строки</b>

<b>spawn(f);          // Вызывает f() или загружает и выполняет файл f</b>

<b>                   // в новом потоке выполнения </b>