写点什么

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

评论

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

不懂K8s也能上云原生?三大开源平台实战对比与选型经验

北京好雨科技有限公司

rancher KubeSphere rainbond 企业号 3 月 PK 榜

智能制造:企业运营的核心——PMC

积木链小链

数字化转型 企业管理 智能制造 PMC

AI大模型本地化部署的技术

北京木奇移动技术有限公司

AI大模型 私有化部署 软件外包公司

AI大模型本地化部署的关键技术

北京木奇移动技术有限公司

AI大模型 本地化部署 软件外包公司

GreatSQL 8.0.32-27 GA (2025-3-10)

GreatSQL

HarmonyOS SDK让小红书鸿蒙用户尽享相机的拍摄之美

HarmonyOS SDK

harmoyos

研究机构科研管控系统(源码+文档+讲解+演示)

深圳亥时科技

签约!中国煤炭地质总局携手用友打造央企财务数智化建设标杆

用友BIP

数据 智能体 数智化 用友BIP 财务管理

AI大模型本地化部署的优势

北京木奇移动技术有限公司

AI大模型 私有化部署 软件外包公司

快速了解黑龙江等级保护

黑龙江陆陆信息测评部

软件设计模式及其应用

陈一之

软件工程 设计模式

【每日学点HarmonyOS Next知识】输入框自动获取焦点、JS桥实现方式、Popup设置全屏蒙版、鼠标事件适配、Web跨域

轻口味

HarmonyOS HarmonyOS NEXT

签约!中国煤炭地质总局携手用友打造央企财务数智化建设标杆

用友智能财务

财经 会计

CST超材料光子晶体和禁带分析实例

思茂信息

cst cst操作 CST软件

AI大模型本地化部署的工具和框架

北京木奇移动技术有限公司

AI大模型 本地化部署 软件外包公司

【每日学点HarmonyOS Next知识】Tab切换声明周期、复杂Json组装、scroll最大高度、引用传递报错、Web性能

轻口味

HarmonyOS HarmonyOS NEXT

7B 开源模型性能超越 LLaVA,DeepSeek Janus Pro 论文详解

Baihai IDP

人工智能 AI LLMs DeepSeek Janus Pro

LED显示屏:点亮商场与零售的“吸睛”密码

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏

a16z:一文梳理 7 种代币分类,如何区分网络代币与公司支持代币?

TechubNews

加密货币 Meme 加密市场

0代码+AI驱动,霍格沃兹测试开发学社‌「爱测智能化服务平台」限时体验

测试人

人工智能 软件测试 测试开发

AI大模型的本地化部署

北京木奇移动技术有限公司

AI大模型 私有化部署 软件外包公司

【每日学点HarmonyOS Next知识】Web上传文件、监听上下左右区域连续点击、折叠悬停、字符串相关、播放沙盒视频

轻口味

HarmonyOS HarmonyOS NEXT

反向海淘反向代购独立站系统的终极神器?Hoobuy+电商API,让独立站躺着“搬砖”

代码忍者

企业身份安全管理面临的问题

芯盾时代

身份安全 iam 统一身份管理平台

淘宝店铺所有商品数据接口详解

tbapi

淘宝API接口 淘宝店铺所有商品接口

天翼云“息壤”放大招!AI Agent限时优惠资源包,手慢无!

天翼云开发者社区

AI应用 科研助手 算力平台

面试官:你项目是如何保证高可用的?

王磊

【每日学点HarmonyOS Next知识】Web跨域资源、Web长按菜单、Web拦截请求、禁止录屏、Base64图片宽高

轻口味

HarmonyOS HarmonyOS NEXT

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