侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Luvit像Node.js一样写Lua应用

前端  /  管理员 发布于 4年前   542

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 Speed100  127 100  127  0   0   57   0 0:00:02 0:00:02 --:--:--  57100  567 100  567  0   0  192   0 0:00:02 0:00:02 --:--:-- 1788Downloading 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 Speed100  615  0  615  0   0  280   0 --:--:-- 0:00:02 --:--:--  280100 4261k 100 4261k  0   0  481k   0 0:00:08 0:00:08 --:--:-- 1007kDownloading 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 Speed100 234k 100 234k  0   0 91459   0 0:00:02 0:00:02 --:--:-- 91488lit version: 3.5.4luvi version: v2.7.6command: make lit.zip lit luvicreate config: /root/.litconfigcompiling filter: ** excludes by default (first rule is positive)including: commands/READMEincluding: commands/add.luaincluding: commands/auth.luaincluding: commands/claim.luaincluding: commands/config.luaincluding: commands/down.luaincluding: commands/get-luvi.luaincluding: commands/help.luaincluding: commands/init.luaincluding: commands/install.luaincluding: commands/ls.luaincluding: commands/make.luaincluding: commands/publish.luaincluding: commands/serve.luaincluding: commands/share.luaincluding: commands/sync.luaincluding: commands/unclaim.luaincluding: commands/up.luaincluding: commands/update.luaincluding: init.luaincluding: libs/api.luaincluding: libs/auto-updater.luaincluding: libs/autoconfig.luaincluding: libs/calculate-deps.luaincluding: libs/codec.luaincluding: libs/core.luaincluding: libs/db-fs.luaincluding: libs/db.luaincluding: libs/exec.luaincluding: libs/export-zip.luaincluding: libs/export.luaincluding: libs/get-installed.luaincluding: libs/github-request.luaincluding: libs/handlers.luaincluding: libs/import.luaincluding: libs/install-deps.luaincluding: libs/log.luaincluding: libs/metrics.luaincluding: libs/pkg.luaincluding: libs/rdb.luaincluding: libs/rules.luaincluding: libs/snapshots.luaincluding: libs/stats.luaincluding: libs/verify-signature.luaincluding: libs/vfs.luaincluding: luvit-loader.luaincluding: main.luaincluding: package.luaincluding 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.luaincluding: db.luaincluding: init.luaincluding: package.luaincluding: storage.luacreating binary: /root/litusing luvi from: /root/luviinserting luvi: /root/luvistoring: commands/add.luacompiling: commands/auth.lua (9.9% reduction)storing: commands/claim.luastoring: commands/config.luastoring: commands/down.luacompiling: commands/get-luvi.lua (20.7% reduction)storing: commands/help.luacompiling: commands/init.lua (14.9% reduction)storing: commands/install.luacompiling: commands/ls.lua (2.6% reduction)storing: commands/make.luastoring: commands/publish.luacompiling: commands/serve.lua (19% reduction)storing: commands/share.luastoring: commands/sync.luastoring: commands/unclaim.luastoring: commands/up.luacompiling: 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.luacompiling: 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.luastoring: deps/git/package.luacompiling: 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.luacompiling: 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.luacompiling: 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.luacompiling: 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/litdone: successlit version: 3.5.4luvi version: v2.7.6command: make lit://luvit/luvit luvit luviload config: /root/.litconfigconnecting: wss://lit.luvit.io/fetching: 1 objectfetching: 1 objectfetching: 4 objectsusing snapshot: ab0b6ace5a16a88e6fbb4c8da0083c40cf1d6803creating binary: /root/luvitusing luvi from: /root/luvifetching: 1 objectfetching: 1 objectfetching: 27 objectsfetching: 16 objectsinserting luvi: /root/luvicompiling: 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.luacompiling: 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.luacompiling: 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.luadone building: /root/luvitdone: success[root@kong ~]#

安装结果确认

[root@kong ~]# ./lit --versionlit version: 3.5.4luvi version: v2.7.6[root@kong ~]# ./luvi --version./luvi v2.7.6rex: 8.37 2015-04-28libuv: 1.9.1ssl: OpenSSL 1.0.2h 3 May 2016, lua-openssl 0.5.1[root@kong ~]# ./luvit --versionluvit version: 2.14.2luvi version: v2.7.6rex version: 8.37 2015-04-28libuv version: 1.9.1ssl 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 转到 Go平台
    下一条:
    详解PHP的Yii框架中自带的前端资源包的使用
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客