view xml/ru/docs/njs_about.xml @ 2004:d1a1253a570e

Documented Object methods, exponential and hex literals in njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Tue, 27 Jun 2017 16:38:01 +0300
parents 182bbf9034c4
children af51ec6b5489
line wrap: on
line source

<?xml version="1.0"?>

<!--
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE article SYSTEM "../../../dtd/article.dtd">

<article name="Информация о nginScript"
        link="/ru/docs/njs_about.html"
        lang="ru"
        rev="10">

<section id="summary">

<para>
nginScript - это подмножество языка JavaScript, который позволяет
задавать обработчики location и переменных в
<link doc="http/ngx_http_js_module.xml">http</link> и
<link doc="stream/ngx_stream_js_module.xml">stream</link>.
nginScript совместим с
<link url="http://www.ecma-international.org/ecma-262/5.1/">ECMAScript 5.1</link>
c некоторыми расширениями
<link url="http://www.ecma-international.org/ecma-262/6.0/">ECMAScript 6</link>.
Совместимость находится в стадии развития.
</para>

</section>


<section id="supported" name="Готовая функциональность">

<para>
<list type="bullet">

<listitem>
Логические значения, числа, строки, объекты, массивы,
функции и регулярные выражения
</listitem>

<listitem>
ES5.1 операторы, ES7 операторы возведения в степень
</listitem>

<listitem>
ES5.1 инструкции: <literal>var</literal>, <literal>if</literal>,
<literal>else</literal>, <literal>switch</literal>, <literal>for</literal>,
<literal>for in</literal>, <literal>while</literal>,
<literal>do while</literal>, <literal>break</literal>,
<literal>continue</literal>, <literal>return</literal>, <literal>try</literal>,
<literal>catch</literal>, <literal>throw</literal>, <literal>finally</literal>
</listitem>

<listitem>
ES6 методы и свойства <literal>Number</literal> и
<literal>Math</literal>
</listitem>

<listitem>
Методы <literal>String</literal>:
<list type="bullet">

<listitem>
ES5.1:
<literal>fromCharCode</literal>, <literal>concat</literal>,
<literal>slice</literal>, <literal>substring</literal>,
<literal>substr</literal>, <literal>charAt</literal>,
<literal>charCodeAt</literal>, <literal>indexOf</literal>,
<literal>lastIndexOf</literal>, <literal>toLowerCase</literal>,
<literal>toUpperCase</literal>, <literal>trim</literal>,
<literal>search</literal>, <literal>match</literal>, <literal>split</literal>,
<literal>replace</literal>
</listitem>

<listitem>
ES6:
<literal>fromCodePoint</literal>, <literal>codePointAt</literal>,
<literal>includes</literal>, <literal>startsWith</literal>,
<literal>endsWith</literal>, <literal>repeat</literal>
</listitem>

<listitem>
нестандартные:
<literal>fromUTF8</literal>, <literal>toUTF8</literal>,
<literal>fromBytes</literal>, <literal>toBytes</literal>
</listitem>
</list>

</listitem>

<listitem>
Методы <literal>Object</literal>:
<list type="bullet">
<listitem>
ES5.1:
<literal>create</literal> (поддержка без списка свойств),
<literal>keys</literal>,
<literal>defineProperty</literal>,
<literal>defineProperties</literal>,
<literal>getOwnPropertyDescriptor</literal>,
<literal>getPrototypeOf</literal>,
<literal>hasOwnProperty</literal>,
<literal>isPrototypeOf</literal>,
<literal>preventExtensions</literal>,
<literal>isExtensible</literal>,
<literal>freeze</literal>,
<literal>isFrozen</literal>,
<literal>seal</literal>,
<literal>isSealed</literal>
</listitem>
</list>

</listitem>

