Lua vs PHP/Python/JSP/etc 的中文翻译为 "Lua与PHP/Python/JSP等的比较"。
我即将开始我的下一个 Web 开发项目,想了解 Lua 在 Web 开发领域的优点。
Lua 在 Web 开发方面与 PHP/Python/JSP 等相比如何?
与其他语言相比,Lua 作为 Web 应用程序语言可能存在什么不足之处?
原文链接 https://stackoverflow.com/questions/1303270
Kepler 项目 可能是 Lua Web 应用开发最著名的起点。他们有一个 邮件列表,其中存档了很多关于不同方法的讨论。
Kepler 站点本身使用了一个名叫 Sputnik 的 CMS 框架,几乎完全用 Lua 编写,也基于 Kepler 项目开发。
Lua 的典型方法是使用适合于与各种系统组件进行交互的语言来实现这些接口,并使用 Lua 来进行业务逻辑和集成。Kepler 提供了一些由 C 语言编写的库,这些库为 Lua 代码提供了对文件系统、数据库和网络的访问。它还提供了一个定义良好的 API 层,以便接口与 Web 服务器进行交互实现,其中实现了针对 Apache、任何 CGI 可用的服务器以及 Xavante 的服务器(这是一个主要基于 Lua 实现的完整 Web 服务器)。
简言之:
- Lua 提供了一个更小、更简单的系统,你可以理解其中的全部内容,但是生态系统相对更小。Kepler 就是你能得到的全部内容,你可能需要构建自己的一些东西。我觉得这很容易和有趣(我大量使用 Kepler 项目的 Lua 绑定的 Expat 解析器 和 Lua 对象模型),但其他人可能更喜欢使用其他人都在使用的东西。
- PHP 最初更像一个宏处理器而不是一个语言,虽然它经过了多年的改进,但当人们说“ X 已经变得更好了”时,我倾向于对 X 持谨慎态度。我觉得 PHP 让人望而生畏,但有一个庞大的 Web 开发生态系统。
- Python 是一种好语言,但比 Lua 大得多,并处于一个主要修订的阶段(从 2.5 到 3.x 的过渡期)。同样,你得到了一个庞大的生态系统;我对 Python 的问题是语言和系统对于任何一个人来说都太大了,如果我不需要这样做,我不想处于这种情况。
- Ruby 是一个更干净的语言设计,而且庞大的Rails 生态系统是一个优胜者。Ruby 比 Python 更简单,但比 Lua 更复杂。Rails 有点像一个野兽。
总的来说,问题是:
你宁愿理解系统中的 所有 软件,即使你必须自己构建很多东西吗?
还是宁愿有很多东西已经为你构建好,即使你最终不理解每个部分如何工作?
如果你想理解一切,Lua 就是你的选择。如果你想要很多已经为你构建好的东西,我不能建议你在 PHP/Python/JSP/Rails 等之间选择。
更多关于 Lua 和 Python 的内容,请参见哪种语言更好使用,Lua 还是 Python?。
我来晚了一点......但我想介绍另一种语言:Haxe
为什么?
Haxe是一种开源语言,由一个相当小但活跃的社区推动。
Haxe是一种平台无关的语言,目标包括:
- Flash Player 6-8和9-10的字节码或ActionScript 3源代码
- JavaScript源代码
- PHP源代码
- NekoVM字节码或Neko源代码(NekoVM是一个轻量级且可扩展的虚拟机,适用于服务器开发和桌面应用程序)
- C ++源代码
- 目前正在开发的Android Java源代码
这意味着,作为Web开发人员,您可以使用同一种语言编写丰富的客户端和服务器......同样的代码以后可以重用于桌面/移动应用程序。
Haxe是一种非常表达力和强大的语言,具有以下功能:
- 一级函数(匿名函数和方法,在Haxe中相同的)和闭包以及带参数的Enums(类似于代数类型),这允许使用功能方法
- 良好的类型系统,包括泛型,结构子类型等...为了简化其使用,编译器具有非常有用的类型推断,以确保代码严格类型化,但可以节省大量的冗余(变量类型由初始化决定,函数返回类型由返回表达式的类型决定)...
- 跨平台API,包括从动态数组到反射/内省和远程包的一切,该远程包使得您可以将整个对象从客户端发送到服务器,从一个平台发送到另一个平台...
- 一致而激进的语言设计......当然,它有一些缺陷,但这些主要来源于它针对极不同的平台...
女孩们喜欢它,而且它会让你真正富有... : D
关于Haxe最大的缺点是它允许无类型编码,以代价平台特定的执行无类型代码......如果类型明确(实际上使用Haxe不需要做太多工作),代码将在所有平台上以相同方式执行......如果未计算,则结果会因平台自身的运行时处理而异......
简而言之:这是一种很棒的语言,让您可以针对许多平台...它还很年轻,发展势头很好,您可以参与其中…
就 Lua 网络框架而言,还有 LuCI。它主要用于小型嵌入式系统。我们刚开始使用它,所以现在我不能对它发表太多评论。我们只需要创建一些简单的配置界面,类似于已经提供的示例,所以我相信它将满足我们的需求。
如果只看语言,那么我同意 Norman 的观点。如果你认为 Web 开发框架很重要,那么你必须考虑 Ruby,因为 RoR 是一个非常成熟的框架。我喜欢 Python,但是有相当多的框架可以选择,没有一个是占主导地位的。CherryPy、Django、Pylons、web2py、Zope 2、Zope 3 等等。一个对我来说很重要的指标是,市场上有更多的 RoR 工作比任何其他 (语言、框架)。
- 如何在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 开发相对较少见……当然你可以这么做,但是相比使用已经成熟的 Web 开发语言(如 PHP)或拥有类似 Python/Ruby 等强大 Web 相关库的语言,这将需要更多的时间消耗。如果你选择使用 Lua,这意味着你可能会经常“重复造轮子”,即便成熟 Web 语言中已经有现成的解决方案。
更好的问题是,Lua 相比你所列出的其他语言都有哪些独特的优点?或者,你是否希望通过创建类似 Rails 对 Ruby 那样的 Lua MVC 框架,帮助 Lua 成为更好的 Web 开发平台?