2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

全栈 TypeScript CRUD 框架 Remult

  • 2023-06-05
    北京
  • 本文字数:1306 字

    阅读完需:约 4 分钟

全栈TypeScript CRUD框架 Remult

Remult 是一个全栈 CRUD 库,它利用 TypeScript 模型来简化开发,并提供了类型安全的 API 客户端和查询构建器。

 

在软件开发中,为了确保系统功能正常,必须管理和同步两个数据模型:服务器模型和客户端模型。服务器模型指定数据库结构和 API,而客户端模型定义 API 的传入传出数据。

 

然而,维护单独的模型集和验证器可能会导致冗余,增加维护开销,以及模型不同步时出错的可能性。

 

Remult 通过提供一个集成模型来解决这个问题。该模型定义了数据库模式,暴露了简单的 CRUD API,并支持客户端集成,使开发人员能够轻松地查询数据库,并且可以确保类型安全。

 

定义实体


Remult 使用装饰器将基本的 JavaScript 类转换为 Remult 实体。开发人员可以向类中添加 Entity 装饰器,并对每个属性应用相关的字段装饰器,从而轻松地完成这项工作。

 

使用装饰器,Remult 简化了创建实体及相关字段的过程,提高了开发人员的高效。

import { Entity, Fields } from "remult"

@Entity("contacts", { allowApiCrud: true})

export class Contact { @Fields.autoIncrement() id = 0 @Fields.string() name = "" @Fields.string() number = ""}
复制代码

 

服务器端设置


要开始使用 Remult,请将其与所选服务器上必要的实体一起注册。

 

幸运的是,Remult 针对几个流行的服务器框架提供了开箱即用的集成,包括 Express、Fastify、Next.js、Nest 和 Koa。

import express from "express";import { remultExpress } from "remult/remult-express";import Contact from "../shared/Contact.ts";

const app = express();

app.use( remultExpress({ entities: [ Contact ] }));
复制代码

 

客户端集成

配置完后端和实体后,下一步是将 Remult 与应用程序的前端集成。

 

幸运的是,Remult 的客户端集成被设计成库无关的。也就是说,它可以使用浏览器 fetch 功能或 Axios 进行操作。

 

为了说明这一点,请看下面的例子:


import { useEffect, useState } from "react"

import { remult } from "remult"import { Contact } from "./shared/Contact"const contactsRepo = remult.repo(Contact)

export default function App() { const [contacts, setContacts] = useState<Contact[]>([])

useEffect(() => { contactsRepo.find().then(setContact) }, [])

return ( <div> <h1>Contacts</h1> <ul> {contacts.map(contact => { return ( <div key={contact.id}> {contact.name} | {contact.phone} </div> ) })} </ul> </div> )}
复制代码

 

从这个例子可以看出,将 Remult 集成到应用程序前端非常简单、灵活。然后,开发人员就可以在整个栈中无缝地利用 Remult 的强大功能了。

 

Remult 是遵循MIT许可的开源软件。欢迎通过 Remult GitHub存储库做贡献。

 

原文链接:

https://www.infoq.com/news/2023/05/remult-crud-typescript/


相关阅读:

“TypeScript不值得!”前端框架Svelte作者宣布重构代码,反向迁移到JavaScript引争议

三年回顾:JavaScript与TypeScript最新特性汇总

TypeScript 5.0 现已发布:全新的装饰器,速度、内存和包大小优化

2023-06-05 08:0017517

评论

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

为世界第一大癌症高效研发首创新药,AI大模型助力药物研发叩开未来之门

飞桨PaddlePaddle

百度飞桨

airasia Superapp × HMS Core:便捷出行,悦享全程

HarmonyOS SDK

HMS Core

基于Jmeter 的接口自动化测试实践探讨

jackwang

元宇宙链游系统开发搭建技术

Congge420

区块链

NFT盲盒卡牌游戏系统开发搭建

Congge420

区块链

PAG动效框架源码笔记 (三)播放流程

olinone

ios android 特效

上海丨阿里云 Serverless 技术实战营邀你来玩!

阿里巴巴云原生

阿里云 Serverless 云原生

龙蜥开发者说:构建软件包?不,是构建开源每一个角落!| 第 20 期

OpenAnolis小助手

开源 操作系统 龙蜥社区 开发者说 优秀贡献奖

智能合约DAPP挖矿系统开发应用

Congge420

区块链

技术同学如何快速熟悉业务

老张

系统架构 业务

为什么 GPU 更适用于时域算法,而 CPU 更适用于频域算法?

思茂信息

gpu cpu 计算机 电脑 电脑硬件

顶会ICSE-2023发布LIBRO技术,缺陷自动重现率达33%

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟 企业号 5 月 PK 榜

面试官让你说说react状态管理?

beifeng1996

前端 React

Midjourney|文心一格prompt教程[技巧篇]:生成多样性、增加艺术风格、图片二次修改、渐进优化、权重、灯光设置等17个技巧等你来学

汀丶人工智能

人工智能 AI绘画 MidJourney prompt learning

2023我的前端面试小结

loveX001

JavaScript 前端

DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小

HarmonyOS开发者

HarmonyOS

速下载!交通业数据安全政策汇编发布

极盾科技

数据安全

mate云端元宇宙系统智能合约链游开发技术

Congge420

区块链

TIDB General Log抓取分析神器

TiDB 社区干货传送门

管理与运维 故障排查/诊断

常用的表格检测识别方法 - 表格区域检测方法(下)

合合技术团队

人工智能 文字识别 表格识别 表格检测

Java常用对象映射工具的介绍和使用

echoes

社招前端二面必会react面试题及答案

beifeng1996

前端 React

性价比提升15%,阿里云发布第八代企业级计算实例g8a和性能增强型实例g8ae

云布道师

全靠这份阿里大佬的“Java进阶面试手册”收获蚂蚁offer

Java你猿哥

Java kafka Spring Boot Netty java面试

全球分布式云大会:AntDB超融合流式实时数仓,打造分布式数据库新纪元

亚信AntDB数据库

AntDB AntDB数据库 企业号 5 月 PK 榜

“中国法研杯”司法人工智能挑战赛:基于UTC的多标签/层次分类小样本文本应用,Macro F1提升13%+

汀丶人工智能

人工智能 nlp 文本分类 小样本学习

js事件循环与macro&micro任务队列-前端面试进阶

loveX001

JavaScript 前端

LED显示屏技术升级方向介绍

Dylan

技术 升级 LED显示屏

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java你猿哥

Java JVM 多线程 ssm 性能调优

“数据进化论”2023数智科技大会官宣:从看、用到智能,与客户共进化

奇点云

发布会 奇点云 数据云 数智科技大会

全栈TypeScript CRUD框架 Remult_大前端_Guy Nesher_InfoQ精选文章