网易首页 > 网易号 > 正文 申请入驻

Hono RPC让前后端类型共享:零代码生成实践

0
分享至

类型安全是前后端协作的老大难问题。接口文档更新滞后、字段类型对不上、联调时才发现传参错误——这些场景开发者再熟悉不过。Hono RPC提供了一种新思路:不生成代码,直接共享类型。

本文将用完整步骤演示,如何在Monorepo中搭建一个Hono后端与React前端,实现端到端的类型同步。


环境准备

新建项目目录,初始化pnpm工作区:

mkdir hono-rpc-and-react-monorepo
cd hono-rpc-and-react-monorepo
npm i -g pnpm@latest
pnpm init

创建pnpm-workspace.yaml,声明两个包:

packages:
- 'api'
- 'web'

后端:Hono API

用官方脚手架创建Hono项目:

pnpm create hono@latest api

修改api/package.json,调整三项关键配置:

{
"name": "@repo/api",
"type": "module",
"main": "src/index.ts",
...
}

name改为@repo/api以便workspace引用;type指定ES模块;main指向源码入口,让前端能直接导入类型。

核心在api/src/index.ts。关键操作:把路由挂载到Hono实例本身,而非分离的router对象——这样TypeScript才能完整推断出AppType。

import { serve } from '@hono/node-server'
import { Hono } from 'hono'

const app = new Hono()
.get('/api', (c) => {
return c.text('Hello Hono!')
})

export type AppType = typeof app

serve({...}, (info) => {
console.log(`Server is running on http://localhost:${info.port}`)
})

注意路由改为/api前缀,为后续代理做准备。

前端:React + Vite

创建Vite项目:

pnpm create vite

安装依赖:

pnpm i hono

在web/package.json中引入后端包:

"devDependencies": {
"@repo/api": "workspace:*",
...
}

pnpm i安装后,配置开发代理。修改web/vite.config.ts:

export default defineConfig({
plugins: [react()],
server: {
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true
}
}
}
})

所有以/api开头的请求自动转发到3000端口。

在web/src/App.tsx中创建客户端:

import { hc } from 'hono/client'
import type { AppType } from '@repo/api'

const client = hc('/')

function App() {
const [count, setCount] = useState('')
useEffect(() => {
const fetchData = async () => {
const res = await client.api.$get()
if (res.ok) {
const data = await res.text()
setCount(data)
}
}
fetchData()
}, [])
...
}

hc函数接收AppType泛型,client.api.$get()完全继承了后端的路由结构和返回类型。修改后端接口后,前端调用处会立即触发类型检查。

一键启动

根目录package.json添加:

"scripts": {
"dev": "pnpm run --parallel dev"
}

pnpm dev同时启动前后端。浏览器访问前端地址,即可看到从Hono后端获取的"Hello Hono!"文本。

类型同步的边界

Hono RPC的局限也值得关注:它依赖TypeScript编译时的类型系统,运行时并无额外校验;跨语言场景(如后端改为Go)无法沿用;复杂嵌套类型的序列化仍需手动确保一致。

但在全TypeScript栈的项目中,这种零代码生成的方案显著降低了维护成本——没有OpenAPI生成步骤,没有版本对齐会议,类型即契约。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
她为儿子30年不嫁,儿子墓前哭:来生还做您儿子!

她为儿子30年不嫁,儿子墓前哭:来生还做您儿子!

东方不败然多多
2026-05-14 18:01:16
太恶心!上海街头大量出现!地上、车上、鞋上全都黏糊糊的!网友傻眼:根本擦不干净!

太恶心!上海街头大量出现!地上、车上、鞋上全都黏糊糊的!网友傻眼:根本擦不干净!

新民晚报
2026-05-14 20:53:56
57岁孔琳近况曝光!曾和耿乐秘恋7年,如今嫁给铁佛婚姻很幸福

57岁孔琳近况曝光!曾和耿乐秘恋7年,如今嫁给铁佛婚姻很幸福

代军哥哥谈娱乐
2026-05-14 10:17:04
日媒调查:高市早苗内阁支持率连续下滑 民众不满“只谈修宪不顾经济和民生”

日媒调查:高市早苗内阁支持率连续下滑 民众不满“只谈修宪不顾经济和民生”

海外网
2026-05-15 10:52:07
ESPN数据显示:活塞最后3分钟有96.8%胜率,他们被骑士超级逆转

ESPN数据显示:活塞最后3分钟有96.8%胜率,他们被骑士超级逆转

爱体育
2026-05-14 23:59:24
白人女性与黑人女性的体味差异,网友真实分享引发热议

