Lua简介
- 官网:http://lua-users.org/wiki/
- 用户社区wiki:http://lua-users.org/wiki/
- 库:LuaForge,LuaBinaries(统一的预编译的各种二进制包的库),LuaRocks,Awesome Lua
- 网友翻译的中文手册:http://cloudwu.github.io/lua53doc/
- tips
- pronounced LOO-ah
- 不要全大写
- 特点
- open source
- may be used for any purpose, including commercial purposes
- free, no cost for any purpose
- License
- not in the public domain
- MIT license
- compatible with GPL
- no GNU-like "copyleft" restrictions
- 使用建议
- if you do use Lua, then you should give us credit by including the copyright notice somewhere in your product or its documentation
- A nice, but optional, way to give us further credit is to include a Lua logo and a link to our site in a web page for your product.
- 优点
- Lua is a proven, robust language
- Lua is fast
- Lua is portable
- Lua is embeddable
- Lua is powerful (but simple)
- Lua is small
- Lua is free
- 使用
- 自行编译
- 现成的二进制包
- 用途
- 1
- 程序热更新(代码级)
- 可以用做数据描述(DSL)
- 程序热更新(代码级)
- 2
- 作为配置文件:灵活强大,可以加入计算,甚至复杂逻辑
- 作为插件脚本:实时更新,不需要编译环节,比如Nginx
- 开发简单DSL:快速小巧,语法简洁,比如跨平台UI布局描述
- 开发顶层项目:并无不可,无缝结合C,更强大,比如Kong
- 3:lua脚本语言,运行依托于宿主语言,可以是c++,c#,golang等,只要实现了lua解析器就可以。
- 比如游戏引擎领域的cocos2d-x、unity,由于引擎自身使用的c++或者c#作为编写语言,游戏前端发布后,发现bug或者发布新逻辑,都需要重新出包,周期过长,lua作为脚本语言,可以以资源的形式下载,重新加载运行,周期快,且效率损失有限
- 服务端使用,比较火的也就是nginx+lua的形式,后来有人做了框架openresty,基本也是利用nginx的高性能+lua脚本的灵活性,逻辑修改之后只需要触发重新加载脚本就可以,开发运行效率都比较高,相比传统c++、java等需要重新编译部署,开发效率高很多
- 4:List of applications using Lua - Wikipedia
-
openresty (nginx 的 lua 模块)
-
Awesome、Scite 的配置
-
Redis 支持服务端 Lua 脚本
-
PostgreSQL 支持服务端 Lua 脚本(以及其它一些语言)
-
LuaTeX,基于 TeX 的排版引擎
-
迅雷也在用(发现了 DLL)
-
游戏开发:云风的 skynet
-
MediaWiki(维基百科所使用的软件)大量使用 Lua 编写的模块,用于生成特定的页面内容
-
Vim、WeeChat 也支持 Lua 脚本编写插件(以及其它一些语言)
-
Wireshark 支持 Lua 脚本编写插件
-
……(太多了)
-
- 5:
- 6:转载自https://www.jb51.net/article/65152.htm
- 1. 在很多时候,我们可以将Lua直接嵌入到我们的应用程序中,如游戏、监控服务器等。这样的应用方式对于程序的最终用户而言是完全透明的,但是对于程序本身,其扩展性将会得到极大的增强。
2. 将Lua视为一种独立的脚本语言,通过它来帮助我们完成一些软件产品的辅助性工具的开发。比如在我们之前的数据分析产品中,我们通过编写Lua脚本,将每个用户不同格式的数据重新格式化为我们的软件平台能够读取的格式,之后再将格式化的后的数据加载到数据库中,或者是写入我们的分析引擎可以识别的数据分析文件中。这其中Lua仅仅用于文件格式的规格化过程,至于此后的操作,都是通过Lua调用我们的C语言导出函数来完成的。
3. 将Lua应用于应用程序的动态配置部分。比如移动智能设备或嵌入式设备,它们的显示分辨率在很多情况下都是非标准的,如果我们为每一款设备都维护一套相关的配置信息,这无疑会加大我们程序的维护开销,如果我们将这段动态配置逻辑交由Lua脚本完成,那么这对于程序配置的灵活性而言,将会得到很大的提高。甚至可以是这样,运行在移动终端设备上的应用程序,在启动主窗体之前先和服务器建立连接,在服务器确认设备的各种参数后,再将和该设备显示相关的Lua脚本发送给设备客户端,这样客户端在得到Lua脚本之后,就可以立刻执行它以得到最新的动态配置信息。
- 1. 在很多时候,我们可以将Lua直接嵌入到我们的应用程序中,如游戏、监控服务器等。这样的应用方式对于程序的最终用户而言是完全透明的,但是对于程序本身,其扩展性将会得到极大的增强。
- 7:转载自https://blog.csdn.net/unsv29/article/details/50157179
-
获得的好处
• 隔离底层,让系统更健壮
• 降低开发成本
• 应付多变的需求
• 热更新系统
• 数据描述更方便• 能做到单一语言难以做到的
易出现的问题
• 多语言构建的系统更为复杂
• 层次划分不清,职责混乱
• 把 Lua 当成 C/C++ 来用
• 定义不恰当的 DSL
-
- 1