写点什么

Loco:Rails 灵感启发的新 Rust 框架

作者:Shaaf Syed

  • 2024-03-20
    北京
  • 本文字数:1493 字

    阅读完需:约 5 分钟

Loco:Rails 灵感启发的新 Rust 框架

Loco 是一个类似于 Ruby on Rails 的新框架,它能够让开发人员使用 Rust 编写 MVC 风格的 web 应用程序。Rust 的语言特性,如并发性、安全性、强类型和性能,是该框架优于 Rails 或其衍生方案的部分优势。但是,Loco 的创建者主要关注那些希望轻松构建 MVC 风格应用程序的 Rust 开发人员,使他们不需要四处寻觅就能重拾熟悉的开发体验。


Rust 拥有一系列的库和框架,比如 Axum、Actix、Rocket、Tokio、Warp 和 Reqwest。但是,Loco 是 Rust 生态系统中首个该类型的框架。Loco 0.3.1 是其最新的版本,自 2023 年 11 月以来它共发行了 11 个次(minor)版本。Loco 拥有自己的 CLI、应用程序创建向导和本地开发服务器,并遵循与 Rails 相同的原则,只不过它适用于使用 Rust 编程的开发人员。


Loco 的灵感来源于 David Heinemeier Hansson 的一篇博客文章 “单人框架(The One Person Framework)”,该文倡导一种足够强大的工具集,足以让个人创建现代化的应用程序。单个开发人员只能花费很少的时间来处理将应用程序带入生产环境的复杂流程。像库的选择、健壮性以及架构的可扩展性等重要决策都是需要花费时间和精力的。“单人框架”将这些决策打包到了框架中,解放了开发人员。不过,这么做的代价是可能缺乏灵活性,而且这种实现风格在很大程度上依赖于约定和模式。


就 Rails 框架而言,这种方式多年以来广受赞誉。Rails 的普及率非常高,并启发了其他许多框架。其中之一就是 Grails,它基于 Groovy,这是一种在 JVM(Java 虚拟机)上运行的语言。Loco 的目标是为 Rust 开发人员提供这样的功能。


Loco 可以在 Rust 生态系统中使用惯用语法进行安装:


$ cargo install loco-cli
复制代码


与“rails new”类似,可以使用如下命令创建一个新的 Loco 应用:


$ loco new 
复制代码


控制器和路由也以类似的方式运行,该框架使用了 Axiom。如下的函数返回一个 JSON 响应:


async fn current() -> Result<Json<HomeResponse>> {    format::json(HomeResponse::new("loco"))}
复制代码


路由列表可以按照如下方式定义,这也与开发人员在 Rails 中定义路由的方式类似:


pub fn routes() -> Routes {    Routes::new()            .add("/", get(current))            .add("/loco", get(current)).add("/:id", get(get_one))}
复制代码


Rails 的一个强大功能就是生成模型,并将它们与 REST API 或前端视图以及控制器绑定在一起。Loco 使用“sea_orm”来生成模型。使用如下的示例命令也能轻松生成模型:


$ cargo loco generate model books title:string isbn:string
复制代码


使用“ActiveModelBehaviour”定义行为也很简单,还可以定义事前和事后函数。此外,它还提供了数据库迁移功能。


$ cargo loco generate migration add_web_url
复制代码


Loco 还提供一个测试程序,开发人员可以在“Cargo.toml”中启用该程序,如下所示:


[dev-dependencies]loco-rs = { version = "*", features = ["testing"] }
复制代码


通过默认提供 User 实体并使用 JWT 实现安全的 API,身份认证流程也可以快速配置。它还具有默认 API 中的常用功能,如注册、激活、重置密码等。当通过“loco-cli”将应用程序创建为“Saas app”时,它会生成一个带有预定义路由的启动器,例如:


$ cargo loco routes . . .[POST] /auth/forgot[POST] /auth/login[POST] /auth/register[POST] /auth/reset[POST] /auth/verify[GET] /user/current
复制代码


Loco 构建在 Rails 的经验和 Rust 强大的语言特性之上。它与 Rust 生态系统完美集成,提供模型生成、行为定义、迁移、测试等功能。该项目相对较新,但它是 Rust web 框架中又一个令人兴奋的新成员。


原文链接

https://www.infoq.com/news/2024/02/loco-new-framework-rust-rails/

2024-03-20 08:004443

评论

发布
暂无评论
发现更多内容

BOM/PCB/Gerber比对功能再升级,华秋DFM新版邀您体验!

华秋电子

数据库领域2023上半年盘点

亚信AntDB数据库

数据库 AntDB AntDB数据库

白盒、黑盒、SAST、DAST傻傻分不清?

华为云PaaS服务小智

华为云 华为开发者大会2023 代码检查

CSS 属性选择器,前端开发的效率好物

伤感汤姆布利柏

温州是几线城市?有几家正规等保测评机构?

行云管家

等级保护 等保测评机构 温州

如何使用 NFTScan NFT 数据创建一个 ERC-6551 账户?

NFT Research

ERC721 NFT\

人脸识别技术在智能交通管理中的应用

数据堂

汽车电子国产化,华秋助力国产电源IC高质量发展

华秋电子

Go语言:通过TDD测试驱动开发学习 Mocking (模拟)的思想

不在线第一只蜗牛

TDD Go 语言

如何用好强大的 TDengine 集群 ? 先了解 RAFT 在 3.0 中的应用

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

Linux XArray详解

Linux内核拾遗

数据结构 Linux Kenel

那天,我收到了一封钓鱼邮件...

权说安全

华秋约定您!7月11-13日慕尼黑上海电子展不见不散~

华秋电子

干货满满!阿里、京东、网易等多位专家力荐的高并发编程速成笔记

小小怪下士

Java 编程 程序员 高并发

AI推理实践丨多路极致性能目标检测最佳实践设计解密

华为云开发者联盟

【深入浅出 Yarn 架构与实现】5-3 Yarn 调度器资源抢占模型

快乐非自愿限量之名

架构 YARN

【6.30-7.7】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

国产替代:国有企业数智化转型的挑战与机遇

用友BIP

国产替代

跨文件,跨函数能力是什么?和污点分析能力有什么关系?

华为云PaaS服务小智

编程 软件开发 华为云 华为开发者大会2023 代码检查

全球数字经济大会重磅发布!网心科技入选2023年中国云生态蓝皮书

网心科技

成都堡垒机采购选择哪家好?具体功能有哪些?具体多少钱?

行云管家

网络安全 信息安全 成都 堡垒机

设计通用流程和可变点的方法一些思考

快乐非自愿限量之名

设计 教程 通用流程

【HDC.Cloud 2023】华为开发者大会2023来了!这份PaaS参会指南请查收!

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

如何利用ChatGPT革新智能合约和区块链

互联网工科生

区块链 ChatGPT

Loco:Rails 灵感启发的新 Rust 框架_后端_InfoQ精选文章