view xml/ru/docs/njs/index.xml @ 2556:c81b1fadbcf3

Updated hello_world example in njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Fri, 19 Jun 2020 12:48:01 +0100
parents 5b2764724e0d
children 67fd664e2612
line wrap: on
line source

<?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="31"
        toc="no">

<section id="summary">

<para>
njs - это подмножество языка JavaScript, позволяющее
расширить функциональность nginx.
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>
и позже.
Совместимость находится в стадии
<link doc="compatibility.xml">развития</link>.
</para>

</section>


<section id="links">

<para>
<list type="bullet">

<listitem>
<link doc="install.xml"/>
</listitem>

<listitem>
<link doc="changes.xml">Изменения в njs</link>
</listitem>

<listitem>
<link doc="reference.xml"/>
</listitem>

<listitem>
<link doc="examples.xml"/>
</listitem>

<listitem>
<link doc="compatibility.xml"/>
</listitem>

<listitem>
<link doc="cli.xml"/>
</listitem>

<listitem>
<link id="tested_os_and_platforms">Протестированные ОС и платформы</link>
</listitem>

</list>
</para>

<para>
<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>
</para>

<para>
<list type="bullet">

<listitem>
<link doc="typescript.xml"/>
</listitem>

<listitem>
<link doc="node_modules.xml">Использование модулей Node.js в njs</link>
</listitem>

</list>
</para>

</section>


<section id="usecases" name="Сценарии использования">

<para>
<list type="bullet">

<listitem>
Комплексное управление доступом и проверка защиты при помощи njs
до получения запроса сервером группы
</listitem>

<listitem>
Управление заголовками ответа
</listitem>

<listitem>
Создание гибких асинхронных обработчиков содержимого и фильтров
</listitem>

</list>
Подробнее о сценариях использования
см. в <link doc="examples.xml">примерах</link>
и <link url="https://www.nginx.com/blog/tag/nginx-javascript-module/">блогпостах</link>.
</para>

</section>


<section id="example" name="Базовый пример HTTP">

<para>
Чтобы использовать njs в nginx, необходимо:
<list type="bullet">

<listitem>
<para>
<link doc="install.xml">установить</link> njs
</para>
</listitem>

<listitem id="hello_world">
<para>
создать файл сценария njs, например <path>http.js</path>.
Описание свойств и методов языка njs
см. в <link doc="reference.xml">справочнике</link>.
<example>
function hello(r) {
    r.return(200, "Hello world!");
}

export default {hello};
</example>
</para>
</listitem>

<listitem>

<para>
в файле <path>nginx.conf</path> включить
модуль <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link>
и указать директиву
<link doc="../http/ngx_http_js_module.xml" id="js_import">js_import</link>
с файлом сценария <path>http.js</path>:
<example>
load_module modules/ngx_http_js_module.so;

events {}

http {
    js_import http.js;

    server {
        listen 8000;

        location / {
            js_content http.hello;
        }
    }
}
</example>
</para>
</listitem>

</list>
Также доступна отдельная утилита <link doc="cli.xml">командной строки</link>,
которая может использоваться независимо от nginx для разработки и отладки njs.
</para>

</section>


<section id="tested_os_and_platforms"
        name="Протестированные ОС и платформы">

<para>
<list type="bullet">

<listitem>
FreeBSD / amd64;
</listitem>

<listitem>
Linux / x86, amd64, arm64, ppc64el;
</listitem>

<listitem>
Solaris 11 / amd64;
</listitem>

<listitem>
macOS / x86_64;
</listitem>

</list>
</para>

</section>


<section id="presentation" name="Презентация на nginx.conf 2018">

<para><video id="Jc_L6UffFOs" /></para>

</section>

</article>