当前位置: 首页 > article >正文

写给前端的Vue+Prisma+tRPC入门指南

写在前面这是给前端实验室实习生培训前写的教案及入门指南因为实验室一个比赛由于各部门人数不均问题导致部分前端实习生没有后端配合遂得让他们自己写…写完后觉得应该值得记录一下本人也只是全栈半吊子甚至还没入门水平教案部分源自ai并稍加修改了些许如有错误敬请指正哦对最后说一句本来这个文档是docx格式塞进来不是很方便观看如有需要可找我发原docx^^极简操作指南可复制代码在文档最后面 熟悉后整套配置流程需大约4分钟第一阶段项目初始化1.1 创建项目并安装核心依赖WinR 输入cmd…1.2初始化 Prismanpx prisma init --datasource-provider sqlite第二阶段 Schema2.1编写数据库模型 代码见下2.2创建数据库表npx prisma migrate dev第三阶段后端实现3.1 创建服务器文件根目录下创建server文件夹并在文件夹下新建index.ts文件代码见下3.2 启动后端服务npx tsx server/index.ts第四阶段前端配置与调用4.1 配置 Vite 代理解决跨域 根目录下vite.config.ts文件4.2创建 tRPC 客户端src文件夹下新建utils文件夹并新建trpc.ts4.3 Vue 组件中使用PrismatRPC编写一个简单的数据存取组件并实现前后端互联新建终端CtrlShift~ 非常好用的快捷键输入npm run dev 启动前端教案主要是一些比较概念性的东西 理解使用tRPC和Prisma的优点即可一、 培训目标与大纲培训目标• 理解全栈类型安全掌握从前端到后端的完整类型推断避免前后端接口字段不一致。• 掌握 Prisma 基本操作学会初始化客户端、进行简单的增删改查CRUD以及理解 ORM 的作用。• 掌握 tRPC 基础理解定义路由Router和在 Vue 中调用接口的流程。培训大纲1. 背景引入与架构对比10分钟2. Prisma 基础与快速上手15分钟3. tRPC 基础路由与上下文20分钟4. Vue 前端集成与类型推断10分钟5. QA 与总结5分钟________________________________________二、 详细教学内容与执行步骤1. 背景引入与架构对比10分钟核心知识点• 什么是 tRPC它是一个允许你在前后端之间共享类型而无需生成 OpenAPI 规范或 GraphQL 模式的 RPC远程过程调用框架。• 痛点解决传统开发中后端修改字段前端如果不手动同步很容易导致运行时报错。tRPC 可以实现“全栈类型安全”。教学讲解要点1. 学员回顾现有的 Vue 开发经验平时如何定义 Axios 请求和接口返回类型。2. 问题“如果后端改了一个字段名字前端要改几处”引出 tRPC 的核心优势。3. 强调本节课的目标是完成一个从 Vue 到 tRPC 路由再到 Prisma 查询数据库的闭环。________________________________________2. Prisma 基础与快速上手15分钟核心知识点• Schema 文件定义如何在 Prisma 中定义模型。• 数据库迁移使用 prisma migrate dev 同步数据库。• Prisma Client生成强类型的查询客户端。示例代码定义一个简单的用户模型教学执行细节1. 使用命令行执行初始化npx prisma init2. 生成客户端 npx prisma migrate dev --name init3. Prisma 具有强类型优势写查询时 IDE 就会有补全提示减少拼写错误。________________________________________3. tRPC 基础路由与上下文20分钟核心知识点• 初始化 tRPC创建 tRPC 实例。• 定义 Router实现查询Query和修改Mutation。示例代码定义 tRPC 路由教学执行细节1. Zod 校验说明Zod 在这里不仅用于校验输入参数的合法性更重要的作用是为前端提供对应的 TypeScript 类型推断。2. query 与 mutation 的区别这与 Vue 应用里的 GET 和 POST 概念类似。________________________________________4. Vue 前端集成与类型推断10分钟核心知识点• 如何在 Vue 项目中实例化 tRPC 客户端。示例代码Vue 组件中使用Ts部分Template部分注1. 在 Vue 中可以直接像调用普通函数一样调用 tRPC 方法且 IDE 会检查类型和参数。2. 如果后端修改了 Schema 字段名称前端代码在保存时就会立刻标红报错极大降低了维护成本。长代码部分1.1# 创建项目npm create vitelatest Lesson6-fullStack# 勾选各选项...# 安装核心依赖npm install -D prisma6.5.0npm install prisma/client6.5.0# tRPCnpm install trpc/server trpc/client# Zod 数据验证npm install zod# tsx 运行时npm install -D tsx2.1generator client {provider prisma-client-js}datasource db {provider sqliteurl env(DATABASE_URL)}model Student {id Int id default(autoincrement()) // 主键自增studentNumber String unique // 学号唯一约束name String // 姓名}3.1// server/index.tsimport z from zod;import { createHTTPServer } from trpc/server/adapters/standalone;import { initTRPC } from trpc/server;import { PrismaClient } from prisma/client;// 初始化const prisma new PrismaClient();// 初始化 tRPCconst t initTRPC.create();const router t.router;const publicProcedure t.procedure;const appRouter router({getStudents: publicProcedure.query(async () {return await prisma.student.findMany();}),createStudent: publicProcedure.input(z.object({studentNumber: z.string(),name: z.string(),})).mutation(async ({ input }) {return await prisma.student.create({ data: input });}),});export type AppRouter typeof appRouter;// 启动服务器const server createHTTPServer({ router: appRouter });server.listen(3000, () {console.log( 后端服务运行在 http://localhost:3000);});4.1import { defineConfig } from viteimport vue from vitejs/plugin-vue// https://vite.dev/config/export default defineConfig({plugins: [vue()],server: {proxy: {/api: {target: http://localhost:3000,changeOrigin: true,rewrite: (path) path.replace(/^\/api/, ),},},},})4.2// src/utils/trpc.tsimport { createTRPCProxyClient, httpBatchLink } from trpc/client;import type { AppRouter } from ../../server;export const trpc createTRPCProxyClientAppRouter({links: [httpBatchLink({ url: /api })],});4.3script setup langtsimport { ref, onMounted } from vue;import { trpc } from ./utils/trpc;const students refany[]([]);const loading ref(false);const form ref({studentNumber: ,name: });const loadStudents async () {loading.value true;try {students.value await trpc.getStudents.query();} catch (err) {console.error(加载失败:, err);} finally {loading.value false;}};const addStudent async () {if (!form.value.studentNumber || !form.value.name) {alert(请输入完整)return;}try {await trpc.createStudent.mutate({studentNumber: form.value.studentNumber,name: form.value.name,});form.value { studentNumber: , name: };await loadStudents();alert(添加成功);} catch (err) {console.error(添加失败:, err);}}onMounted(() loadStudents());/scripttemplatediv学号:input typetext v-modelform.studentNumber姓名:input typetext v-modelform.namebutton clickaddStudent添加学生/button/divtabletheadtrth姓名/ththid/thth学号/th/tr/theadtbodytr v-forstu in studentstd{{ stu.name }}/tdtd{{ stu.id }}/tdtd{{ stu.studentNumber }}/td/tr/tbody/table/template

