有人使用Lua构建Web应用程序吗?
我来自一个使用Java和PHP构建Web应用程序的背景。
问题:有人在构建Web应用程序时使用过Lua吗?
如果使用过,使用Lua与使用PHP或Java构建Web应用程序相比有哪些优缺点(例如web服务器支持,性能,代码维护等)?
原文链接 https://stackoverflow.com/questions/2046572
我现在正在使用 Lua 构建一个 Web 应用程序!不知道曾经被称为“自己动手做”的软件开发者发生了什么,又是因为太懒,又是被臃肿的支持库培养出来的,还是别的什么原因?实际上,正如其他人指出的,存在着不错的支持,只是没有像 Python 这样的规模。Lua 是迄今为止最快的脚本语言(特别是有了 www.luajit.org),在语言设计方面比任何其他同类语言都要更加优秀和简洁。这对于长期维护至关重要。
对于那些使用 lighttpd 作为他们的 web 服务器(包括我在内)的人来说,额外的好处是 Lua 的全部功能可用于 mod_magnet 脚本,对于同步请求处理/重写会很有用。
如其他人所提到的,Lua 是一种“自己动手做”的环境。它非常快速并且与 Perl、PHP、Python、Ruby 相比非常省内存,特别是如果您正在使用LuaJIT。而且它非常容易与 C/C++ 代码集成。通常这些点对于典型的 Web 应用程序来说是无关紧要的,因为其性能通常受数据库限制。而且在您不真正关心 C/C++ 集成且不想自行构建的情况下,您更想要在现有框架的基础上构建。因此,我认为 Lua 不适合典型的 Web 应用程序。同时,Lua 在某些利基应用程序中表现出色。例如,我们公司专门从事构建用于广告服务的高性能 HTTP 服务器。因此,我们所使用的是以 C++ 为基础重新编写的自己的 HTTP 服务器,它将 Lua 作为业务逻辑的脚本语言进行集成。这使我们能够快速使用 Lua 进行业务逻辑的定制,相对于如果使用纯 C++,我们所需要做的内容少得多。同时,我们总有一个选择,即在 C++ 中执行性能关键部分。如果我们使用任何其他脚本语言,我们肯定会发现它会更慢,占用更多内存,并且通常更难与 C++ 代码集成。同时,我们并不真正关心使用其他脚本语言时丰富库支持的损失,因为我们所从事的领域非常专业化,通常那些库对其来说是无关紧要的。
优点:快速,体积小,优雅,容易将其绑定到 C 库上。
缺点:有时你必须自己编写库,而在 Python 中你可以免费获得。
http://luanova.org/上有关于 Lua 网络开发的多篇优秀文章。
我用 Lua 编写了几个网站。第一个是一个供我的《魔兽世界》公会使用的袭击计划器(这通常是你开始学习 Lua 编程的方式...)。我使用了 mod_lua 和 Apache 2.4 的 alpha 版本。另外两个是为客户开发的小型竞赛网站,使用了 WSAPI、Nginx、Spawn-fcgi 和 Orbit。这个设置非常快,比 mod_lua 和其他我见过的任何东西都要快。这些页面会像缓存一样立即显示!这种经历非常愉快,Lua 使你可以快速提高生产力。但你最好要有良好的组织和规划。当涉及到 Web 开发时,Lua 缺少很多内置功能,所以你经常需要自己实现,这可能会变得混乱。因此,我建议在开始之前计划好你需要的东西。我使用了自己的 Lua "ORM" 与 MySQL 和 Lua 页面的 forked 版本作为模板。如果你想尝试 Lua+Wsapi+Nginx 的组合,请查看这里:http://mascarenhas.github.com/2009/10/24/wsapi-nginx-fcgi.html 我认为这是最好的设置。
lighttpd 和 mod_magnet 是非常优秀的平台,但我建议你首先查看Kepler Project。这是一个相当不错的开始。
你可以将你的 PHP/Java 背景派上用场。
我们非常成功地使用lua实现了我们的后端功能。您也可以查看针对嵌入式设备的JUCI WebGUI,它使用lua实现后端功能。您可以查看代码如何与lua/C后端进行交互:https://github.com/mkschreder/juci
但请注意,此后端是纯jsonrpc后端,因此不像php或cgi页面那样创建任何html。如果您所做的全部工作是处理和响应json请求,则lua非常完美。您还可以在php中使用lua编写应用程序的后端,或者完全使用javascript进行主应用程序。
我认为,如果您想在生成html的地方使用lua,您会发现它缺少许多功能,但如果您将其限制在纯功能后端实现上,那么您会发现它非常有效。
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
有很多项目使用Lua进行web开发。
比如,纯Lua开发的HTTP和wiki引擎Nanoki。
或者是基于Kepler构建的Sputnik。
虽然如此,Lua仍然是一种比较"自助式"的环境。