关于 nginScript
nginScript 是 JavaScript 语言的一个子集,其可在 http 和 stream 中实现位置(location)和变量处理器。nginScript 符合 ECMAScript 5.1 规范和部分 ECMAScript 6 扩展。合规性仍在不断发展。
目前支持什么
布尔值、数字、字符串、对象、数组、函数和正则表达式ES5.1 运算符,ES7 幂运算符ES5.1语句:var、if、else、switch、for、for in、while、do while、break、continue、return、try、catch、throw、finallyES6 Number 和 Math 的属性和方法String 方法:
ES5.1:fromCharCode、concat、slice、substring、substr、charAt、charCodeAt、indexOf、lastIndexOf、toLowerCase、toUpperCase、trim、search、match、split、replaceES6:fromCodePoint、codePointAt、includes、startsWith、endsWith、repeat非标准:fromUTF8、toUTF8、fromBytes、toBytes Object 方法:
ES5.1:create(不支持属性列表),keys、defineProperty、defineProperties、getOwnPropertyDescriptor、getPrototypeOf、hasOwnProperty、isPrototypeOf、preventExtensions、isExtensible、freeze、isFrozen、seal、isSealed Array 方法:
ES5.1:isArray、slice、splice、push、pop、unshift、shift、reverse、sort、join、concat、indexOf、lastIndexOf、forEach、some、every、filter、map、reduce、reduceRightES6:of、fill、find、findIndexES7:includes ES5.1 Function 方法:call、apply、bindES5.1 RegExp 方法:test、execES5.1 Date 方法ES5.1 全局函数:isFinite、isNaN、parseFloat、parseInt、decodeURI、decodeURIComponent、encodeURI、encodeURIComponent
还不支持什么
ES6 let 和 const 声明标签arguments 数组eval 函数JSON 对象Error 对象setTimeout、setInterval、setImmediate 函数非整数分数(.235),二进制(0b0101),八进制(0o77)字面量
下载与安装
nginScript 可用于以下两个模块:
ngx_http_js_modulengx_stream_js_module
这两个模块都不是默认构建的,它们应该从源文件中编译或者作为一个 Linux 软件包来安装
Linux 包安装方式
在 Linux 环境中,可以使用 nginScript 模块包:
nginx-module-njs - nginScript 动态模块nginx-module-njs-dbg - nginx-module-njs 包的调试符号
源码构建方式
可以使用以下命令克隆 nginScript 的源码仓库:(需要 Mercurial 客户端):
hg clone http://hg.nginx.org/njs
然后使用 --add-module 配置参数进行编译模块:
./configure --add-module
=path-to-njs/nginx
该模块也可以构建为动态的:
./configure --add-dynamic-module
=path-to-njs/nginx
原文档
http://nginx.org/en/docs/njs_about.html