相关文章:

写给前端的Vue+Prisma+tRPC入门指南

写在前面:这是给前端实验室实习生培训前写的教案及入门指南(因为实验室一个比赛由于各部门人数不均问题导致部分前端实习生没有后端配合,遂得让他们自己写…),写完后觉得应该值得记录一下,本人也只是全栈半…...

AI项目规则生成器:自动化配置AI编程助手规则与技能发现

1. 项目概述:AI项目规则生成器的核心价值如果你和我一样,每天都要和Cursor、Claude Code、Antigravity IDE这些AI编程助手打交道,那你肯定也遇到过这个痛点:每次开一个新项目,都得花大量时间去配置.cursorrules、AGENT…...

基于Docker的Claude插件部署:Centmin Mod环境实战指南

1. 项目概述:一个为Claude AI模型量身打造的插件运行环境如果你和我一样,长期在服务器运维和AI应用部署的第一线摸爬滚打,那你一定对“环境配置”这四个字又爱又恨。爱的是,一个稳定、高效的环境是一切应用的基础;恨的…...

GE Eager Style Graph Builder类关系文档

Eager Style Graph Builder 类关系文档 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供…...

图片元数据修改软件

链接:https://pan.quark.cn/s/501400393eba找了半天没找到比较合适的图片元数据修改软件,用AI搓了一个,用着还行,分享出来给有需要的人,之前发原创给删除了可以检测一些常见AI图的原始数据并给出提示...

AI代理网关设计:统一多模型API调用与管理的开源解决方案

