Luvit像Node.js一样写Lua应用
luvit是什么?它是目前Lua这个小众语言中较为流行的一个开源框架,给那些习惯使用Lua的开发者一个机会向写Node.js一样用Lua进行开发,它是Lua的Node.js.在Gitlab上,项目的描述对于Luvit是这样描述的:Lua + libUV + jIT = pure awesomesauce。
概要信息
安装
提供了安装脚本进行一键安装,但是版本不是最新,如果需要最新的版本,可以从源码开始
curl -L https://github.com/luvit/lit/raw/master/get-lit.sh | sh
安装日志
[root@kong ~]# curl -L https://github.com/luvit/lit/raw/master/get-lit.sh | sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 127 100 127 0 0 57 0 0:00:02 0:00:02 --:--:-- 57 100 567 100 567 0 0 192 0 0:00:02 0:00:02 --:--:-- 1788 Downloading https://github.com/luvit/luvi/releases/download/v2.7.6/luvi-regular-Linux_x86_64 to luvi % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 615 0 615 0 0 280 0 --:--:-- 0:00:02 --:--:-- 280 100 4261k 100 4261k 0 0 481k 0 0:00:08 0:00:08 --:--:-- 1007k Downloading https://lit.luvit.io/packages/luvit/lit/v3.5.4.zip to lit.zip % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 234k 100 234k 0 0 91459 0 0:00:02 0:00:02 --:--:-- 91488 lit version: 3.5.4 luvi version: v2.7.6 command: make lit.zip lit luvi create config: /root/.litconfig compiling filter: ** excludes by default (first rule is positive) including: commands/README including: commands/add.lua including: commands/auth.lua including: commands/claim.lua including: commands/config.lua including: commands/down.lua including: commands/get-luvi.lua including: commands/help.lua including: commands/init.lua including: commands/install.lua including: commands/ls.lua including: commands/make.lua including: commands/publish.lua including: commands/serve.lua including: commands/share.lua including: commands/sync.lua including: commands/unclaim.lua including: commands/up.lua including: commands/update.lua including: init.lua including: libs/api.lua including: libs/auto-updater.lua including: libs/autoconfig.lua including: libs/calculate-deps.lua including: libs/codec.lua including: libs/core.lua including: libs/db-fs.lua including: libs/db.lua including: libs/exec.lua including: libs/export-zip.lua including: libs/export.lua including: libs/get-installed.lua including: libs/github-request.lua including: libs/handlers.lua including: libs/import.lua including: libs/install-deps.lua including: libs/log.lua including: libs/metrics.lua including: libs/pkg.lua including: libs/rdb.lua including: libs/rules.lua including: libs/snapshots.lua including: libs/stats.lua including: libs/verify-signature.lua including: libs/vfs.lua including: luvit-loader.lua including: main.lua including: package.lua including dependency: base64 (deps/base64.lua) including dependency: coro-channel (deps/coro-channel.lua) including dependency: coro-fs (deps/coro-fs.lua) including dependency: coro-http (deps/coro-http.lua) including dependency: coro-net (deps/coro-net.lua) including dependency: coro-spawn (deps/coro-spawn.lua) including dependency: coro-split (deps/coro-split.lua) including dependency: coro-websocket (deps/coro-websocket.lua) including dependency: coro-wrapper (deps/coro-wrapper.lua) including dependency: git (deps/git/) including dependency: http-codec (deps/http-codec.lua) including dependency: json (deps/json.lua) including dependency: md5 (deps/md5.lua) including dependency: pathjoin (deps/pathjoin.lua) including dependency: pretty-print (deps/pretty-print.lua) including dependency: prompt (deps/prompt.lua) including dependency: querystring (deps/querystring.lua) including dependency: readline (deps/readline.lua) including dependency: resource (deps/resource.lua) including dependency: secure-socket (deps/secure-socket/) including dependency: semver (deps/semver.lua) including dependency: sha1 (deps/sha1.lua) including dependency: ssh-rsa (deps/ssh-rsa.lua) including dependency: ustring (deps/ustring.lua) including dependency: weblit-app (deps/weblit-app.lua) including dependency: weblit-auto-headers (deps/weblit-auto-headers.lua) including dependency: weblit-websocket (deps/weblit-websocket.lua) including dependency: websocket-codec (deps/websocket-codec.lua) compiling filter: deps/git/** excludes by default (first rule is positive) including: core.lua including: db.lua including: init.lua including: package.lua including: storage.lua creating binary: /root/lit using luvi from: /root/luvi inserting luvi: /root/luvi storing: commands/add.lua compiling: commands/auth.lua (9.9% reduction) storing: commands/claim.lua storing: commands/config.lua storing: commands/down.lua compiling: commands/get-luvi.lua (20.7% reduction) storing: commands/help.lua compiling: commands/init.lua (14.9% reduction) storing: commands/install.lua compiling: commands/ls.lua (2.6% reduction) storing: commands/make.lua storing: commands/publish.lua compiling: commands/serve.lua (19% reduction) storing: commands/share.lua storing: commands/sync.lua storing: commands/unclaim.lua storing: commands/up.lua compiling: commands/update.lua (23.3% reduction) compiling: deps/base64.lua (29.2% reduction) compiling: deps/coro-channel.lua (19.7% reduction) storing: deps/coro-fs.lua compiling: deps/coro-http.lua (30.4% reduction) compiling: deps/coro-net.lua (18.5% reduction) compiling: deps/coro-spawn.lua (44% reduction) compiling: deps/coro-split.lua (34.4% reduction) compiling: deps/coro-websocket.lua (34.6% reduction) compiling: deps/coro-wrapper.lua (66.1% reduction) compiling: deps/git/core.lua (3.4% reduction) compiling: deps/git/db.lua (18.7% reduction) storing: deps/git/init.lua storing: deps/git/package.lua compiling: deps/git/storage.lua (34.5% reduction) compiling: deps/http-codec.lua (37.2% reduction) compiling: deps/json.lua (30.7% reduction) storing: deps/md5.lua compiling: deps/pathjoin.lua (33.5% reduction) compiling: deps/pretty-print.lua (30.4% reduction) compiling: deps/prompt.lua (43.4% reduction) compiling: deps/querystring.lua (35.9% reduction) compiling: deps/readline.lua (18.6% reduction) compiling: deps/resource.lua (31.5% reduction) compiling: deps/secure-socket/biowrap.lua (31.8% reduction) compiling: deps/secure-socket/context.lua (27.4% reduction) compiling: deps/secure-socket/init.lua (52.5% reduction) storing: deps/secure-socket/package.lua compiling: deps/semver.lua (28.2% reduction) compiling: deps/sha1.lua (27.9% reduction) compiling: deps/ssh-rsa.lua (16.2% reduction) compiling: deps/ustring.lua (37.1% reduction) compiling: deps/weblit-app.lua (14.8% reduction) compiling: deps/weblit-auto-headers.lua (50.9% reduction) compiling: deps/weblit-websocket.lua (35.8% reduction) compiling: deps/websocket-codec.lua (18.2% reduction) storing: init.lua compiling: libs/api.lua (30.9% reduction) compiling: libs/auto-updater.lua (29% reduction) compiling: libs/autoconfig.lua (32.3% reduction) compiling: libs/calculate-deps.lua (30.4% reduction) compiling: libs/codec.lua (31.2% reduction) compiling: libs/core.lua (14% reduction) compiling: libs/db-fs.lua (29.5% reduction) compiling: libs/db.lua (38.2% reduction) compiling: libs/exec.lua (45.1% reduction) compiling: libs/export-zip.lua (36.4% reduction) compiling: libs/export.lua (36.6% reduction) compiling: libs/get-installed.lua (45.9% reduction) compiling: libs/github-request.lua (49.8% reduction) compiling: libs/handlers.lua (18.1% reduction) compiling: libs/import.lua (27.6% reduction) compiling: libs/install-deps.lua (38.4% reduction) compiling: libs/log.lua (60.7% reduction) compiling: libs/metrics.lua (56.8% reduction) compiling: libs/pkg.lua (36.9% reduction) compiling: libs/rdb.lua (22.2% reduction) compiling: libs/rules.lua (29.7% reduction) compiling: libs/snapshots.lua (12.6% reduction) compiling: libs/stats.lua (1.5% reduction) compiling: libs/verify-signature.lua (40.8% reduction) compiling: libs/vfs.lua (29.9% reduction) compiling: luvit-loader.lua (29.8% reduction) compiling: main.lua (24.3% reduction) compiling: package.lua (14.8% reduction) done building: /root/lit done: success lit version: 3.5.4 luvi version: v2.7.6 command: make lit://luvit/luvit luvit luvi load config: /root/.litconfig connecting: wss://lit.luvit.io/ fetching: 1 object fetching: 1 object fetching: 4 objects using snapshot: ab0b6ace5a16a88e6fbb4c8da0083c40cf1d6803 creating binary: /root/luvit using luvi from: /root/luvi fetching: 1 object fetching: 1 object fetching: 27 objects fetching: 16 objects inserting luvi: /root/luvi compiling: deps/buffer.lua (16.5% reduction) compiling: deps/childprocess.lua (19.1% reduction) compiling: deps/codec.lua (35.3% reduction) compiling: deps/core.lua (57.3% reduction) compiling: deps/dgram.lua (25.5% reduction) compiling: deps/dns.lua (25.1% reduction) compiling: deps/fs.lua (6.2% reduction) compiling: deps/helpful.lua (42.7% reduction) compiling: deps/hooks.lua (83.3% reduction) compiling: deps/http-codec.lua (37.4% reduction) compiling: deps/http-header.lua (59.4% reduction) compiling: deps/http.lua (29.6% reduction) compiling: deps/https.lua (45.6% reduction) compiling: deps/json.lua (30.7% reduction) compiling: deps/los.lua (76.9% reduction) compiling: deps/net.lua (13.9% reduction) compiling: deps/path/base.lua (24.9% reduction) compiling: deps/path/init.lua (49.7% reduction) storing: deps/path/package.lua compiling: deps/pathjoin.lua (33.5% reduction) compiling: deps/pretty-print.lua (30.6% reduction) compiling: deps/process.lua (17.2% reduction) compiling: deps/querystring.lua (35.9% reduction) compiling: deps/readline.lua (18.6% reduction) compiling: deps/repl.lua (28.2% reduction) compiling: deps/require.lua (24.6% reduction) compiling: deps/resource.lua (31.5% reduction) compiling: deps/stream/init.lua (55.6% reduction) storing: deps/stream/package.lua compiling: deps/stream/stream_core.lua (38.5% reduction) compiling: deps/stream/stream_duplex.lua (49.7% reduction) compiling: deps/stream/stream_observable.lua (50.8% reduction) compiling: deps/stream/stream_passthrough.lua (65.3% reduction) compiling: deps/stream/stream_readable.lua (48.2% reduction) compiling: deps/stream/stream_transform.lua (62% reduction) compiling: deps/stream/stream_writable.lua (43% reduction) compiling: deps/thread.lua (38.6% reduction) compiling: deps/timer.lua (24% reduction) compiling: deps/tls/common.lua (14.9% reduction) compiling: deps/tls/init.lua (26.1% reduction) compiling: deps/tls/lcrypto.lua (46.8% reduction) compiling: deps/tls/package.lua (2.6% reduction) compiling: deps/url.lua (32.8% reduction) compiling: deps/ustring.lua (37.5% reduction) compiling: deps/utils.lua (39.7% reduction) compiling: init.lua (43.5% reduction) compiling: main.lua (21.6% reduction) compiling: package.lua (21.1% reduction) storing: test.lua done building: /root/luvit done: success [root@kong ~]#
安装结果确认
[root@kong ~]# ./lit --version lit version: 3.5.4 luvi version: v2.7.6 [root@kong ~]# ./luvi --version ./luvi v2.7.6 rex: 8.37 2015-04-28 libuv: 1.9.1 ssl: OpenSSL 1.0.2h 3 May 2016, lua-openssl 0.5.1 [root@kong ~]# ./luvit --version luvit version: 2.14.2 luvi version: v2.7.6 rex version: 8.37 2015-04-28 libuv version: 1.9.1 ssl version: OpenSSL 1.0.2h 3 May 2016, lua-openssl 0.5.1 [root@kong ~]#
拷贝至PATH搜索目录
[root@kong ~]# cp lit /usr/local/bin [root@kong ~]# cp luvi /usr/local/bin [root@kong ~]# cp luvit /usr/local/bin [root@kong ~]# [root@kong ~]# which luvi /usr/local/bin/luvi [root@kong ~]# which lit /usr/local/bin/lit [root@kong ~]# which luvit /usr/local/bin/luvit [root@kong ~]#
Lua界的Node.js
一个Node.js的HelloWorld的server.js可能是这样的,运行则是使用node server.js
var http = require('http'); http.createServer(function (req, res) { var body = 'Hello world\n'; res.setHeader('Content-Type', 'text/plain'); res.setHeader('Content-Length', body.length); res.end(body); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
而Luvit的HelloWorld的Server.lua则是这样的,运行则是使用luvit server.lua
[root@kong ~]# cat server.lua local http = require('http') http.createServer(function (req, res) local body = 'Hello world\n' res:setHeader('Content-Type', 'text/plain') res:setHeader("Content-Length", #body) res:finish(body) end):listen(1337, '127.0.0.1') print('Server running at http://127.0.0.1:1337/') [root@kong ~]#
运行结果为:
[root@kong ~]# luvit server.lua
Server running at http://127.0.0.1:1337/
确认结果:
[root@kong ~]# curl http://localhost:1337
Hello world
[root@kong ~]#
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对猪先飞的支持。如果你想了解更多相关内容请查看下面相关链接
相关文章
- 这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
- 最近在工作中遇到了一个问题,通过查找相关资料才得知原因是因为返回结果的问题,下面这篇文章主要给大家介绍了关于lua读取redis数据的null判断的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下...2020-06-30
- 这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
- 下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20
- 这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
- 在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
- 在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
- 这篇文章主要介绍了Lua判断变量是否为数字、字符串是否可以转换为数字等,本文讲解了Lua 判断是字符还是数字的方法、Lua判断数字的方法、判断可否转换为数字的方法、判断并且准备一个初值的方法,需要的朋友可以参考下...2020-06-30
- 从这一节开始,我们将从零开始打造我们的chrome插件工具库,第一节我们将讲一下插件开发的基础知识并构建一个简单但却很实用的插件,在构建之前,我们先简单的了解一下插件以及插件开发的基础知识...2020-10-03
Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
这篇文章主要介绍了Cocos2d-x UI开发之CCControlColourPicker控件类使用实例,本文代码中包含大量注释来讲解CCControlColourPicker控件类的使用,需要的朋友可以参考下...2020-04-25- 这篇文章主要给大家分享我对JS插件开发的一些感想和心得的相关资料,需要的朋友可以参考下...2016-02-09
- 这篇文章主要为大家介绍了Java开发SpringBoot如何集成接口文档的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...2021-10-28
- 今天小编就为大家分享一篇关于Lua流程控制语句if else的使用示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-06-30
- 前页我们讲了 Drupal8模块开发之路由、控制器和菜单链接教程 ,现在我们将学习进一步开发Drupal8模块,区块和表单。 上一教程:Drupal8模块开发之路由、控制器和菜单链...2016-11-25
- 这篇文章主要介绍了24个ES6方法解决JS实际开发问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-01
Lua的table库函数insert、remove、concat、sort详细介绍
这篇文章主要介绍了Lua的table库函数insert、remove、concat、sort详细介绍,本文分别给出了这几个函数的使用实例,需要的朋友可以参考下...2020-06-30详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
这篇文章主要介绍了详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现的相关资料,需要的朋友可以参考下...2017-03-13- 这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数、写一个模块、package.loaded、module函数等内容,需要的朋友可以参考下...2020-06-30
Lua中的loadfile、dofile、require详解
这篇文章主要介绍了Lua中的loadfile、dofile、require详解,本文分别用实例讲解它的用法和特点等内容,需要的朋友可以参考下...2020-06-30- 这篇文章主要给大家介绍了关于如何使用Vim搭建Lua开发环境的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-30