【问题标题】:Has anyone used Lua to build a web application? [closed]有没有人使用 Lua 构建过 Web 应用程序? [关闭]
【发布时间】:2011-01-04 00:45:25
【问题描述】:

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

以前有没有人用过 Lua 来构建网络应用程序

问题:如果是这样,在 Web 应用程序中使用 Lua 与 PHP 或 Java 的优缺点是什么? (例如 Web 服务器支持、性能、代码维护等)。

【问题讨论】:

标签: java php lua


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我现在正在使用 Lua 构建一个 Web 应用程序!无论“自己动手”的软件开发人员出了什么问题,都名声不好——太懒了,依赖臃肿的兆字节的支持库,还是什么?实际上,正如其他人所指出的那样,有不错的支持,只是没有 Python 的规模。 Lua 是到目前为止最快的脚本语言(尤其是在 www.luajit.org 附近),并且作为一种语言设计,非常非常比其他同类语言中的任何其他语言都干净.这对于长期维护至关重要。

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

    【讨论】:

    • “自己动手”本身并没有错,但如果你必须自己实现所有事情,那么你将不得不在这些事情上花费大量时间,而众所周知,时间就是钱。还有一个问题是您需要考虑库为您处理的许多安全问题 - 但作为交换,如果存在错误,您可以立即做出反应,而库并非总是如此 - 您经常必须等待它更新。
    • Lua 的设计更干净?在发现 Lua 教程与 Python 相似但语法不那么可读后,我放弃了它。顺便说一句,谷歌正在制作 Python 的 C++ 实现,它的运行速度应该是原来的 5 倍。
    • Lua vs Python。 11 点拍摄。
    【解决方案3】:

    我用 Lua 编写了一些网站。第一个是我的魔兽世界公会的突袭计划者(这通常是你开始在 Lua 中编程的方式......)。为此,我使用了带有 Apache 2.4 alpha 版本的 mod_lua。另外两个是面向客户的小型竞赛网站,由 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 我认为这是最好的设置。

    【讨论】:

      【解决方案4】:

      有不少项目使用 Lua 进行 Web 开发。

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

      或者 Sputnik,它建立在 Kepler 之上。

      也就是说,Lua 在很大程度上是一种“自己动手”的环境。

      【讨论】:

        【解决方案5】:

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

        缺点:有时您必须为在 Python 中免费获得的东西编写自己的库。

        http://luanova.org/ 有很多关于 Lua 网络开发的好帖子。

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

          • 感谢您回答并为 Stack Overflow 做出贡献,但是请再看一下这个问题,因为根据help center,它似乎离题了。回答离题的问题看起来好像可以问这样的问题 - 事实并非如此。离题的问题可能会被关闭然后删除,这将使您的贡献无效!
          【解决方案7】:

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

          您可以利用您的 PHP/Java 背景。

          【讨论】:

            猜你喜欢
            • 2022-01-24
            • 1970-01-01
            • 2011-06-10
            • 2012-12-24
            • 2016-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-29
            相关资源
            最近更新 更多