Mercurial > hg > nginx-site
comparison 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 |
comparison
equal
deleted
inserted
replaced
2243:8cc7642ba82e | 2244:467aef18bf12 |
---|---|
1 <?xml version="1.0"?> | |
2 | |
3 <!-- | |
4 Copyright (C) Nginx, Inc. | |
5 --> | |
6 | |
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> | |
8 | |
9 <article name="Сценарный язык njs" | |
10 link="/ru/docs/njs/index.html" | |
11 lang="ru" | |
12 rev="23"> | |
13 | |
14 <section id="summary"> | |
15 | |
16 <para> | |
17 njs - это подмножество языка JavaScript, который позволяет | |
18 задавать обработчики location и переменных в | |
19 <link doc="../http/ngx_http_js_module.xml">http</link> и | |
20 <link doc="../stream/ngx_stream_js_module.xml">stream</link>. | |
21 njs совместим с | |
22 <link url="http://www.ecma-international.org/ecma-262/5.1/">ECMAScript 5.1</link> | |
23 (строгий режим) c некоторыми расширениями | |
24 <link url="http://www.ecma-international.org/ecma-262/6.0/">ECMAScript 6</link>. | |
25 Совместимость находится в стадии развития. | |
26 </para> | |
27 | |
28 </section> | |
29 | |
30 | |
31 <section id="supported" name="Готовая функциональность"> | |
32 | |
33 <para> | |
34 <list type="bullet"> | |
35 | |
36 <listitem> | |
37 Логические значения, числа, строки, объекты, массивы, | |
38 функции и регулярные выражения | |
39 </listitem> | |
40 | |
41 <listitem> | |
42 ES5.1 операторы, ES7 операторы возведения в степень | |
43 </listitem> | |
44 | |
45 <listitem> | |
46 ES5.1 инструкции: <literal>var</literal>, <literal>if</literal>, | |
47 <literal>else</literal>, <literal>switch</literal>, <literal>for</literal>, | |
48 <literal>for in</literal>, <literal>while</literal>, | |
49 <literal>do while</literal>, <literal>break</literal>, | |
50 <literal>continue</literal>, <literal>return</literal>, <literal>try</literal>, | |
51 <literal>catch</literal>, <literal>throw</literal>, <literal>finally</literal> | |
52 </listitem> | |
53 | |
54 <listitem> | |
55 ES6 методы и свойства <literal>Number</literal> и | |
56 <literal>Math</literal> | |
57 </listitem> | |
58 | |
59 <listitem> | |
60 Методы <literal>String</literal>: | |
61 <list type="bullet"> | |
62 | |
63 <listitem> | |
64 ES5.1: | |
65 <literal>fromCharCode</literal>, <literal>concat</literal>, | |
66 <literal>slice</literal>, <literal>substring</literal>, | |
67 <literal>substr</literal>, <literal>charAt</literal>, | |
68 <literal>charCodeAt</literal>, <literal>indexOf</literal>, | |
69 <literal>lastIndexOf</literal>, <literal>toLowerCase</literal>, | |
70 <literal>toUpperCase</literal>, <literal>trim</literal>, | |
71 <literal>search</literal>, <literal>match</literal>, <literal>split</literal>, | |
72 <literal>replace</literal> | |
73 </listitem> | |
74 | |
75 <listitem> | |
76 ES6: | |
77 <literal>fromCodePoint</literal>, <literal>codePointAt</literal>, | |
78 <literal>includes</literal>, <literal>startsWith</literal>, | |
79 <literal>endsWith</literal>, <literal>repeat</literal> | |
80 </listitem> | |
81 | |
82 <listitem> | |
83 нестандартные: | |
84 <literal>bytesFrom</literal> (0.2.3), | |
85 <literal>fromUTF8</literal>, <literal>toUTF8</literal>, | |
86 <literal>fromBytes</literal>, <literal>toBytes</literal> | |
87 </listitem> | |
88 </list> | |
89 | |
90 </listitem> | |
91 | |
92 <listitem> | |
93 Методы <literal>Object</literal>: | |
94 <list type="bullet"> | |
95 <listitem> | |
96 ES5.1: | |
97 <literal>create</literal> (поддержка без списка свойств), | |
98 <literal>keys</literal>, | |
99 <literal>defineProperty</literal>, | |
100 <literal>defineProperties</literal>, | |
101 <literal>getOwnPropertyDescriptor</literal>, | |
102 <literal>getPrototypeOf</literal>, | |
103 <literal>hasOwnProperty</literal>, | |
104 <literal>isPrototypeOf</literal>, | |
105 <literal>preventExtensions</literal>, | |
106 <literal>isExtensible</literal>, | |
107 <literal>freeze</literal>, | |
108 <literal>isFrozen</literal>, | |
109 <literal>seal</literal>, | |
110 <literal>isSealed</literal> | |
111 </listitem> | |
112 </list> | |
113 | |
114 </listitem> | |
115 | |
116 <listitem> | |
117 Методы <literal>Array</literal>: | |
118 <list type="bullet"> | |
119 <listitem> | |
120 ES5.1: | |
121 <literal>isArray</literal>, <literal>slice</literal>, <literal>splice</literal>, | |
122 <literal>push</literal>, <literal>pop</literal>, <literal>unshift</literal>, | |
123 <literal>shift</literal>, <literal>reverse</literal>, <literal>sort</literal>, | |
124 <literal>join</literal>, <literal>concat</literal>, <literal>indexOf</literal>, | |
125 <literal>lastIndexOf</literal>, <literal>forEach</literal>, | |
126 <literal>some</literal>, <literal>every</literal>, <literal>filter</literal>, | |
127 <literal>map</literal>, <literal>reduce</literal>, | |
128 <literal>reduceRight</literal> | |
129 </listitem> | |
130 | |
131 <listitem> | |
132 ES6: | |
133 <literal>of</literal>, <literal>fill</literal>, <literal>find</literal>, | |
134 <literal>findIndex</literal> | |
135 </listitem> | |
136 | |
137 <listitem> | |
138 ES7: <literal>includes</literal> | |
139 </listitem> | |
140 </list> | |
141 | |
142 </listitem> | |
143 | |
144 <listitem> | |
145 ES5.1 методы <literal>Function</literal>: | |
146 <literal>call</literal>, <literal>apply</literal>, <literal>bind</literal> | |
147 </listitem> | |
148 | |
149 <listitem> | |
150 ES5.1 методы <literal>RegExp</literal>: | |
151 <literal>test</literal>, <literal>exec</literal> | |
152 </listitem> | |
153 | |
154 <listitem> | |
155 ES5.1 методы <literal>Date</literal> | |
156 </listitem> | |
157 | |
158 <listitem> | |
159 ES5.1 объект <literal>JSON</literal> | |
160 </listitem> | |
161 | |
162 <listitem> | |
163 ES5.1 глобальные функции: | |
164 <literal>isFinite</literal>, <literal>isNaN</literal>, | |
165 <literal>parseFloat</literal>, <literal>parseInt</literal>, | |
166 <literal>decodeURI</literal>, <literal>decodeURIComponent</literal>, | |
167 <literal>encodeURI</literal>, <literal>encodeURIComponent</literal> | |
168 </listitem> | |
169 | |
170 <listitem> | |
171 Объекты <literal>Error</literal>: | |
172 <literal>Error</literal>, <literal>EvalError</literal>, | |
173 <literal>InternalError</literal>, <literal>RangeError</literal>, | |
174 <literal>ReferenceError</literal>, <literal>SyntaxError</literal>, | |
175 <literal>TypeError</literal>, <literal>URIError</literal> | |
176 </listitem> | |
177 | |
178 <listitem> | |
179 Функции <literal>setTimeout()</literal> и <literal>clearTimeout()</literal> | |
180 (0.2.0) | |
181 </listitem> | |
182 | |
183 <listitem> | |
184 Методы <literal>File system</literal> | |
185 <link url="https://nodejs.org/api/fs.html#fs_file_system">стиль Node.js</link>: | |
186 <literal>fs.readFile</literal>, <literal>fs.readFileSync</literal>, | |
187 <literal>fs.appendFile</literal>, <literal>fs.appendFileSync</literal>, | |
188 <literal>fs.writeFile</literal>, <literal>fs.writeFileSync</literal> | |
189 </listitem> | |
190 | |
191 <listitem> | |
192 Методы <literal>Crypto</literal> | |
193 <link url="https://nodejs.org/api/crypto.html#crypto_class_hash">стиль Node.js</link> | |
194 (0.2.0): | |
195 <literal>crypto.createHash</literal>, | |
196 <literal>crypto.createHmac</literal> | |
197 </listitem> | |
198 | |
199 </list> | |
200 </para> | |
201 | |
202 </section> | |
203 | |
204 | |
205 <section id="not_supported" name="Функциональность в разработке"> | |
206 | |
207 <para> | |
208 <list type="bullet"> | |
209 | |
210 <listitem> | |
211 ES6 объявления <literal>let</literal> и <literal>const</literal> | |
212 </listitem> | |
213 | |
214 <listitem> | |
215 labels | |
216 </listitem> | |
217 | |
218 <listitem> | |
219 массив <literal>arguments</literal> | |
220 </listitem> | |
221 | |
222 <listitem> | |
223 функция <literal>eval</literal> | |
224 </listitem> | |
225 | |
226 <listitem> | |
227 конструктор <literal>new Function()</literal> | |
228 </listitem> | |
229 | |
230 <listitem> | |
231 функции <literal>setInterval</literal>, | |
232 <literal>setImmediate</literal> | |
233 </listitem> | |
234 | |
235 <listitem> | |
236 дроби без целой части (<literal>.235</literal>) | |
237 </listitem> | |
238 | |
239 </list> | |
240 </para> | |
241 | |
242 </section> | |
243 | |
244 | |
245 <section id="changelog" name="История изменений"> | |
246 | |
247 <para> | |
248 Полная история изменений njs доступна | |
249 <link doc="njs_changes.xml">здесь</link>. | |
250 </para> | |
251 </section> | |
252 | |
253 <section id="njs_api" name="Справочник njs API"> | |
254 | |
255 <para> | |
256 Справочник njs API доступен | |
257 <link doc="njs_api.xml">здесь</link>. | |
258 </para> | |
259 </section> | |
260 | |
261 | |
262 <section id="install" name="Загрузка и установка"> | |
263 | |
264 <para> | |
265 njs доступен в двух модулях: | |
266 <list type="bullet"> | |
267 | |
268 <listitem> | |
269 <link doc="../http/ngx_http_js_module.xml">ngx_http_js_module</link> | |
270 </listitem> | |
271 | |
272 <listitem> | |
273 <link doc="../stream/ngx_stream_js_module.xml">ngx_stream_js_module</link> | |
274 </listitem> | |
275 | |
276 </list> | |
277 По умолчанию модули не собираются | |
278 их необходимо собрать из исходного кода | |
279 или установить из отдельного пакета Linux. | |
280 Кроме того, в пакете Linux предоставляется | |
281 <link id="cli">утилита</link> командной строки njs. | |
282 </para> | |
283 | |
284 | |
285 <section id="install_package" name="Установка пакета Linux"> | |
286 <para> | |
287 Для установки модулей njs на Linux могут быть использованы | |
288 <link doc="../../linux_packages.xml" id="dynmodules">пакеты</link>: | |
289 <list type="bullet"> | |
290 | |
291 <listitem> | |
292 <literal>nginx-module-njs</literal> — | |
293 <link doc="../ngx_core_module.xml" id="load_module">динамические</link> модули | |
294 njs | |
295 </listitem> | |
296 | |
297 <listitem> | |
298 <literal>nginx-module-njs-dbg</literal> — debug-символы для | |
299 пакета <literal>nginx-module-njs</literal> | |
300 </listitem> | |
301 | |
302 </list> | |
303 </para> | |
304 | |
305 </section> | |
306 | |
307 | |
308 <section id="install_sources" name="Установка из исходных файлов"> | |
309 | |
310 <para> | |
311 <link url="http://hg.nginx.org/njs">Репозиторий</link> | |
312 с исходным кодом njs можно клонировать следующей командой: | |
313 (необходим клиент <link url="https://www.mercurial-scm.org">Mercurial</link>): | |
314 <example> | |
315 hg clone http://hg.nginx.org/njs | |
316 </example> | |
317 Затем модули необходимо собрать с помощью | |
318 конфигурационного параметра <literal>--add-module</literal>: | |
319 <example> | |
320 ./configure --add-module=<value>path-to-njs</value>/nginx | |
321 </example> | |
322 Модули также можно собрать как | |
323 <link doc="../ngx_core_module.xml" id="load_module">динамические</link>: | |
324 <example> | |
325 ./configure --add-dynamic-module=<value>path-to-njs</value>/nginx | |
326 </example> | |
327 </para> | |
328 | |
329 <para> | |
330 Чтобы собрать только <link id="cli">утилиту</link> командной строки njs | |
331 необходимо запустить | |
332 команды <literal>./configure</literal> и <literal>make njs</literal> | |
333 из корневого каталога. | |
334 Утилита доступна как <literal>./build/njs</literal>. | |
335 </para> | |
336 | |
337 </section> | |
338 | |
339 | |
340 <section id="cli" name="Интерфейс командной строки"> | |
341 | |
342 <para> | |
343 Создание и отладка njs-скриптов может осуществляться | |
344 в командной строке. | |
345 Утилита командной строки доступна после установки | |
346 <link id="install_package">пакета</link> Linux | |
347 или после сборки из <link id="install_sources">исходных файлов</link>. | |
348 В отличие от njs, запущенном внутри nginx, | |
349 в утилите недоступны объекты nginx | |
350 (<link doc="njs_api.xml" id="http">HTTP</link> и | |
351 <link doc="njs_api.xml" id="stream">Stream</link>). | |
352 <example> | |
353 $ echo "2**3" | njs - | |
354 8 | |
355 | |
356 $ njs | |
357 >> var o = {a:[]} | |
358 undefined | |
359 | |
360 >> JSON.stringify(o, undefined,1) | |
361 { | |
362 "a": [ | |
363 | |
364 ] | |
365 } | |
366 >> | |
367 </example> | |
368 </para> | |
369 | |
370 </section> | |
371 | |
372 </section> | |
373 | |
374 </article> |