Nginx with Javascript (nginxScrpt or njs)

2018-05-09 23:27:15 +08:00
 mywaiting
之前有吐槽过 OpenResty 中的 Nginx+Lua 写得很痛苦,传送门看这里 https://www.v2ex.com/t/438389

本着八卦的心情到处八卦 Nginx+Python, Nginx+Javascript 这样的实现,还真有!

Nginx 官方要实现一个 JavaScript 实现,作为钦点的内置脚本语言。后来这个实现就被称作 nginScript,简称 njs

官方的介绍看这里 http://nginx.org/en/docs/njs_about.html

本着继续八卦到世界的尽头的心态,我还找到了他们的开发仓库 http://hg.nginx.org/njs/

有看到 Igor Sysoev 一直在提交代码吗!!!有看到吗!!!看到吗!!!

仔细看一下他们迭代的版本,已经到 0.2.0 啦!已经基本实现 ES5.1 的要求

这么玩下去,我觉得 njs 合并到 nginx mainline 版本释出,那是指日可待的事情~

想想,性能爆表的 Nginx,加上前后端通杀比世界上最好的 PHP 还要热门的 javascript,这对官方组合会爆出什么样的浪潮~

好了,我觉得这么搞法,章哥的 openresty 目测是玩不过 njs 了~
5117 次点击
所在节点    分享发现
9 条回复
mywaiting
2018-05-09 23:31:03 +08:00
仔细看一下他们 hg 仓库的代码记录,发现 nginxScript 已经正式被除名了,真正的从代码里被删除了,现在的正式名字就只叫 njs
hcymk2
2018-05-09 23:50:25 +08:00
如果觉得写 Lua 痛苦,Javascript 估计会更痛苦。
glues
2018-05-10 00:01:50 +08:00
不要忘了 luajit 的性能,可不是你随便搞搞就能达到的
mywaiting
2018-05-10 00:26:20 +08:00
@hcymk2 #2 js 挺好的,至少是主力语言之一,也许是因为太熟悉了,该踩的坑的都踩完了,没有觉得有啥痛苦的。lua table 模仿一切的数据结构,里面还不能有 nil,私下觉得不是很适应,当然了,这不适应很大的原因是因为对 lua 不熟悉引起的

@glues #3 njs 或者没有 luajit 的性能,但对比之下,比 lua 的生态环境好太多太多了,js 的生态和入门的容易程度,比 lua 领先几个光年
autoxbc
2018-05-10 00:39:06 +08:00
@hcymk2 #2 不一样的,比如汉语其实非常难,但是大家天生就会,js 就是 web 上的母语
0312birdzhang
2018-05-10 07:39:55 +08:00
不是说官方搞出一个东西就胜利了,openresty 的性能跟生态在那摆着呢
glues
2018-05-10 09:52:42 +08:00
@mywaiting 那你为啥不直接用 nodejs ?
mywaiting
2018-05-10 10:22:13 +08:00
@glues 这里面有个逻辑就是,如果不是用 nginx+lua 内嵌这样的实现的话,那么 nginx 前面做 proxy_pass 后端是 nodejs,php-fpm,uwsgi ( Python 系)等这些实现并无区别

njs 的意义我觉得是 nginx 自带 js 引擎了,简单说就是等同于内嵌了 nodejs,这在部署的时候大幅度简化运维的步骤,因为只有一个 nginx,reload 一下,连啥 supervisor 这样的后端 server 监控的都不需要了

@0312birdzhang 不说胜利不胜利,至少是个方向吧。Openresty 的性能有,但是生态跟 js 想比,这个真没法说
glues
2018-05-10 10:49:45 +08:00
@mywaiting
1. njs 能否使用 nodejs 的生态是个问题,我估计是不能直接用的
2. njs 想要达到 nodejs V8 的性能,估计很难

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453594

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX