33

在过去的几天里,我一直在玩 node.js (nodejs),这太棒了。据我所知,lua 没有类似的 libev 和 libio 集成,这让我们避免了几乎任何阻塞调用并以异步方式与网络和文件系统交互。

我正在慢慢地将我的 java 实现移植到 nodejs,但令我震惊的是 luajit 比 v8 JavaScript 快得多并且使用的内存少得多!

我想在这样的环境中编写我的服务器(非常快速和响应,非常低的内存使用,非常富有表现力)将极大地改善我的项目。

作为lua的新手,我只是不确定是否存在这样的事情。我会很感激任何指示。

谢谢

4

9 回答 9

24

最近一个对应的项目是Luvit “(Lua + libUV + jIT = pure awesomesauce)”。

公告

这基本上是 luajit2 + libuv(nodejs 背后的事件循环库)。它像 nodejs 一样编译为单个可执行文件,并且可以运行 .lua 文件。它与股票 luajit 发行版的不同之处在于它添加了几个内置模块和一些稍微不同的语义。

请注意,我们不是作为 apache 或类似的 CGI 脚本运行的。lua 脚本http 服务器。每次向服务器发出 http 请求时,都会调用回调。

于 2011-12-11T11:27:00.203 回答
14

看起来以下正是我想要的:LuaNode https://github.com/ignacio/LuaNode

于 2011-01-18T21:57:05.087 回答
10

参见lualibeventlua-ev以及Lua Gem #27

于 2010-06-06T18:42:10.020 回答
6

你也可以看看 luv:

https://github.com/richardhundt/luv

来自 lua 邮件列表:

luv 与 Luvit - LuaJIT + libuv (Node.js:s/JavaScript/Lua/) 有何关系?

它不是真的。Luvit 大量借鉴了 node.js 的架构(反应堆回调等),静态链接到 luajit,提供它自己的模块系统和可执行文件。Luv 只是一个绑定到 libuv 的 Lua 模块。关键区别在于 Luv 更像是一个结合了协程和 OS 线程的 mn 线程引擎,同时在底层使用 libuv 事件循环。

因此,除了它们都绑定到 libuv 之外,它们没有太多共同点。

于 2012-10-31T23:00:10.487 回答
5

你可能想看看Luvit或在Lua Github网站上看一看。我认为它采用了在 Lua中实现 Node.js 功能的方法。您在客户端和服务器端编写 Lua 代码。这是Luvit 在 Lua 中执行 Node.js 功能的方法的描述。

于 2012-09-07T20:37:06.883 回答
3

如果我正确理解了这个问题,请查看http://openresty.com/

于 2011-08-27T17:39:32.900 回答
3

luvit 的目标是成为 Lua 就像 Node.js 对 Javascript 一样。绝对是一个很有前途的项目。

于 2012-07-04T22:44:18.893 回答
2

您可以使用lua-handlers获得 node.js 风格的非阻塞 IO 。

它甚至有一个异步。HTTP 客户端,这使得启动并行 HTTP 请求变得非常容易。请参阅 test_http_client.lua 文件作为 HTTP 客户端接口的示例。

于 2010-12-28T09:20:27.983 回答
1

您还应该查看 Lapis。这是一个非常轻量级和快速的 OpenResty 框架:http: //leafo.net/lapis/

我真的很喜欢它,并预测它会有一个光明的未来!

正如您对利用 OpenResty 构建的任何东西所期望的那样,它的基准非常好:https ://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=query

Lapis 的作者还为 Lua 编写了一种类似于 CoffeeScript 的语言,称为 MoonScript,非常不错: http ://moonscript.org/

于 2016-03-10T19:32:31.027 回答