Typescript 全栈最值得学习的技术栈 TRPC

TRPC 是一种用于 TypeScript 的全栈远程过程调用(RPC)库。它提供了客户端和服务器之间的强类型通信,以及服务端的强类型代码生成。

以下是一个简单的例子,展示如何使用 TRPC 创建一个简单的服务端和客户端。

首先,安装 TRPC 相关依赖:




npm install trpc

服务端代码 (trpc-server.ts):




import { TRPCError } from '@trpc/server';
import { createRouter } from '@trpc/server/router';
import { createHTTPServer } from '@trpc/server/adapters/HTTP';
 
// 创建 RPC 路由
const router = createRouter().query('hello', {
  input: {
    text: {
      kind: 'string',
      description: 'Text to say hello to',
    },
  },
  async resolve({ input }) {
    if (!input.text) {
      throw new TRPCError({ code: 'BAD_REQUEST', message: 'No text provided' });
    }
    return `Hello, ${input.text}!`;
  },
});
 
// 创建 HTTP 服务器
const server = createHTTPServer({
  router,
  // 可以在这里添加中间件等
});
 
// 启动服务器
server.start(8080);

客户端代码 (trpc-client.ts):




import { TRPCClient } from '@trpc/client';
 
// 创建 TRPC 客户端
const client = new TRPCClient({
  url: 'http://localhost:8080/trpc',
});
 
async function main() {
  try {
    const result = await client.query('hello', { text: 'World' });
    console.log(result); // 输出: Hello, World!
  } catch (error) {
    console.error(error);
  }
}
 
main();

在这个例子中,服务端定义了一个名为 hello 的查询方法,接受一个字符串参数 text。客户端连接到服务端,并调用 hello 方法,传递参数,然后打印结果。

这只是一个简单的例子,TRPC 提供了更多高级功能,如中间件、认证、并发控制等,以及与现代前端框架(如 React、Vue 或 Svelte)的集成。

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日