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 次下载

MIT 许可证

110KB
2.5K SLoC

Reluax

Crates.io Version

reluax 允许您使用受JSX启发的Lua方言轻松创建动态网站。该服务是用Rust编写的,并使用 luajit 作为其Lua运行时,以提高性能和方便其他库的集成。

要求

  • luajit

安装

此项目可通过GitHub发布版作为预构建的二进制文件提供,或通过 crates.io 通过 cargo install reluaxcrates.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.luaxreluax.lua。此模块需要返回一个包含成员函数 route 的表,并可选地返回项目名称,键为 name。有关代码示例,请参阅 示例目录

route 函数将使用请求的路径调用,可选地使用方法和正文,并可以通过返回两个值:状态码和响应正文来返回各种响应。

响应体通常是一个表格,默认情况下会被当作HTML页面处理(参见 example/basic/)。它可以通过函数 reluax.htmlreluax.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