阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

评论

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

Go语言图书管理RESTful API开发实战

Jackpop

鸿蒙学习笔记之使用 XML 方式创建布局

宇宙之一粟

鸿蒙 java UI 2月月更

消息队列存储消息数据的表结构

皓月

「架构实战营」

LabVIEW生成应用程序(exe)和安装程序(installer)

不脱发的程序猿

LabVIEW 生成应用程序(exe) 安装程序(installer)

从冬奥看中国科技(五):漫天塞地物联网

脑极体

Kubernetes集群仪表盘dashboard&Kuboard安装Demo

山河已无恙

Kubernetes 2月月更

gopher成长之路(四):GO开发工程师写QT

非晓为骁

个人成长

总算彻底搞懂Python集合了

Jackpop

【C语言】一维数组

謓泽

C语言 2月月更 一维数组

DOM 节点的克隆和导入

编程三昧

JavaScript 前端 DOM 2月月更

Go反射的三大法则

linlh

反射 元编程 Go 语言 2月月更

为什么需要单元测试?

蜜糖的代码注释

单元测试 后端开发 2月月更

设计消息队列存储消息数据的 MySQL 表格

swallowluo

架构实战营 #架构实战营 「架构实战营」

kube-scheduler源码分析(1)-初始化与启动分析

良凯尔

源码 Kubernetes 容器 源码分析 #Kubernetes#

技术盘点:2022 年容器、Serverless、可观测、服务网格有哪些值得关注的趋势?

阿里巴巴云原生

阿里云 Serverless 云原生 趋势 可观测

Lyft微服务研发效能提升实践 | 2. 优化快速本地开发

俞凡

研发效能 大厂实践 2月月更 lyft

电子书《大型组织深入推广零代码应用平台的行动指南》正式发布!

明道云

显示器选购总结-戴尔2705QM-明基PD2700U

李印

总结 经验分享

LabVIEW跳转访问网页

不脱发的程序猿

LabVIEW 跳转访问网页

工作想法小计2/7 - 2/11

非晓为骁

个人成长 开发 工作方式 Go 语言

如何打造一款得心应手的VS Code?

Jackpop

Kubernetes核心组件-ETCD详解

巨子嘉

容器 云原生 etcd

技术盘点:2022年云原生架构趋势解读

阿里巴巴云原生

阿里云 架构 云原生 趋势

技术盘点:云原生中间件的技术演进与未来趋势展望

阿里巴巴云原生

阿里云 云原生 中间件 趋势

RPA进阶(一):走近 RPA 世界

No Silver Bullet

RPA 机器人流程自动化 2月月更

韵达基于云原生的业务中台建设 | 实战派

阿里巴巴云原生

阿里云 云原生 业务中台 合作案例

办公效率起飞了!Python终于解放了我的双手

Jackpop

如何利用区块链改进金融系统身份验证?

CECBC

The Rust Programming Language

Joseph295

也许我们可以用另一种角度与观点看待世界所发生的事情,让你有所解答。

叶小鍵

基于51单片机室内灯光控制系统

DS小龙哥

2月月更

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