当前位置: 首页 > news >正文

基于OpenResty的Lua Web框架lor0.0.2预览版发布

Lor是一个运行在OpenResty上的基于Lua编写的Web框架,当前最新版本是0.0.2预览版,重构了之前发布的0.0.1版本。主要API特性已经freeze,下个版本为0.0.3,着重于修复当前路由的匹配bug。

特性

  • 路由采用Sinatra风格,Sinatra是Ruby小而精的web框架.

  • API基本采用了Express的思路和设计,Node.js跨界开发者可以很快上手.

  • 支持插件(middleware),路由可分组,路由匹配支持string/正则模式.

  • lor以后会保持核心足够精简,扩展功能依赖middleware来实现. lor本身也是基于middleware来实现的.

  • 推荐使用lor作为HTTP API Server,lor此后也会支持模板渲染/Session/Cookie等常规web功能.

  • 提供了一个cli工具lord,可以一键生成项目骨架/启动、停止项目,快速体验OpenResty和lua开发.

  • 框架文档在这里

讨论交流

目前有一个QQ群用于在线讨论:QQ群522410959 522410959

快速开始

在使用lor之前请首先确保OpenResty和luajit已安装.

一个简单实例:

local lor = require("lor.index")
local app = lor()

-- 插件: 对以`/user`开始的请求做过滤处理
app:use("/user", function(req, res, next)
    req.params.inject = 'inject value'
    next()
end)

-- 按id查找用户
app:get("/user/query/:id", function(req, res, next)
    local query_id = req.params.id -- 从req.params取参数
    -- 处理...
    next() -- 交给下一个调用者
end)

app:post("/user/:id/create", function(req, res, next)
    -- 创建一个用户
end)

-- 404 error
app:use(function(req, res, next)
    if req:isFound() ~= true then
        res:status(404):send("sorry, not found.")
    end
end)

-- 错误处理插件,可根据需要定义多个
app:erroruse(function(err, req, res, next)
    -- err是错误对象
    res:status(500):send("服务器内发生未知错误")
end)

安装

使用install.sh安装lor框架

#如把lor安装到/opt/lua/lor目录下
sh install.sh /opt/lua/lor 

执行以上命令后lor的命令行工具lord就被安装在了/usr/local/bin下, 通过which lord查看:

$ which lord
/usr/local/bin/lord

lor的运行时包安装在了/opt/lua/lor下, 通过ll /opt/lua/lor查看:

$ ll /opt/lua/lor
total 56
drwxr-xr-x  14 root  wheel   476B  1 22 01:18 .
drwxrwxrwt  14 root  wheel   476B  1 22 01:18 ..
-rw-r--r--   1 root  wheel     0B  1 19 23:48 CHANGELOG.md
-rw-r--r--   1 root  wheel   1.0K  1 19 23:48 LICENSE
-rw-r--r--   1 root  wheel     0B  1 19 23:48 Makefile
-rw-r--r--   1 root  wheel   1.9K  1 21 20:59 README-zh.md
-rw-r--r--   1 root  wheel   870B  1 21 20:59 README.md
drwxr-xr-x   4 root  wheel   136B  1 22 00:06 bin
-rw-r--r--   1 root  wheel   1.6K  1 19 23:48 install.md
-rw-r--r--   1 root  wheel   1.0K  1 21 22:37 install.sh
drwxr-xr-x   4 root  wheel   136B  1 21 22:40 lor
drwxr-xr-x  13 root  wheel   442B  1 22 01:17 test

至此, lor框架已经安装完毕,接下来使用lord命令行工具快速开始一个项目.

使用

$ lord -h
lor v0.0.2, a Lua web framework based on OpenResty.

Usage: lor COMMAND [OPTIONS]

Commands:
 new [name]             Create a new application
 start                  Starts the server
 stop                   Stops the server
 restart                Restart the server
 version                Show version of lor
 help                   Show help tips

Options:
 --debug                Show some runtime details

执行lord new lor_demo,则会生成一个名为lor_demo的示例项目,然后执行:

cd lor_demo
lord start

之后访问http://localhost:8888/,即可。

更多使用方法,请参考test测试用例。

License

MIT

相关文章:

  • RHCA CL220实战系列(一)之KVM部署CloudForms
  • C 指针函数
  • 使用visualvm的插件btrace的一个例子
  • 在java程序中访问windows有用户名和密码保护的共享目录
  • expect 自动登录
  • ImportError No module named setuptools解决
  • Drill官网文档翻译五:连接到数据源
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 利用系统错误日志监控磁盘健康状况
  • 模式识别(第四版)上机实验 【2.2~2.5】
  • 第23讲: Scala高阶函数实战详解
  • SQL Server代理(5/12):理解SQL代理错误日志
  • Spring中@Autowired注解、@Resource注解的区别
  • jquery easyui的datagrid在初始化的时候会请求两次URL?
  • KBEngine 服务器端-loginapp-协议构建、解析执行
  • 【5+】跨webview多页面 触发事件(二)
  • 10个最佳ES6特性 ES7与ES8的特性
  • Android 架构优化~MVP 架构改造
  • create-react-app做的留言板
  • HTML5新特性总结
  • HTML中设置input等文本框为不可操作
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Promise面试题2实现异步串行执行
  • React16时代,该用什么姿势写 React ?
  • Redis 中的布隆过滤器
  • Spring Cloud Feign的两种使用姿势
  • vue2.0项目引入element-ui
  • 从setTimeout-setInterval看JS线程
  • 大主子表关联的性能优化方法
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 那些年我们用过的显示性能指标
  • 我的业余项目总结
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #控制台大学课堂点名问题_课堂随机点名
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三)docker:Dockerfile构建容器运行jar包
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Core引入性能分析引导优化
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @RequestBody的使用
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [2544]最短路 (两种算法)(HDU)
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...