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>