1. 项目概述:一个为AI模型接口设计的智能代理网关 最近在折腾AI应用开发,发现一个挺普遍的需求:当你手头有多个不同厂商的AI模型API(比如OpenAI的ChatGPT、Anthropic的Claude、Google的Gemini等等),想要在自…...

基于Docker容器化部署Atlassian Jira的完整实践指南

1. 项目概述与核心价值最近在帮一个中型研发团队做内部流程工具链的整合,核心需求是搭建一套稳定、可控且易于维护的协作与项目管理平台。在众多方案中,基于容器化部署的 Atlassian Jira 成为了我们的首选。而cptactionhank/docker-atlassian-jira这个 D…...

基于Flipper Zero的万能遥控器:开源硬件与红外/Sub-GHz协议深度解析

1. 项目概述:当万能遥控器遇上开源硬件最近在折腾智能家居和影音设备的朋友,估计都遇到过“遥控器泛滥”的烦恼。电视、机顶盒、空调、风扇、音响、投影仪……每个设备都配一个专属遥控器,不仅占地方,关键时刻还总找不到。市面上的…...

MouseTester终极指南:专业鼠标性能测试工具完全解析

MouseTester终极指南:专业鼠标性能测试工具完全解析 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester 想要精准评估你的鼠标性能表现吗?无论是游戏玩家追求极致的操作响应,还是设计师需要精准…...

CMOS图像传感器低功耗低噪声Zoom ADC电路设计【附电路】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,可以私信,或者点击《获取方式》 (1)逐次逼近粗转换与 ΣΔ 细…...

FPGA多速率信号处理与多相滤波器实现

1. 多速率信号处理基础与FPGA实现价值数字信号处理系统相比模拟系统具有无可比拟的设计自由度,其中最关键的就是系统采样时钟的可控性。多速率滤波技术正是通过动态调整采样率来充分挖掘这一优势的核心方法。在FPGA上实现多速率系统,能够同时满足高性能和…...

大语言模型多智能体系统:架构、应用与挑战

1. 从单兵作战到团队协作:大语言模型多智能体系统的演进与核心架构如果你在过去一年里深度使用过ChatGPT、Claude或者国内的文心一言、通义千问等大模型,你可能会有一个直观的感受:单个大模型在回答具体问题、生成文本或代码片段时已经相当出…...

个人微信接口开发

在微信深度渗透社交与商业场景的今天,个人微信号已成为企业客户运营、用户触达的核心载体。开发个人微信营销系统、自定义机器人、智能客服及群数据分析工具等需求日益增长,但如何高效实现与微信的交互、调用聊天接口并保障安全稳定,成为开发…...

算力时代散热革命:液冷市场星辰大海

🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 211、985硕士,从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作,涉足消费电子、新能源、医疗设备、制药信息化、核工业…...

构建AI增强的网状思维工作流:从MCP协议到多智能体协同的实践

1. 项目概述:一个为“多动”思维打造的互联工具生态 如果你和我一样,脑子里总是不停地冒出各种想法,从重构一段代码到设计一个全新的交互界面,再到为昨晚的游戏模组构思一个功能,这些念头像烟花一样同时炸开&#xff0…...

three粒子飘动效果

1、总结<template><div id"box"></div></template> <script setup> import * as three from three; import { onMounted } from vue; import { OrbitControls } from three/addons/controls/OrbitControls.js; import ring from "…...

RWKV Runner:一站式桌面应用,轻松部署与集成开源大语言模型

1. 项目概述&#xff1a;RWKV Runner&#xff0c;一个让大模型触手可及的“全能管家”如果你对开源大语言模型&#xff08;LLM&#xff09;感兴趣&#xff0c;尤其是对那个以“RNN架构”和“Transformer级性能”而闻名的RWKV模型系列有所耳闻&#xff0c;但又被繁琐的环境配置、…...

Rewardful vs PartnerShare:2026 联盟营销管理追踪软件对比指南

选择合适的联盟营销管理系统&#xff0c;能让SaaS企业在2026年的增长竞争中事半功倍。Rewardful和PartnerShare分别是海外与国内市场备受关注的两款工具&#xff0c;本文将从功能、定价、支付集成等维度进行全方位对比&#xff0c;帮你快速做出最适合业务阶段的选择。一、什么是…...

AI编程助手如何对抗能力错觉?agentic-learning技能包实战指南

