写点什么

全栈 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:0013082

评论

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

Flink CDC 在新能源制造业的实践

Apache Flink

大数据 flink 实时计算 Flink CDC

高效地窗口布局管理工具:Magnet for mac

理理

窗口管理工具 magnet pro 破解版 Magnet Pro中文版

人工智能 | 清华大学ChatGLM大模型

测试人

人工智能

AI引领,驱动未来:零售企业的新质生产力革命

第七在线

重庆企业选择堡垒机需要考虑哪些因素?有没有推荐的?

行云管家

堡垒机 IT资产 重庆

DTCC2024|HashData Enterprise 4.0 正式发布:构建云原生统一数据处理平台

酷克数据HashData

Amazon Bedrock 实践:零基础创建贪吃蛇游戏

亚马逊云科技 (Amazon Web Services)

生成式人工智能

AirBuddy 3 for mac AirPods耳机管理软件

理理

Airbuddy AirPods耳机管理工具

阿里巴巴中国站1688商品详情API返回值解析:应对更新与变化的策略

代码忍者

API 测试 API 策略

BSC发力DEX交易量超过Solana,MEME赛道王者易主?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

高效整理,创造灵活工作空间——iCollections for Mac 🚀🌟

柠檬与橘子

感谢 Fluent Editor 开源富文本首位贡献者!

OpenTiny社区

富文本 OpenTiny 开源前端

BSI最新研究发现,中国企业人工智能投资增长意愿全球领先

财见

轻松管理文件:2024年顶尖局域网文档管理工具

爱吃小舅的鱼

文档管理 局域网

最新ps2024软件:Photoshop 2024 (Win&Mac)直装版

你的猪会飞吗

mac软件下载 ps2024 PS2024破解

创新工具推荐,轻松将微信小程序转换为App

Geek_2305a8

案例研究:如何在复杂环境中增强自组织

ShineScrum

自组织

MacCleaner Pro for Mac(系统综合清理软件) v3.2.5永久激活版

理理

关于告警,要想做好,从这些方面着手

巴辉特

告警降噪 oncall 告警聚合 告警排班 PagerDuty

独享代理IP有哪些优势?

IPIDEA全球HTTP

设计师必备:CAD迷你看图 for mac 图纸浏览新体验!

理理

CAD迷你看图 DWG文件浏览工具 mac软件安装

GO语言编程工具环境 JetBrains GoLand 2020中文无限试用版

理理

GoLand 2022破解版 GoLand 2022中文版 GO语言编程

用 Higress AI 网关降低 AI 调用成本 - 阿里云天池云原生编程挑战赛参赛攻略

阿里巴巴云原生

阿里云 云原生 Higress

影子测试:软件测试的创新策略

FunTester

MES系统的八大核心功能及车间落地实现

万界星空科技

制造业 生产管理系统 mes 万界星空科技 车间管理系统

SD-WAN组网部署需要多久?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

OgPhone海外云手机是什么

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 海外社媒运营

非常优秀的压缩解压缩工具 Keka for Mac v1.3.6中文版

理理

Keka下载 Keka压缩软件 mac装机必备

2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量。 按照以下规则进行n次

福大大架构师每日一题

福大大架构师每日一题

全系列ai插件合集 Astute Graphics for Mac v3.0.4永久激活版

理理

量化合约系统开发程序技术(源码搭建)合约量化开发逻辑方案

V\TG【ch3nguang】

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