白人女性与黑人女性的体味差异,网友真实分享引发热议

特约前排观众
2025-12-22 00:20:06
天呐!43岁米兰达可儿太美了,4个儿子状态超牛,网友:好凶呀

天呐!43岁米兰达可儿太美了,4个儿子状态超牛,网友:好凶呀

贾妈的幸福生活
2026-05-14 15:21:39
一个人最大的本事,就是解决问题的能力!(深度好文)

一个人最大的本事,就是解决问题的能力!(深度好文)

辛东方
2026-02-12 08:00:03
震惊!网传一企业流动资金不足,向员工集资借款,承诺年息12%

震惊!网传一企业流动资金不足,向员工集资借款,承诺年息12%

火山詩话
2026-05-14 14:19:19
小宝与王某雷,谁探访花的数量更多?

小宝与王某雷,谁探访花的数量更多?

挪威森林
2026-01-31 12:15:26
镍矿断供了,军舰订单来了,印尼到底想干啥!

镍矿断供了,军舰订单来了,印尼到底想干啥!

故事终将光明磊落
2026-05-13 16:54:04
大s悲剧即将重演?45岁小沈阳身体亮起红灯,给所有明星提了醒

大s悲剧即将重演?45岁小沈阳身体亮起红灯,给所有明星提了醒

草莓解说体育
2026-05-15 04:13:39
141:0全票通过!法国连夜通过重大草案,中国这次的回应很不一般

141:0全票通过!法国连夜通过重大草案,中国这次的回应很不一般

潮鹿逐梦
2026-05-12 17:14:43
74岁刘銮雄罕见露面,为杨受成撑场面再现当年雄风,甘比不在身旁

74岁刘銮雄罕见露面,为杨受成撑场面再现当年雄风,甘比不在身旁

揽星河的笔记
2026-05-14 13:40:42
警方通报河北一火锅店发生刑案:罗某某(男,36岁)因琐事与杨某某(女,46岁)发生争执后,持刀将其杀害,已被刑事拘留

警方通报河北一火锅店发生刑案:罗某某(男,36岁)因琐事与杨某某(女,46岁)发生争执后,持刀将其杀害,已被刑事拘留

极目新闻
2026-05-14 13:19:54
暂无解决办法!国家电网客服:直流快充桩连多台电动汽车 谁电流需求大谁抢更多电

暂无解决办法!国家电网客服:直流快充桩连多台电动汽车 谁电流需求大谁抢更多电

快科技
2026-05-13 15:32:06
你们都是什么时候对男女之事开窍的?网友:果然还是拦不住有心人

你们都是什么时候对男女之事开窍的?网友:果然还是拦不住有心人

夜深爱杂谈
2026-02-21 21:37:02
天王嫂滤镜彻底碎!方媛抢单人间引众怒,极致利己嘴脸藏不住了

天王嫂滤镜彻底碎!方媛抢单人间引众怒,极致利己嘴脸藏不住了

千言娱乐记
2026-05-14 23:30:52
段鹏79岁临终前说出隐情:和尚死在黑云寨,是因为和尚知道了……

段鹏79岁临终前说出隐情:和尚死在黑云寨,是因为和尚知道了……

呆子的故事
2026-02-10 14:44:11
何炅工作室回应:没通知我们啊

何炅工作室回应:没通知我们啊

南方都市报
2026-05-14 17:49:25
2026-05-15 11:39:00
灰度测试中
灰度测试中
生活正在重构,目前还在灰度测试阶段,暂不全量发布。
2752文章数 27关注度
往期回顾 全部

科技要闻

两年联姻一地鸡毛,传苹果OpenAI濒临决裂

头条要闻

103岁和86岁老人认识3个月"闪婚":孤独感消失了

头条要闻

103岁和86岁老人认识3个月"闪婚":孤独感消失了

体育要闻

德约科维奇买的球队,从第6级联赛升入法甲

娱乐要闻

方媛回应住男生单人间:女孩的配得感

财经要闻

特朗普的北京时刻

汽车要闻

双零重力座椅/AI智能体/调光天幕 启境GT7内饰发布

态度原创

游戏
健康
手机
亲子
本地

BLG见面会翻大车!黑粉喷子全过审 真爱粉气炸了

专家揭秘干细胞回输的安全风险

手机要闻

谷歌推送安卓Canary 2605,整合Frosted Glass类磨砂玻璃风格

亲子要闻

带纳糖一起去日本公园玩,兄妹俩年纪相差大,但是玩的很开心

本地新闻

用苏绣的方式,打开江西婺源

无障碍浏览 进入关怀版