有没有人用Lua构建Web应用程序?

时间:2010-01-12 03:42:05

标签: java php lua

我来自Java和PHP背景来构建Web应用程序。

之前是否有人使用 Lua 构建网络应用

问题:如果是这样,专业人士和专业人士是什么?使用Lua与PHP或Java进行Web应用程序的关系? (例如,Web服务器支持,性能,代码维护等)。

7 个答案:

答案 0 :(得分:7)

正如其他人所说,Lua是“自己动手”的一种环境。与Perl / PHP / Python / Ruby相比,它非常快且内存效率非常高,特别是如果您使用的是LuaJIT。并且很容易与C / C ++代码集成。通常这些点与典型的Web应用程序无关,其中性能通常受数据库限制。此外,您并不真正关心C / C ++集成以及您不希望自己做什么,而是希望在现有框架之上构建。出于这个原因,我认为Lua不适合典型的Web应用程序。与此同时,Lua也有一些利基应用。例如,我们公司专门构建用于保存的高性能HTTP服务器。所以我们使用的是我们在C ++中从头开始编写的自己的HTTP服务器,它将Lua集成为我们业务逻辑的脚本语言。这使得我们可以快速定制Lua中的业务逻辑,与我们在纯C ++时必须做的相比。与此同时,我们总是可以选择在C ++中执行性能关键部分。如果我们使用任何其他脚本语言我们肯定会更慢,它将使用更多内存,并且通常更难与C ++代码集成。同时,如果我们使用其他脚本语言,我们并不十分关心丢失大量的库支持,因为我们正在使用的域非常专业,所以通常这些库无关紧要。

答案 1 :(得分:6)

我现在正在使用Lua构建一个Web应用程序!无论软件开发人员发生什么事情,“自己动手”都有一个坏名字 - 太懒了,断断续续的兆字节支持库,或者是什么?实际上,正如其他人所指出的那样,有不错的支持,而不是在Python的规模上。到目前为止,Lua是 最快的脚本语言(特别是www.luajit.org),并且很多,很多更清洁,作为一种语言设计比其他联盟中的任何其他语言设计更干净。这对于长期维护至关重要。

对于那些使用lighttpd作为他们的网络服务器(包括我)的人来说,额外的好处是Lua的全部功能可用于mod_magnet脚本,对于同步请求处理/重写类固醇非常有用

答案 2 :(得分:4)

我用Lua编写了一些网站。第一个是我的魔兽世界公会的突袭计划者(这通常是你在Lua开始编程的方式......)。我使用mod_lua和Apache 2.4的alpha版本。另外两个是针对客户的小型竞赛网站,使用WSAPI,Nginx,Spawn-fcgi和Orbit开发。这个设置很快,比mod_lua和我见过的任何其他东西都快。页面会立即显示,就像它们在缓存中一样!经历非常愉快,Lua让您快速高效。但你最好组织好。 Lua在Web开发方面缺少大量电池,所以你经常需要实现自己的电池,它可能会变得混乱。所以我建议你在开始之前计划你需要的东西。我使用自己的Lua“ORM”与MySQL和分层版本的Lua Pages作为模板。如果您想尝试Lua + Wsapi + Nginx,请查看此处:http://mascarenhas.github.com/2009/10/24/wsapi-nginx-fcgi.html 我认为这是最好的设置。

答案 3 :(得分:2)

有很多项目使用Lua进行Web开发。

例如,Nanoki,一个用纯Lua开发的HTTP和wiki引擎。

或者是Sputnik,它建立在开普勒之上。

那就是说,Lua非常a,“自己动手”的环境。

答案 4 :(得分:2)

优点:快速,小巧,优雅,易于自行绑定到C库。

缺点:有时您必须编写自己的库,以便在Python中免费获得。

http://luanova.org/在Lua的网站开发方面有很多好的帖子。

答案 5 :(得分:0)

lighttpdmod_magnet是非常棒的平台,但我建议您先查看Kepler Project。这是一个非常好的开始。

您可以使您的PHP / Java背景变得有用。

答案 6 :(得分:-1)

我们使用lua在我们的后端实现方面取得了巨大成功。您还可以查看嵌入式设备的JUCI webgui。它使用lua进行后端实现。您可以查看代码如何与lua / C后端进行交互:https://github.com/mkschreder/juci

但请注意,此后端是一个纯jsonrpc后端,因此它不会创建任何像php或cgi页面的html。如果您所做的只是处理并响应json请求,Lua是完美的。您还可以在php中使用主应用程序并使用lua在后端编写应用程序。或主要应用程序完全在JavaScript中。

我认为如果你想在你想要生成html的地方使用lua那么你会发现它缺少很多功能,但是如果你把它限制为纯功能的后端实现,那么你会发现它运行得很好。