4个版本
0.2.1 | 2024年1月19日 |
---|---|
0.2.0 | 2024年1月19日 |
0.1.1 | 2024年1月15日 |
0.1.0 | 2024年1月14日 |
#35 在 #lua
每月 38 次下载
110KB
2.5K SLoC
Reluax
reluax
允许您使用受JSX启发的Lua方言轻松创建动态网站。该服务是用Rust编写的,并使用 luajit
作为其Lua运行时,以提高性能和方便其他库的集成。
要求
luajit
安装
此项目可通过GitHub发布版作为预构建的二进制文件提供,或通过 crates.io
通过 cargo install reluax
从 crates.io
安装,如果您已安装Rust工具链。或者,它被包装为Nix flake:如果您已安装Nix,则可以 nix run github:Duckonaut/reluax
运行。
使用方法
Commands:
serve Serve a directory of LuaX files in production mode
build Build a directory of LuaX files
dev Serve a directory of LuaX files in development mode
new Create a new project
init Initialize a new project in the current directory
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
Examples:
reluax serve
reluax serve --port 4000
reluax dev -P public/ -C luax/
要创建一个示例项目,运行 reluax new my-first-project
。
灵感
该项目受到了Ben Visness的博客文章的极大启发,该文章是 我为Lua编写了JSX(因为我讨厌静态网站),我强烈推荐阅读。
API
Reluax项目非常简单。Reluax期望运行一个文件目录,入口点为 reluax.luax
或 reluax.lua
。此模块需要返回一个包含成员函数 route
的表,并可选地返回项目名称,键为 name
。有关代码示例,请参阅 示例目录。
route
函数将使用请求的路径调用,可选地使用方法和正文,并可以通过返回两个值:状态码和响应正文来返回各种响应。
响应体通常是一个表格,默认情况下会被当作HTML页面处理(参见 example/basic/
)。它可以通过函数 reluax.html
或 reluax.json
进行可选包装,前者确保HTML原样返回,不包含 <!DOCTYPE html>
标签,后者将表格作为JSON对象返回。
通过这种方式,你可以构建一个相当强大的后端,通过LuaX代码处理模板、路由以及其他任何事情。
reluax
全局表中包含几个实用函数,以下将进行描述
reluax.json
:将表格包装为JSON响应体reluax.html_page
:将表格包装为完整的HTML页面(默认行为)reluax.html
:将表格包装为HTML摘录(例如,与 htmx 一起使用)reluax.path_matches
:检查路径字符串是否匹配模板reluax.path_extract
:从路径中提取命名路径参数
依赖项
~14–25MB
~376K SLoC