JavaScript. Подробное руководство, 6-е издание, стр. 158
Расширение E4X полностью поддерживает пространства имен, а также включает синтаксические конструкции и функции для работы с пространствами имен XML:
<b>// Объявить пространство имен по умолчанию с помощью инструкции</b><b>// "default xml namespace" statement:</b><b>default xml namespace = "</b><a href="http://www.w3.org/1999/xhtml"><b>http://www.w3.org/1999/xhtml</b></a><b>";</b><b>// Следующий документ xhtml содержит несколько тегов svg: </b><b>d = <html></b><b> <body></b><b> Маленький красный квадрат:</b><b> <svg xmlns="</b><a href="http://www.w3.org/2000/svg"><b>http://www.w3.org/2000/svg</b></a><b>" width="10" height="10"></b><b> <rect x="0" y="0" width="10" height="10" fill="red"/></b><b> </svg></b><b> </body></b><b></html></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>// Выборка элементов <svg> выполняется сложнее, потому что они не принадлежат</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 // "red"</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>