comparison xml/ru/docs/http/ngx_http_js_module.xml @ 2530:407c5bd5bffc

Documented the js_import directive and corresponding changes. Also the following changes: - js_include is deprecated - js_access, js_content, js_filter, js_preread, js_set can now accept module.function - Example Configuration changed for both http and stream js modules.
author Yaroslav Zhuravlev <yar@nginx.com>
date Wed, 22 Apr 2020 16:54:11 +0100
parents 1101e24c6d14
children 617bc29bd759
comparison
equal deleted inserted replaced
2529:8cc141e0460f 2530:407c5bd5bffc
7 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> 7 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8 8
9 <module name="Модуль ngx_http_js_module" 9 <module name="Модуль ngx_http_js_module"
10 link="/ru/docs/http/ngx_http_js_module.html" 10 link="/ru/docs/http/ngx_http_js_module.html"
11 lang="ru" 11 lang="ru"
12 rev="19"> 12 rev="20">
13 13
14 <section id="summary"> 14 <section id="summary">
15 15
16 <para> 16 <para>
17 Модуль <literal>ngx_http_js_module</literal> позволяет задавать 17 Модуль <literal>ngx_http_js_module</literal> позволяет задавать
30 30
31 31
32 <section id="example" name="Пример конфигурации"> 32 <section id="example" name="Пример конфигурации">
33 33
34 <para> 34 <para>
35 Пример работает начиная с версии
36 <link doc="../njs/changes.xml" id="njs0.4.0">0.4.0</link>.
35 <example> 37 <example>
36 load_module modules/ngx_http_js_module.so; 38 load_module modules/ngx_http_js_module.so;
37 ... 39 ...
38 40
39 http { 41 http {
40 js_include http.js; 42 js_import http.js;
41 43
42 js_set $foo foo; 44 js_set $foo http.foo;
43 js_set $summary summary; 45 js_set $summary http.summary;
44 46
45 server { 47 server {
46 listen 8000; 48 listen 8000;
47 49
48 location / { 50 location / {
49 add_header X-Foo $foo; 51 add_header X-Foo $foo;
50 js_content baz; 52 js_content http.baz;
51 } 53 }
52 54
53 location = /summary { 55 location = /summary {
54 return 200 $summary; 56 return 200 $summary;
55 } 57 }
56 58
57 location = /hello { 59 location = /hello {
58 js_content hello; 60 js_content http.hello;
59 } 61 }
60 } 62 }
61 } 63 }
62 </example> 64 </example>
63 </para> 65 </para>
64 66
65 <para> 67 <para>
66 Файл <path>http.js</path>: 68 The <path>http.js</path> file:
67 <example> 69 <example>
68 function foo(r) { 70 function foo(r) {
69 r.log("hello from foo() handler"); 71 r.log("hello from foo() handler");
70 return "foo"; 72 return "foo";
71 } 73 }
108 } 110 }
109 111
110 function hello(r) { 112 function hello(r) {
111 r.return(200, "Hello world!"); 113 r.return(200, "Hello world!");
112 } 114 }
115
116 export default {foo, summary, baz, hello};
113 </example> 117 </example>
114 </para> 118 </para>
115 119
116 </section> 120 </section>
117 121
118 122
119 <section id="directives" name="Директивы"> 123 <section id="directives" name="Директивы">
120 124
121 <directive name="js_content"> 125 <directive name="js_content">
122 <syntax><value>функция</value></syntax> 126 <syntax><value>функция</value> | <value>модуль.функция</value></syntax>
123 <default/> 127 <default/>
124 <context>location</context> 128 <context>location</context>
125 <context>limit_except</context> 129 <context>limit_except</context>
126 130
127 <para> 131 <para>
128 Задаёт функцию njs в качестве обработчика содержимого location. 132 Задаёт функцию njs в качестве обработчика содержимого location.
133 Начиная с версии <link doc="../njs/changes.xml" id="njs0.4.0">0.4.0</link>
134 можно ссылаться на функцию модуля.
135 </para>
136
137 </directive>
138
139
140 <directive name="js_import">
141 <syntax><value>модуль.js</value> |
142 <value>имя_экспорта из модуль.js</value></syntax>
143 <default/>
144 <context>http</context>
145 <appeared-in>0.4.0</appeared-in>
146
147 <para>
148 Импортирует модуль, позволяющий задавать обработчики location и переменных
149 на njs.
150 <literal>Имя_экспорта</literal> является пространством имён
151 при доступе к функциям модуля.
152 Если <literal>имя_экспорта</literal> не задано,
153 то пространством имён будет являться имя модуля.
154 <example>
155 js_import http.js;
156 </example>
157 В примере при доступе к экспорту в качестве
158 пространства имён используется имя модуля <literal>http</literal>.
159 Если импортируемый модуль содержит <literal>foo()</literal>,
160 то для доступа используется <literal>http.foo</literal>.
161 </para>
162
163 <para>
164 Директив <literal>js_import</literal> может быть несколько.
129 </para> 165 </para>
130 166
131 </directive> 167 </directive>
132 168
133 169
135 <syntax><value>файл</value></syntax> 171 <syntax><value>файл</value></syntax>
136 <default/> 172 <default/>
137 <context>http</context> 173 <context>http</context>
138 174
139 <para> 175 <para>
140 Задаёт файл, позволяющий задавать обработчики location и переменных 176 Задаёт файл, позволяющий задавать обработчики location и переменных на njs:
141 на njs. 177 <example>
178 nginx.conf:
179 js_include http.js;
180 location /version {
181 js_content version;
182 }
183
184 http.js:
185 function version(r) {
186 r.return(200, njs.version);
187 }
188 </example>
189 </para>
190
191 <para>
192 Директива устарела начиная с
193 <link doc="../njs/changes.xml" id="njs0.4.0">0.4.0</link>,
194 вместо неё следует использовать директиву <link id="js_import"/>.
142 </para> 195 </para>
143 196
144 </directive> 197 </directive>
145 198
146 199
158 </directive> 211 </directive>
159 212
160 213
161 <directive name="js_set"> 214 <directive name="js_set">
162 <syntax> 215 <syntax>
163 <value>$переменная</value> <value>функция</value></syntax> 216 <value>$переменная</value> <value>функция</value> |
217 <value>модуль.функция</value></syntax>
164 <default/> 218 <default/>
165 <context>http</context> 219 <context>http</context>
166 220
167 <para> 221 <para>
168 Задаёт функцию njs для указанной переменной. 222 Задаёт функцию njs для указанной переменной.
223 Начиная с <link doc="../njs/changes.xml" id="njs0.4.0">0.4.0</link>
224 можно ссылаться на функцию модуля.
169 </para> 225 </para>
170 226
171 </directive> 227 </directive>
172 228
173 </section> 229 </section>