comparison xml/ru/docs/njs_about.xml @ 1846:bfac366fa1e4

Added article about nginScript.
author Yaroslav Zhuravlev <yar@nginx.com>
date Thu, 01 Dec 2016 20:09:24 +0300
parents
children 3eecbec12715
comparison
equal deleted inserted replaced
1845:c0f9510ea9c6 1846:bfac366fa1e4
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="Информация о nginScript"
10 link="/ru/docs/njs_about.html"
11 lang="ru"
12 rev="1">
13
14 <section id="summary">
15
16 <para>
17 nginScript - это подмножество языка 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 nignScript совместим с
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 операторы
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>fromUTF8</literal>, <literal>toUTF8</literal>,
85 <literal>fromBytes</literal>, <literal>toBytes</literal>
86 </listitem>
87 </list>
88
89 </listitem>
90
91 <listitem>
92 <literal>Object</literal>:
93 рудиментарная поддержка <literal>Object.create()</literal> без списка свойств
94 </listitem>
95
96 <listitem>
97 Методы <literal>Array</literal>:
98 <list type="bullet">
99 <listitem>
100 ES5.1:
101 <literal>isArray</literal>, <literal>slice</literal>, <literal>splice</literal>,
102 <literal>push</literal>, <literal>pop</literal>,<literal>unshift,</literal>
103 <literal>shift</literal>, <literal>reverse</literal>, <literal>sort</literal>,
104 <literal>join</literal>, <literal>concat</literal>, <literal>indexOf</literal>,
105 <literal>lastIndexOf</literal>, <literal>forEach</literal>,
106 <literal>some</literal>, <literal>every</literal>, <literal>filter</literal>,
107 <literal>map</literal>, <literal>reducde</literal>,
108 <literal>reduceRight</literal>
109 </listitem>
110
111 <listitem>
112 ES6: <literal>includes</literal>
113 </listitem>
114 </list>
115
116 </listitem>
117
118 <listitem>
119 ES5.1 методы <literal>Function</literal>:
120 <literal>call</literal>, <literal>apply</literal>, <literal>bind</literal>
121 </listitem>
122
123 <listitem>
124 ES5.1 методы <literal>RegExp</literal>:
125 <literal>test</literal>, <literal>exec</literal>
126 </listitem>
127
128 <listitem>
129 ES5.1 методы <literal>Date</literal>
130 </listitem>
131
132 <listitem>
133 ES5.1 глобальные функции:
134 <literal>isFinite</literal>, <literal>isNaN</literal>,
135 <literal>parseFloat</literal>, <literal>parseInt</literal>,
136 <literal>decodeURI</literal>, <literal>decodeURIComponent</literal>,
137 <literal>encodeURI</literal>, <literal>encodeURIComponent</literal>
138 </listitem>
139
140 </list>
141 </para>
142
143 </section>
144
145
146 <section id="not_supported" name="Функциональность в разработке">
147
148 <para>
149 <list type="bullet">
150
151 <listitem>
152 поддержка broken scopes
153 </listitem>
154
155 <listitem>
156 ES6 объявления <literal>let</literal> и <literal>const</literal>
157 </listitem>
158
159 <listitem>
160 цикл <literal>for</literal> с <literal>var</literal> в объявлении
161 (<literal>for (var...</literal>)
162 </listitem>
163
164 <listitem>
165 вложенные функции
166 </listitem>
167
168 <listitem>
169 замыкания
170 </listitem>
171
172 <listitem>
173 labels
174 </listitem>
175
176 <listitem>
177 массив <literal>arguments</literal>
178 </listitem>
179
180 <listitem>
181 функция <literal>eval</literal>
182 </listitem>
183
184 <listitem>
185 объект <literal>JSON</literal>
186 </listitem>
187
188 <listitem>
189 объект <literal>Error</literal>
190 </listitem>
191
192 <listitem>
193 функции <literal>setTimeout</literal>, <literal>setInterval</literal>,
194 <literal>setImmediate</literal>
195 </listitem>
196
197 <listitem>
198 поднятие функций
199 </listitem>
200
201 <listitem>
202 дроби без целой части (<literal>.235</literal>),
203 экспоненциальные записи (<literal>3.35e10</literal>),
204 двоичные (<literal>0b0101</literal>),
205 восьмеричные (<literal>0o77</literal>),
206 шестнадцатеричные (<literal>0x1123</literal>) литералы
207 </listitem>
208
209 </list>
210 </para>
211
212 </section>
213
214
215 <section id="install" name="Загрузка и установка">
216
217 <para>
218 nginScript доступен в двух модулях:
219 <list type="bullet">
220
221 <listitem>
222 <link doc="http/ngx_http_js_module.xml">ngx_http_js_module</link>
223 </listitem>
224
225 <listitem>
226 <link doc="stream/ngx_stream_js_module.xml">ngx_stream_js_module</link>
227 </listitem>
228
229 </list>
230 По умолчанию модули не собираются
231 их необходимо собрать из исходного кода
232 или установить из отдельного пакета Linux.
233 </para>
234
235
236 <section id="install_package" name="Установка пакета Linux">
237 <para>
238 Для установки модулей nginScript на Linux могут быть использованы
239 <link doc="../linux_packages.xml" id="dynmodules">пакеты</link>:
240 <list type="bullet">
241
242 <listitem>
243 <literal>nginx-module-njs</literal> —
244 <link doc="ngx_core_module.xml" id="load_module">динамические</link> модули
245 nginScript
246 </listitem>
247
248 <listitem>
249 <literal>nginx-module-njs-dbg</literal> — debug-символы для
250 пакета <literal>nginx-module-njs</literal>
251 </listitem>
252
253 </list>
254 </para>
255
256 </section>
257
258
259 <section id="install_sources" name="Установка из исходных файлов">
260
261 <para>
262 <link url="http://hg.nginx.org/njs">Репозиторий</link>
263 с исходным кодом nginScript можно клонировать следующей командой:
264 (необходим клиент <link url="https://www.mercurial-scm.org">Mercurial</link>):
265 <example>
266 hg clone http://hg.nginx.org/njs
267 </example>
268 Затем модули необходимо собрать с помощью
269 конфигурационного параметра <literal>--add_module</literal>:
270 <example>
271 ./configure --add-module=<value>path-to-njs</value>/nginx
272 </example>
273 Модули также можно собрать как
274 <link doc="ngx_core_module.xml" id="load_module">динамические</link>:
275 <example>
276 ./configure --add-dynamic_module=<value>path-to-njs</value>/nginx
277 </example>
278 </para>
279
280 </section>
281
282 </section>
283
284
285 <section id="issues" name="Известные проблемы">
286
287 <para>
288 Модуль экспериментальный, поэтому возможно всё.
289 </para>
290
291 </section>
292
293 </article>