Mercurial > hg > nginx-site
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> |