Mercurial > hg > nginx-site
diff xml/ru/docs/njs/index.xml @ 2244:467aef18bf12
Renamed the "About njs" page.
author | Yaroslav Zhuravlev <yar@nginx.com> |
---|---|
date | Mon, 24 Sep 2018 19:10:17 +0300 |
parents | xml/ru/docs/njs_about.xml@f134633cff5c |
children | 87a0e2c73a25 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/ru/docs/njs/index.xml Mon Sep 24 19:10:17 2018 +0300 @@ -0,0 +1,374 @@ +<?xml version="1.0"?> + +<!-- + Copyright (C) Nginx, Inc. + --> + +<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> + +<article name="Сценарный язык njs" + link="/ru/docs/njs/index.html" + lang="ru" + rev="23"> + +<section id="summary"> + +<para> +njs - это подмножество языка JavaScript, который позволяет +задавать обработчики location и переменных в +<link doc="../http/ngx_http_js_module.xml">http</link> и +<link doc="../stream/ngx_stream_js_module.xml">stream</link>. +njs совместим с +<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>bytesFrom</literal> (0.2.3), +<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>JSON</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> + +<listitem> +Объекты <literal>Error</literal>: +<literal>Error</literal>, <literal>EvalError</literal>, +<literal>InternalError</literal>, <literal>RangeError</literal>, +<literal>ReferenceError</literal>, <literal>SyntaxError</literal>, +<literal>TypeError</literal>, <literal>URIError</literal> +</listitem> + +<listitem> +Функции <literal>setTimeout()</literal> и <literal>clearTimeout()</literal> +(0.2.0) +</listitem> + +<listitem> +Методы <literal>File system</literal> +<link url="https://nodejs.org/api/fs.html#fs_file_system">стиль Node.js</link>: +<literal>fs.readFile</literal>, <literal>fs.readFileSync</literal>, +<literal>fs.appendFile</literal>, <literal>fs.appendFileSync</literal>, +<literal>fs.writeFile</literal>, <literal>fs.writeFileSync</literal> +</listitem> + +<listitem> +Методы <literal>Crypto</literal> +<link url="https://nodejs.org/api/crypto.html#crypto_class_hash">стиль Node.js</link> +(0.2.0): +<literal>crypto.createHash</literal>, +<literal>crypto.createHmac</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>new Function()</literal> +</listitem> + +<listitem> +функции <literal>setInterval</literal>, +<literal>setImmediate</literal> +</listitem> + +<listitem> +дроби без целой части (<literal>.235</literal>) +</listitem> + +</list> +</para> + +</section> + + +<section id="changelog" name="История изменений"> + +<para> +Полная история изменений njs доступна +<link doc="njs_changes.xml">здесь</link>. +</para> +</section> + +<section id="njs_api" name="Справочник njs API"> + +<para> +Справочник njs API доступен +<link doc="njs_api.xml">здесь</link>. +</para> +</section> + + +<section id="install" name="Загрузка и установка"> + +<para> +njs доступен в двух модулях: +<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. +Кроме того, в пакете Linux предоставляется +<link id="cli">утилита</link> командной строки njs. +</para> + + +<section id="install_package" name="Установка пакета Linux"> +<para> +Для установки модулей njs на 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> модули +njs +</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> +с исходным кодом njs можно клонировать следующей командой: +(необходим клиент <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> + +<para> +Чтобы собрать только <link id="cli">утилиту</link> командной строки njs +необходимо запустить +команды <literal>./configure</literal> и <literal>make njs</literal> +из корневого каталога. +Утилита доступна как <literal>./build/njs</literal>. +</para> + +</section> + + +<section id="cli" name="Интерфейс командной строки"> + +<para> +Создание и отладка njs-скриптов может осуществляться +в командной строке. +Утилита командной строки доступна после установки +<link id="install_package">пакета</link> Linux +или после сборки из <link id="install_sources">исходных файлов</link>. +В отличие от njs, запущенном внутри nginx, +в утилите недоступны объекты nginx +(<link doc="njs_api.xml" id="http">HTTP</link> и +<link doc="njs_api.xml" id="stream">Stream</link>). +<example> +$ echo "2**3" | njs - +8 + +$ njs +>> var o = {a:[]} +undefined + +>> JSON.stringify(o, undefined,1) +{ + "a": [ + + ] +} +>> +</example> +</para> + +</section> + +</section> + +</article>