写点什么

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:004648

评论

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

中年程序员转行第1年的感悟|2021 年中总结

王磊

Java 编程 编程之路 编程故事

【架构师训练营】电商业务微服务拆分设计

eoeoeo

物联网发展,行业新领域

anyRTC开发者

音视频 WebRTC 智能硬件 智能安防 实时通讯

618技术特辑(四)疯狂剁手的同时,电商隐私安全你注意到了吗?

华为云开发者联盟

电商 数据安全 云安全 618 隐私安全

项目管理100问 | 一个完整的缺陷管理流程是什么样的?

万事ONES

项目管理 研发管理 bug ONES

测试开发之网络篇-常用服务协议

禅道项目管理

IP HTTP 协议

bzz节点挖矿分发系统开发案例

薇電13242772558

区块链

好的目标管理:SMART原则

石云升

创业 职场经验 管理经验 6月日更

【Flutter 专题】101 何为 Flutter Elements ?

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

618技术特辑(三)直播带货王,“OMG买它”的背后,为什么是一连串技术挑战?

华为云开发者联盟

CDN 直播 618 低时延 视频直播

JAVA语言基础(五)--数组

加百利

Java 后端 6月日更

Flink+Hologres助力伊的家电商平台建设新一代实时数仓

Apache Flink

flink

WorkPlus即时通讯-通讯录功能大全

BeeWorks

即时通讯 IM 移动开发 开源安全

OpenKruise :SidecarSet 助力 Mesh 容器热升级

阿里巴巴云原生

容器 云原生

再添新誉!浪潮云斩获年度领先品牌等多项殊荣

云计算

恭喜埃文科技入选“2021年中国网安产业潜力之星”!

郑州埃文科技

HarmonyOS学习路之开发篇——Service Ability

爱吃土豆丝的打工人

Server HarmonyOS 路由 Ability Server

GraphQL 初探

wangwei1237

RESTful API graphql

标准物模型:设备无缝对接,IOT界的福音

华为云开发者联盟

物联网 IoT 物模型 标准物模型 IoT Stage

2021中国边缘计算企业20强榜单出炉,EMQ强势入围!

EMQ映云科技

开源 边缘计算 计算 emq

推理综艺的正确打开方式!爱奇艺玩转智能技术,“互动+内容”引爆迷综季

爱奇艺技术产品团队

Python——嵌套

在即

6月日更

架构之:数据流架构

程序那些事

架构 系统架构 软件架构 程序那些事

如何有效地管理项目变更?

万事ONES

项目管理 研发管理 ONES

EasyRecovery Pro绿色破解版,免序列号激活

淋雨

数据恢复 EasyRecovery 文件恢复 Easyrecovery破解 恢复软件

Flink State 和 Fault Tolerance(二)

Alex🐒

flink 翻译 flink1.13

超全Redis命令总结,墙裂建议收藏,说不定就用上了呢

北游学Java

Java redis

BoCloud博云获评2021云计算PaaS创新领导者

BoCloud博云

容器

云图说|数据仓库服务 GaussDB(DWS) 的“千里眼、顺风耳”—数据库智能运维

华为云开发者联盟

数据库 数据仓库 GaussDB(DWS) 云图说 数据仓库服务

一文读懂云原生 go-zero 微服务框架

晨雨听风

GitHub Web Go 语言

Cilium 首次集成国内云服务,阿里云 ENI 被纳入新版本特性

阿里巴巴云原生

容器 云原生

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