关于 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
、finally
- ES6
Number
和Math
的属性和方法 String
方法:- ES5.1:
fromCharCode
、concat
、slice
、substring
、substr
、charAt
、charCodeAt
、indexOf
、lastIndexOf
、toLowerCase
、toUpperCase
、trim
、search
、match
、split
、replace
- ES6:
fromCodePoint
、codePointAt
、includes
、startsWith
、endsWith
、repeat
- 非标准:
fromUTF8
、toUTF8
、fromBytes
、toBytes
- ES5.1:
Object
方法:- ES5.1:
create
(不支持属性列表),keys
、defineProperty
、defineProperties
、getOwnPropertyDescriptor
、getPrototypeOf
、hasOwnProperty
、isPrototypeOf
、preventExtensions
、isExtensible
、freeze
、isFrozen
、seal
、isSealed
- ES5.1:
Array
方法:- ES5.1:
isArray
、slice
、splice
、push
、pop
、unshift
、shift
、reverse
、sort
、join
、concat
、indexOf
、lastIndexOf
、forEach
、some
、every
、filter
、map
、reduce
、reduceRight
- ES6:
of
、fill
、find
、findIndex
- ES7:
includes
- ES5.1:
- ES5.1
Function
方法:call
、apply
、bind
- ES5.1
RegExp
方法:test
、exec
- ES5.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 可用于以下两个模块:
这两个模块都不是默认构建的,它们应该从源文件中编译或者作为一个 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