Luvit像Node.js一样写Lua应用

2023-12-05 0 454

Luvit像Node.js一样写Lua应用

luvit是什么?它是目前Lua这个小众语言中较为流行的一个开源框架,给那些习惯使用Lua的开发者一个机会向写Node.js一样用Lua进行开发,它是Lua的Node.js.在Gitlab上,项目的描述对于Luvit是这样描述的:Lua + libUV + jIT = pure awesomesauce。

概要信息

Luvit像Node.js一样写Lua应用

安装

提供了安装脚本进行一键安装,但是版本不是最新,如果需要最新的版本,可以从源码开始

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 ~]#

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对悠久资源网的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:

  • Node.js服务Docker容器化应用实践小结
  • 手把手教你使用TypeScript开发Node.js应用
  • 浅谈Node.js 子进程与应用场景
  • 提高Node.js性能的应用技巧分享
  • Node.js的基本应用你知道多少

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Lua Luvit像Node.js一样写Lua应用 https://www.u-9.cn/jiaoben/lua/101634.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务