18 个版本
新 0.4.4 | 2024 年 8 月 24 日 |
---|---|
0.4.1 | 2024 年 7 月 7 日 |
0.3.0 | 2023 年 12 月 27 日 |
0.2.8 | 2023 年 11 月 26 日 |
#1740 in 过程宏
279 每月下载量
在 2 个包中使用(通过 ngyn)
105KB
1.5K SLoC
ngyn (en·jn
)
在 Rust 中构建可扩展 Web 服务器的渐进式框架。
有关 Ngyn 的更多信息,请参阅 文档。
特性
- 宏 API,用于将应用程序组织成可重用组件
- 异步中间件,用于处理请求和响应
- 异步路由支持,用于定义路由
- 平台无关,支持多个库和框架
请注意,Ngyn 仍处于早期开发阶段,API 可能会更改。
示例
此示例演示了如何使用 Ngyn 和 Hyper 平台创建简单的 Web 服务器。
[dependencies]
ngyn = { version = "0.4" }
以下是代码
use ngyn::prelude::*;
use ngyn_hyper::HyperApplication;
#[controller]
struct MyController;
#[routes]
impl MyController {
#[get("/")]
fn index(&self) -> String {
"Hello World!".to_string()
}
#[get("/hello/<name>")]
fn hello(&self, param: Param) -> String {
let name = param.get("name").unwrap();
format!("Hello, {}!", name)
}
}
#[module(controllers = [MyController])]
struct MyAppModule;
#[main]
async fn main() {
let app = NgynFactory::<HyperApplication>::create::<MyAppModule>();
let _ = app.listen("127.0.0.1:8080").await;
}
理念
描述
Ngyn 提出了一种有见解的、模块化的和可扩展的架构,主要受 NestJS 启发,并以模块的概念为中心——离散的、可重用的组件,共同塑造一个应用程序。这些模块,每个都处理特定的功能,可以嵌套形成功能层次结构。这种模块化设计简化了组织,并提高了各种项目中的重用性。
平台无关性
在Ngyn中,平台(更准确地说是平台引擎)指的是用于构建应用程序的底层库或框架。例如,您可以使用Actix、Warp或Tide来构建您的Web服务器,这些平台中的每一个都会为构建您的Web服务器提供不同的功能集。
默认情况下,Ngyn使用Hyper作为其底层平台。然而,您并不局限于这一点,也可以选择创建自己的平台引擎。
贡献
Ngyn是一个开源项目,我们欢迎社区的贡献。请随时报告问题、建议改进或提交拉取请求,以帮助我们改进Ngyn。
许可
Ngyn遵循MIT许可协议,允许您自由地使用、修改和分发该框架。
依赖项
~5–7.5MB
~162K SLoC