<listitem>
Методы <literal>Array</literal>:
<list type="bullet">
<listitem>
ES5.1:
<literal>isArray</literal>, <literal>slice</literal>, <literal>splice</literal>,
<literal>push</literal>, <literal>pop</literal>, <literal>unshift</literal>,
<literal>shift</literal>, <literal>reverse</literal>, <literal>sort</literal>,
<literal>join</literal>, <literal>concat</literal>, <literal>indexOf</literal>,
<literal>lastIndexOf</literal>, <literal>forEach</literal>,
<literal>some</literal>, <literal>every</literal>, <literal>filter</literal>,
<literal>map</literal>, <literal>reduce</literal>,
<literal>reduceRight</literal>
</listitem>

<listitem>
ES6:
<literal>of</literal>, <literal>fill</literal>, <literal>find</literal>,
<literal>findIndex</literal>
</listitem>

<listitem>
ES7: <literal>includes</literal>
</listitem>
</list>

</listitem>

<listitem>
ES5.1 методы <literal>Function</literal>:
<literal>call</literal>, <literal>apply</literal>, <literal>bind</literal>
</listitem>

<listitem>
ES5.1 методы <literal>RegExp</literal>:
<literal>test</literal>, <literal>exec</literal>
</listitem>

<listitem>
ES5.1 методы <literal>Date</literal>
</listitem>

<listitem>
ES5.1 глобальные функции:
<literal>isFinite</literal>, <literal>isNaN</literal>,
<literal>parseFloat</literal>, <literal>parseInt</literal>,
<literal>decodeURI</literal>, <literal>decodeURIComponent</literal>,
<literal>encodeURI</literal>, <literal>encodeURIComponent</literal>
</listitem>

</list>
</para>

</section>


<section id="not_supported" name="Функциональность в разработке">

<para>
<list type="bullet">

<listitem>
ES6 объявления <literal>let</literal> и <literal>const</literal>
</listitem>

<listitem>
labels
</listitem>

<listitem>
массив <literal>arguments</literal>
</listitem>

<listitem>
функция <literal>eval</literal>
</listitem>

<listitem>
объект <literal>JSON</literal>
</listitem>

<listitem>
объект <literal>Error</literal>
</listitem>

<listitem>
функции <literal>setTimeout</literal>, <literal>setInterval</literal>,
<literal>setImmediate</literal>
</listitem>

<listitem>
дроби без целой части (<literal>.235</literal>),
двоичные (<literal>0b0101</literal>),
восьмеричные (<literal>0o77</literal>) литералы
</listitem>

</list>
</para>

</section>


<section id="install" name="Загрузка и установка">

<para>
nginScript доступен в двух модулях:
<list type="bullet">

<listitem>
<link doc="http/ngx_http_js_module.xml">ngx_http_js_module</link>
</listitem>

<listitem>
<link doc="stream/ngx_stream_js_module.xml">ngx_stream_js_module</link>
</listitem>

</list>
По умолчанию модули не собираются
их необходимо собрать из исходного кода
или установить из отдельного пакета Linux.
</para>


<section id="install_package" name="Установка пакета Linux">
<para>
Для установки модулей nginScript на Linux могут быть использованы
<link doc="../linux_packages.xml" id="dynmodules">пакеты</link>:
<list type="bullet">

<listitem>
<literal>nginx-module-njs</literal> —
<link doc="ngx_core_module.xml" id="load_module">динамические</link> модули
nginScript
</listitem>

<listitem>
<literal>nginx-module-njs-dbg</literal> — debug-символы для
пакета <literal>nginx-module-njs</literal>
</listitem>

</list>
</para>

</section>


<section id="install_sources" name="Установка из исходных файлов">

<para>
<link url="http://hg.nginx.org/njs">Репозиторий</link>
с исходным кодом nginScript можно клонировать следующей командой:
(необходим клиент <link url="https://www.mercurial-scm.org">Mercurial</link>):
<example>
hg clone http://hg.nginx.org/njs
</example>
Затем модули необходимо собрать с помощью
конфигурационного параметра <literal>--add_module</literal>:
<example>
./configure --add-module=<value>path-to-njs</value>/nginx
</example>
Модули также можно собрать как
<link doc="ngx_core_module.xml" id="load_module">динамические</link>:
<example>
./configure --add-dynamic_module=<value>path-to-njs</value>/nginx
</example>
</para>

</section>

</section>

</article>