报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

评论

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

10分钟了解Kubernetes网络

俞凡

架构 Kubernetes 云原生

首款搭载OpenHarmony 3.2的智能POS终端通过“开源鸿蒙”兼容性测评

科技热闻

Jogger慢跑者链游系统开发NFT技术

薇電13242772558

NFT 链游

什么是双机热备技术?华为和思科如何实现双机热备?

做梦都在改BUG

Java 网络 双机热备

用户组是什么意思?怎么容易理解?有什么作用?

行云管家

运维 权限 用户组

探究核心技术&最佳实践,云原生OLAP论坛火热开启!

阿里云大数据AI技术

云原生

深度学习应用篇-计算机视觉-目标检测[4]:综述、边界框bounding box、锚框(Anchor box)、交并比、非极大值抑制NMS、SoftNMS

汀丶人工智能

人工智能 深度学习 计算机视觉 目标检测 6 月 优质更文活动

问道价值互联网,区块链的下一个十年 | 2023开放原子全球开源峰会区块链分论坛即将启幕

开放原子开源基金会

区块链 开源 开放原子全球开源峰会

深入了解mock.js,打造出类似真实数据的模拟数据

Apifox

程序员 前端 前端开发 API Mock

赋能生态合作 共话数字创新 | 2023开放原子全球开源峰会软硬协同开源分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 软硬协同开源

Openjob 1.0.2 重磅发布,新一代分布式任务调度框架

stelin

分布式架构 Java 分布式

深度学习应用篇-计算机视觉-图像分类[3]:ResNeXt、Res2Net、Swin Transformer、Vision Transformer等模型结构、实现、模型特点详细介绍

汀丶人工智能

人工智能 深度学习 计算机视觉 图像分类 6 月 优质更文活动

【体验有奖】玩转 AIGC,函数计算 x 通义千问预体验,一键部署AI应用赢Airpods

Serverless Devs

函数计算FC AIGC

深入探究Flink:实时处理与批量处理的完美结合

xfgg

Java flink 6 月 优质更文活动

浅谈微服务异步解决方案

做梦都在改BUG

Java 微服务 异步

大厂面试必备!字节大佬刷Leetcode总结的算法笔记

做梦都在改BUG

Java 数据结构 算法 LeetCode

咸阳有没有等保测评机构?在哪里?怎么联系?

行云管家

等保 等保测评 等保测评机构 咸阳

打造高可用的微服务架构:Spring Cloud 的优化与实践

xfgg

Java 微服务 SpringCloud 6 月 优质更文活动

“变脸的秘密”!直播源码app开发技术特效功能的实现

山东布谷科技

源码剖析 APP开发 软件开发、 源码搭建 直播源码

等待还是转行?GitHub爆赞的10W字Java八股文,你没得选择

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

架构模块一作业

sandywrh

来自大佬的洗礼!全网独家的SpringBoot核心文档,讲的太清晰了

做梦都在改BUG

Java Spring Boot

来了解Amazon CodeWhisperer的强大吧

初学者

云计算 亚马逊 亚马逊云

阿里P8现身说法,解密“架构”原理与实战笔记:从分布式到微服务

做梦都在改BUG

Java 架构 分布式 微服务

百度离线资源治理

百度Geek说

数据库 大数据 离线 企业号 6 月 PK 榜 6 月 优质更文活动

让ChatGPT来写今年的高考作文,能得几分?

楚少AI

ChatGPT4 2023高考 ChatGPT写作

最强AIGC实战应用速成指南来了!14天掌握核心技术

飞桨PaddlePaddle

人工智能 深度学习 百度飞桨

瞄准“量效”难题,百度营销创新推出大健康线索营销解决方案-医效通

说山水

2023世界人工智能大会“AI生成与垂直大语言模型”论坛重磅来袭!

NLP资深玩家

Amazon CodeWhisperer代码提示体验本文带你了解

我叫于豆豆吖.

云计算 亚马逊 亚马逊云

OpenHarmony 4.0 Beta1发布,邀您体验

OpenHarmony开发者

OpenHarmony

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