Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/en/docs/njs/engine.xml
1 views
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="JavaScript Engine"
10
link="/en/docs/njs/engine.html"
11
lang="en"
12
rev="6"
13
toc="no">
14
15
<section>
16
17
<para>
18
Starting from version <link doc="changes.xml" id="njs0.8.6">0.8.6</link>,
19
multiple JavaScript engines are supported.
20
To specify a particular engine, use the <literal>js_engine</literal> directive
21
available for both the
22
<link doc="../http/ngx_http_js_module.xml" id="js_engine">http</link>
23
and
24
<link doc="../stream/ngx_stream_js_module.xml" id="js_engine">stream</link>.
25
By default, the njs engine is used.
26
</para>
27
28
</section>
29
30
31
<section id="njs_engine" name="njs engine">
32
33
<para>
34
<note>
35
The njs engine is deprecated
36
since <link doc="changes.xml" id="njs1.0.0">1.0.0</link>;
37
new code should use the
38
<link id="quickjs_engine">QuickJS</link> engine instead.
39
</note>
40
</para>
41
42
<para>
43
njs is an embeddable JavaScript engine
44
developed as a part of the njs module.
45
See the <link doc="compatibility.xml">Сompatibility</link> section for details.
46
</para>
47
48
</section>
49
50
51
<section id="quickjs_engine" name="QuickJS engine">
52
53
<para>
54
<link url="https://bellard.org/quickjs/">QuickJS</link> is a lightweight,
55
embeddable JavaScript engine that supports
56
the <link url="https://tc39.es/ecma262/2023/">ES2023</link> specification,
57
including features as modules, asynchronous generators, proxies and BigInt.
58
</para>
59
60
<para>
61
Since version <link doc="changes.xml" id="njs0.8.6">0.8.6</link>,
62
a drop-in replacement for
63
<link doc="reference.xml">njs/nginx objects</link>
64
has been introduced
65
to ensure compatibility with the njs engine, with the following exceptions:
66
67
<list type="bullet">
68
69
<listitem>
70
njs-specific API:
71
<link doc="reference.xml" id="njs_dump"><literal>njs.dump()</literal></link>,
72
<literal>console.dump()</literal>.
73
</listitem>
74
75
<listitem>
76
deprecated API:
77
<literal>require()</literal>,
78
use the <literal>import</literal> statement instead.
79
</listitem>
80
81
<listitem>
82
<literal>js_preload_object</literal> directive for
83
<link doc="../http/ngx_http_js_module.xml" id="js_preload_object">http</link>
84
and
85
<link doc="../stream/ngx_stream_js_module.xml" id="js_preload_object">stream</link>.
86
</listitem>
87
88
</list>
89
90
</para>
91
92
<para>
93
njs built-in modules status:
94
95
<list type="bullet">
96
97
<listitem>
98
<link doc="reference.xml" id="buffer"><literal>buffer</literal></link>:
99
since <link doc="changes.xml" id="njs0.8.6">0.8.6</link>.
100
</listitem>
101
102
<listitem>
103
<link doc="reference.xml" id="crypto"><literal>crypto</literal></link>:
104
since <link doc="changes.xml" id="njs0.8.10">0.8.10</link>.
105
</listitem>
106
107
<listitem>
108
<link doc="reference.xml" id="njs_api_fs"><literal>fs</literal></link>:
109
since <link doc="changes.xml" id="njs0.8.9">0.8.9</link>.
110
</listitem>
111
112
<listitem>
113
<link doc="reference.xml" id="querystring"><literal>querystring</literal></link>:
114
since <link doc="changes.xml" id="njs0.8.10">0.8.10</link>.
115
</listitem>
116
117
<listitem>
118
<link doc="reference.xml" id="builtin_crypto"><literal>WebCrypto</literal></link>:
119
since <link doc="changes.xml" id="njs0.8.10">0.8.10</link>.
120
</listitem>
121
122
<listitem>
123
<link doc="reference.xml" id="xml"><literal>xml</literal></link>:
124
since <link doc="changes.xml" id="njs0.8.10">0.8.10</link>.
125
</listitem>
126
127
<listitem>
128
<link doc="reference.xml" id="zlib"><literal>zlib</literal></link>:
129
since <link doc="changes.xml" id="njs0.8.5">0.8.5</link>.
130
</listitem>
131
132
</list>
133
134
</para>
135
136
<para>
137
njs built-in objects status:
138
139
<list type="bullet">
140
141
<listitem>
142
<link doc="reference.xml" id="process"><literal>process</literal></link>:
143
since <link doc="changes.xml" id="njs0.8.8">0.8.8</link>.
144
</listitem>
145
146
<listitem>
147
<link doc="reference.xml" id="textdecoder"><literal>TextDecoder</literal></link>:
148
since <link doc="changes.xml" id="njs0.8.10">0.8.10</link>.
149
</listitem>
150
151
<listitem>
152
<link doc="reference.xml" id="textencoder"><literal>TextEncoder</literal></link>:
153
since <link doc="changes.xml" id="njs0.8.10">0.8.10</link>.
154
</listitem>
155
156
</list>
157
158
</para>
159
160
<para>
161
nginx built-in objects status:
162
163
<list type="bullet">
164
165
<listitem>
166
<link doc="reference.xml" id="ngx_fetch"><literal>ngx.fetch</literal></link>:
167
since <link doc="changes.xml" id="njs0.9.1">0.9.1</link>.
168
</listitem>
169
170
<listitem>
171
<link doc="reference.xml" id="ngx_shared"><literal>shared dictionary</literal></link>:
172
since <link doc="changes.xml" id="njs0.8.8">0.8.8</link>.
173
</listitem>
174
175
</list>
176
177
</para>
178
179
</section>
180
181
</article>
182
183