1. 项目概述&#xff1a;一个能让你真正学会编程的AI伙伴 如果你用过Cursor、Claude Code或者GitHub Copilot这类AI编程助手&#xff0c;大概率有过这样的体验&#xff1a;你抛出一个问题&#xff0c;它瞬间给你一段完美的代码。你复制粘贴&#xff0c;程序跑起来了&#xff0…...

【2026】企业工商照面信息查询:深入了解企业的33项核心数据

企业工商照面信息查询&#xff1a;深入了解企业的33项核心数据在企业服务、金融风控、政务审批等场景中&#xff0c;全面了解企业工商信息至关重要。本文介绍一种高效的企业工商照面查询方案&#xff0c;帮助开发者快速获取企业的完整注册信息。一、为什么需要工商照面信息 企业…...

IDE内嵌AI产品副驾驶:用对话式工作流实现文档即代码

1. 项目概述&#xff1a;在IDE里嵌入一个产品经理副驾驶如果你和我一样&#xff0c;既是开发者&#xff0c;又时不时要客串产品经理的角色&#xff0c;那你肯定对下面这个场景不陌生&#xff1a;脑子里蹦出一个绝妙的产品点子&#xff0c;兴奋地打开代码编辑器准备大干一场&…...

Taotoken模型广场如何帮助开发者根据任务与预算选择合适的模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken模型广场如何帮助开发者根据任务与预算选择合适的模型 面对众多大语言模型&#xff0c;开发者常面临一个核心问题&#xf…...

AI代码审计工具Vulnhuntr实战:LLM如何挖掘复杂逻辑漏洞

1. 项目概述&#xff1a;当AI成为代码审计员 在安全圈摸爬滚打十几年&#xff0c;我见过太多因为一个不起眼的代码缺陷引发的“血案”。传统的静态代码分析工具&#xff08;SAST&#xff09;就像拿着清单的检查员&#xff0c;只能发现那些写在教科书里的、模式固定的漏洞&…...

基于classmcp构建AI本地工具:Python类封装与MCP协议实践

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;特别是想让大语言模型&#xff08;LLM&#xff09;能更“主动”地操作电脑上的各种软件&#xff0c;比如打开浏览器查资料、用Excel处理数据&#xff0c;或者控制音乐播放器。这听起来像是科幻电影里的场景&#xff0c;但…...

Git 知识点深度解析:从底层原理到实战避坑,十年架构师经验分享

在软件开发过程中&#xff0c;版本控制是至关重要的一环。Git 作为目前最流行的版本控制系统&#xff0c;掌握其核心概念和原理对于每个开发者来说都非常必要。 本文将深入探讨 Git 的相关 git 知识点&#xff0c;结合实际案例&#xff0c;帮助读者更好地理解和运用 Git。 Git …...

告别课堂赴一线,探秘企业知发展 —— 文理基础学院开展名企走访职业启蒙教育

告别课堂赴一线&#xff0c;探秘企业知发展 —— 青岛滨海学院文理基础学院开展名企走访职业启蒙教育青岛滨海学院文理基础学院致力于培养学生的综合素质与专业技能&#xff0c;通过一系列的教学活动和实践项目为学生提供全面发展的机会。近期&#xff0c;为了进一步增强学生的…...

光储复合多功能变流器协同控制与电能治理方法【附仿真】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;可以私信&#xff0c;或者点击《获取方式》 &#xff08;1&#xff09;三端口全桥变换器功率解耦…...

游戏策划:用玩家测试数据验证设计贡献

针对游戏策划领域Q2期刊投稿&#xff0c;如何利用玩家测试数据有效支撑设计贡献声明&#xff0c;其核心在于建立从数据到理论的坚实桥梁&#xff0c;将定性的设计主张转化为可量化、可验证的经验证据。这需要超越简单的数据呈现&#xff0c;进行严谨的分析与论证。以下是具体的…...

Cursor云端智能体HTTP客户端实战:soenneker库配置与优化指南

1. 项目概述与核心价值最近在折腾一个基于Cursor的云端智能体项目&#xff0c;其中一个绕不开的核心环节就是如何让我的智能体稳定、高效地与外部HTTP服务进行通信。在尝试了多种方案后&#xff0c;我最终选择并深度定制了soenneker/soenneker.cursor.cloudagents.httpclients这…...

CANN ops-nn GeGluV2算子

GeGluV2 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√At…...