AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

架构师必备的那些分布式事务解决方案!!

架构师修行之路

分布式 微服务 架构设计

Linux的上手命令

Linux 常用命令

vivo 商城前端架构升级—前后端分离篇

vivo互联网技术

Java 大前端 前后端分离

透视HTTPS建造固若金汤的堡垒

码哥字节

https 加密解密 HTTP

架构训练营学习笔记之五技术选型(一)

于成龙

架构训练营

利用区块链等技术,加强对交通运输信用信息的归集共享和分析应用

CECBC

区块链 交通运输

央行数字货币离我们还有多远?

CECBC

数字货币

算法分析关键

Geek_0b8195

算法和数据结构

万物互联的IoT时代,柔性电子会大行其道吗?

脑极体

一个草根的日常杂碎(10月18日)

刘新吾

随笔杂谈 生活记录 社会百态

一个草根的日常杂碎(10月19日)

刘新吾

随笔杂谈 生活记录 社会百态

【线上排查实战】AOP切面执行顺序你真的了解吗

Zhendong

spring aop

Flink窗口算子-6-8

小知识点

scala 大数据 flink

架构必修:领域边界划分方法--职责驱动设计(RDD)

马迪奥

架构 领域 架构师 RDD

分布式下,我想要一致性

架构师修行之路

分布式 微服务

二十、深入Python迭代器和生成器

刘润森

Python

年纪轻轻怎么就卵巢早衰了?试管可帮忙!

Geek_65d32f

试管 三代试管

typora增强-mac

老菜鸟

Typora

甲方日常 35

句子

工作 随笔杂谈 日常

架构师训练营 1 期 -- 第五周作业

曾彪彪

极客大学架构师训练营

一个草根的日常杂碎(10月20日)

刘新吾

随笔杂谈 生活记录 社会百态

java week1练习

闷骚程序员

数据结构与算法系列之链表操作全集(一)(GO)

书旅

数据结构 数据结构和算法 Go 语言

Go语言内存管理三部曲(三)图解GC算法和垃圾回收原理

网管

内存管理 垃圾回收 GC GC算法 Go 语言

1分钟带你入门 React 公共逻辑抽离HOC...

Leo

大前端 React Hooks HOC Render Props

第四周作业

dll

mongodb 源码实现、调优、最佳实践系列-百万级代码量mongodb内核源码阅读经验分享

杨亚洲(专注MongoDB及高性能中间件)

MySQL mongodb 源码 中间件 分布式数据库mongodb

游戏数值策划之常用excel函数

吴优秀同学

Excel 游戏

聊聊技术人员如何学习成长

架构精进之路

职业成长

Nginx 在运维领域中的应用,看这一篇就够了

华章IT

nginx Linux 运维工程师

深入java week1-01 字节码、内存、GC、调试工具

闷骚程序员

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