comparison xml/ru/docs/http/ngx_http_js_module.xml @ 1843:3492eb9b8138

Translated http and stream js modules into Russian.
author Yaroslav Zhuravlev <yar@nginx.com>
date Mon, 28 Nov 2016 21:29:02 +0300
parents
children f56626ce9c40
comparison
equal deleted inserted replaced
1842:db848aaa123a 1843:3492eb9b8138
1 <?xml version="1.0"?>
2
3 <!--
4 Copyright (C) Nginx, Inc.
5 -->
6
7 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8
9 <module name="Модуль ngx_http_js_module"
10 link="/ru/docs/http/ngx_http_js_module.html"
11 lang="ru"
12 rev="1">
13
14 <section id="summary">
15
16 <para>
17 Модуль <literal>ngx_http_js_module</literal> позволяет задавать обработчики
18 location и переменных на JavaScript.
19 </para>
20
21 <para>
22 По умолчанию этот модуль не собирается, его необходимо собрать с
23 модулем nginx JavaScript с помощью конфигурационного параметра
24 <literal>--add_module</literal>:
25 <example>
26 ./configure --add-module=<value>path-to-njs</value>/nginx
27 </example>
28 <link url="http://hg.nginx.org/njs">Репозиторий</link>
29 модуля nginx JavaScript можно клонировать следующей командой
30 (необходим клиент <link url="https://www.mercurial-scm.org">Mercurial</link>):
31 <example>
32 hg clone http://hg.nginx.org/njs
33 </example>
34 Модуль также можно собрать как
35 <link doc="../ngx_core_module.xml" id="load_module">динамический</link>:
36 <example>
37 ./configure --add-dynamic_module=<value>path-to-njs</value>/nginx
38 </example>
39 </para>
40
41 </section>
42
43
44 <section id="issues" name="Известные проблемы">
45
46 <para>
47 Модуль экспериментальный, поэтому возможно всё.
48 </para>
49
50 </section>
51
52
53 <section id="example" name="Пример конфигурации">
54
55 <para>
56 <example>
57 js_include http.js;
58
59 server {
60 listen 8000;
61
62 location / {
63 js_set $foo foo;
64 add_header X-Foo $foo;
65 js_content baz;
66 }
67
68 location /summary {
69 js_set $summary summary;
70 return 200 $summary;
71 }
72 }
73 </example>
74 </para>
75
76 <para>
77 Файл <path>http.js</path>:
78 <example>
79 function foo(req, res) {
80 req.log("hello from foo() handler");
81 return "foo";
82 }
83
84 function summary(req, res) {
85 var a, s, h;
86
87 s = "JS summary\n\n";
88
89 s += "Method: " + req.method + "\n";
90 s += "HTTP version: " + req.httpVersion + "\n";
91 s += "Host: " + req.headers.host + "\n";
92 s += "Remote Address: " + req.remoteAddress + "\n";
93 s += "URI: " + req.uri + "\n";
94
95 s += "Headers:\n";
96 for (h in req.headers) {
97 s += " header '" + h + "' is '" + req.headers[h] + "'\n";
98 }
99
100 s += "Args:\n";
101 for (a in req.args) {
102 s += " arg '" + a + "' is '" + req.args[a] + "'\n";
103 }
104
105 return s;
106 }
107
108 function baz(req, res) {
109 res.headers.foo = 1234;
110 res.status = 200;
111 res.contentType = "text/plain; charset=utf-8";
112 res.contentLength = 15;
113 res.sendHeader();
114 res.send("nginx");
115 res.send("java");
116 res.send("script");
117
118 res.finish();
119 }
120 </example>
121 </para>
122
123 </section>
124
125
126 <section id="directives" name="Директивы">
127
128 <directive name="js_include">
129 <syntax><value>файл</value></syntax>
130 <default/>
131 <context>http</context>
132 <context>server</context>
133 <context>location</context>
134
135 <para>
136 Задаёт файл, позволяющий задавать обработчики location и переменных
137 на JavaScript.
138 </para>
139
140 </directive>
141
142
143 <directive name="js_content">
144 <syntax><value>функция</value></syntax>
145 <default/>
146 <context>location</context>
147 <context>limit_except</context>
148
149 <para>
150 Задаёт функцию JavaScript в качестве обработчика содержимого location.
151 </para>
152
153 </directive>
154
155
156 <directive name="js_set">
157 <syntax>
158 <value>$переменная</value> <value>функция</value></syntax>
159 <default/>
160 <context>http</context>
161 <context>server</context>
162 <context>location</context>
163
164 <para>
165 Задаёт функцию JavaScript для указанной переменной.
166 </para>
167
168 </directive>
169
170 </section>
171
172
173 <section id="arguments" name="Аргументы запроса и ответа">
174 <para>
175 Каждый HTTP-обработчик JavaScript получает два аргумента: запрос и ответ.
176 </para>
177
178 <para>
179 Объект запроса имеет следующие свойства:
180 <list type="tag">
181
182 <tag-name><literal>uri</literal></tag-name>
183 <tag-desc>
184 текущий URI запроса, только чтение
185 </tag-desc>
186
187 <tag-name><literal>method</literal></tag-name>
188 <tag-desc>
189 метод запроса, только чтение
190 </tag-desc>
191
192 <tag-name><literal>httpVersion</literal></tag-name>
193 <tag-desc>
194 версия HTTP, только чтение
195 </tag-desc>
196
197 <tag-name><literal>remoteAddress</literal></tag-name>
198 <tag-desc>
199 адрес клиента, только чтение
200 </tag-desc>
201
202 <tag-name><literal>headers{}</literal></tag-name>
203 <tag-desc>
204 объект заголовков запроса, только чтение.
205 <para>
206 Например, доступ к заголовку <literal>Header-Name</literal>
207 можно получить при помощи синтаксиса <literal>headers['Header-Name']</literal>
208 или <literal>headers.Header_name</literal>
209 </para>
210 </tag-desc>
211
212 <tag-name><literal>args{}</literal></tag-name>
213 <tag-desc>
214 объект аргументов запроса, только чтение
215 </tag-desc>
216
217 <tag-name><literal>variables{}</literal></tag-name>
218 <tag-desc>
219 объект переменных nginx, только чтение
220 </tag-desc>
221
222 <tag-name><literal>log(<value>строка</value>)</literal></tag-name>
223 <tag-desc>
224 записывает <literal>строку</literal> в лог-файл ошибок
225 </tag-desc>
226 </list>
227 </para>
228
229 <para>
230 Объект ответа имеет следующие свойства:
231 <list type="tag">
232
233 <tag-name><literal>status</literal></tag-name>
234 <tag-desc>
235 статус ответа, доступно для записи
236 </tag-desc>
237
238 <tag-name><literal>headers{}</literal></tag-name>
239 <tag-desc>
240 объект заголовков ответа
241 </tag-desc>
242
243 <tag-name><literal>contentType</literal></tag-name>
244 <tag-desc>
245 значение поля <header>Content-Type</header> заголовка ответа,
246 доступно для записи
247 </tag-desc>
248
249 <tag-name><literal>contentLength</literal></tag-name>
250 <tag-desc>
251 значение поля <header>Content-Length</header> заголовка ответа,
252 доступно для записи
253 </tag-desc>
254 </list>
255 </para>
256
257 <para>
258 Объект ответа имеет следующие методы:
259 <list type="tag">
260
261 <tag-name><literal>sendHeader()</literal></tag-name>
262 <tag-desc>
263 отправляет заголовок HTTP клиенту
264 </tag-desc>
265
266 <tag-name><literal>send(<value>строка</value>)</literal></tag-name>
267 <tag-desc>
268 отправляет часть тела ответа клиенту
269 </tag-desc>
270
271 <tag-name><literal>finish()</literal></tag-name>
272 <tag-desc>
273 завершает отправку ответа клиенту
274 </tag-desc>
275 </list>
276 </para>
277
278 </section>
279
280 </module>