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

评论

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

前端开发之React调度算法的迭代过程

@零度

前端开发 React

从零开发区块链应用(五)--golang网络请求

杰哥的技术杂货铺

golang 区块链 HTTP post GET

BigDecimal 被拼多多的"砍一刀"应用到了极致

恒生LIGHT云社区

Java 拼多多 Java中精确小数计算

SSH 端口转发与 SOCKS 代理

CRMEB

Hive底层 explain 执行计划详解

五分钟学大数据

hive 1月月更

尚硅谷JavaWeb新版视频教程发布

@零度

javaWeb

等保2.0基本要求是什么?跟等保1.0一样吗?

行云管家

网络安全 等保 等级保护 等保2.0

AI 收藏夹 Vol.004:Waifu Lab 火了,AI 是如何创作的?

Zilliz

Spock框架Mock静态资源经验汇总

FunTester

Mockito powermock Mock spock FunTester

开源实践 | OceanBase 在红象云腾大数据场景下的实践与思考

OceanBase 数据库

OceanBase 开源 客户案例 开源实践

大数据开发之Flink sql 的基础用法

@零度

flink sql 大数据开发

Flume简介和架构安装配置详解

编程江湖

深入剖析 HDFS 3.x 新特性-纠删码

五分钟学大数据

hdfs 1月月更

java开发之SpringBoot+flowable实现工作流

@零度

Java springboot

火山引擎边缘计算节点通过 EC Ready 边缘云首批评测

火山引擎边缘云

云原生 边缘计算 测评

使用 electron-builder 打包 Electron 程序

编程三昧

Electron electron实战 1月月更

面对 Log4j2 漏洞,安全人都做了什么?

华为云开发者联盟

Java 漏洞 Apache Log4j2 Log4j2 漏洞 漏洞防护

Java Spring Beans.xml里的Bean定义是如何被解析出来的

汪子熙

Java Spring Boot Spring Java 1月月更

提效赋能:当企业在谈论数字化时,我们在谈论什么?

优秀

管理工具

译文|借助 Pulsar Functions 迁移到无服务应用程序

Apache Pulsar

Java 开源 架构 云原生 Apache Pulsar

飞瓜数据发布2021年抖音短视频直播营销报告(年度版)

极客天地

科技为驱,创新为翼——鲸鲮科技喜获“2021北京软件核心竞争力企业”评价

鲸鲮JingOS

操作系统 创新 信创 信息化 科技企业

Redis持久化RDB和AOF区别

编程江湖

redis'

中间件头部厂商加入,龙蜥社区携手东方通共创开源新生态

OpenAnolis小助手

Linux 开源

第三节:SpringBoot中web项目推荐目录结构

入门小站

springboot java 编程

一个BPMN流程示例带你认识项目中流程的生命周期

华为云开发者联盟

工作流 项目 BPM BPMN Activiti框架

引领中国分布式数据库企业技术创新力,平凯星辰获得赛迪顾问报告推荐

PingCAP

Promise 异步流程控制

编程江湖

不会使用Spring的配置文件,赶紧把这个甩给他

华为云开发者联盟

Java spring API bean 配置文件

【等保小知识】等保二级是否需要做密评?什么是密评?

行云管家

网络安全 等级保护 等保2.0 等保二级

干掉大小流切换 I 帧!阿里云 RTC QoS 及视频编码联合优化之切流编码

阿里云CloudImagine

阿里云 WebRTC 直播 RTC 视频编码

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