njs入门手册:Nginx JavaScript Engine

in 日常 with 0 comment

关于njs

首先,njs似乎在国内外都不受关注,资料什么的只有 官网参考手册,出了个问题只能看到Github Issue
所以,这篇文章将我的探索过程展示给大家,njs对于可用存储空间较小的设备真的很友好,相比较于NodeJS、Deno这种80M起步的运行环境真的很轻量
但是,这里有几点需要提一下,入坑需谨慎:

入门第一步:TypeScript

虽然njs不支持TypeScript,但是不影响我们使用TypeScript为代码添加类型检查
NJS官方开发了TypeScript类型定义,开箱即用
将定义放在type文件夹中,然后使用三斜杠ref语法引入

配置

入口上,我们不能使用export function语法(前文提到过),需要定义一个入口函数然后使用默认导出

async function main(h:NginxHTTPRequest){
    // ...
}
export default { main }

注意
这个时候不能使用njs-cli运行,会显示SyntaxError: Illegal export statement
解决办法:njs -c "import M from './main.js'; M.main();"

与Nginx集成

使用NJS的目标就是代替NginxLUA模块,NJS复用Nginx的事件循环,因此支持异步操作

Responses