njs 0.7.8 已发布。njs 以 nginx 插件的方式存在,它是 JavaScript/ECMAscript 的子集,实现了大部分的 JavaScript 语言功能,没有完全遵从 ECMAScript 标准,同时抛弃了 JavaScript 比较难懂的部分。njs 不通过 V8 引擎实现,而是通过一个更小、能耗更低、更符合 nginx 应用场景的小虚拟机实现,可以理解成 nginx 为其实现了一套自己的词法解析。
作为 nginx 的插件,njs 的安装方式是重新编译 nginx。
新版本下载地址:http://nginx.org/en/docs/njs/install.html
主要变化
nginx modules
- 新增 js_preload_object 指令
- 添加
ngx.conf_prefix
属性 - 将
s.sendUpstream()
和s.sendDownstream()
添加到 stream 模块中 - 支持 Fetch API 中的
HEAD
方法 - 优化 stream 模块中
s.send()
方法的async
回调支持
Core:
- 为函数对象添加
name
实例属性 - 新增
njs.memoryStats
对象 - 修复
String.prototype.trimEnd()
中的 unicode 字符串问题 - 修复
Object.freeze()
中的快速数组问题 - 修复
Object.defineProperty()
中的快速数组问题 - 修复
async
token 被用作对象属性名称的问题 - 修复复杂的分配问题
- 修复当存在重复的环境变量时的 process.env
- 修复模块中的双重声明检测
- 修复根据规范绑定函数调用的问题
- 修复
if
语句的 break 标签问题
详情查看 Changelog。