Hoa - 一个极简 Web 框架

26 天前
 nswbmw

我使用 Koa 很多年了,一直很喜欢它简洁的设计哲学。近几年在 Cloudflare Worker 上开发较多,接触到了 Hono 。Hono 也是一个不错的框架,但在深入使用后,我对它的一些设计理念并不是很认同,于是萌生了自己造个轮子的想法。

我为新框架设定了三条核心原则:

  1. 微内核架构:与 Koa 类似,保留了洋葱模型的中间件设计,同时还补充了插件系统
  2. 符合直觉的 API 设计:摒弃 Koa 的 delegates 思路,API 严格区分 ctx/ctx.req/ctx.res ,更加符合语义
  3. 环境无关性:可在 Node.js 、Bun 、Deno 以及 Cloudflare Worker 、Vercel 等边缘环境运行

于是 Hoa 诞生了。目前我跟另一个维护者已经为 Hoa 补充了近 30 个常用中间件,我也已经将手头大部分项目从 Koa 迁移至 Hoa 。今天分享出来,希望更多人去使用,也期待收到更多反馈,共同把 Hoa 框架打磨得更好。

特点

安装

npm i hoa --save

快速开始

import { Hoa } from 'hoa'
const app = new Hoa()

app.use(async (ctx, next) => {
  ctx.res.body = 'Hello, Hoa!'
})

export default app

License

MIT

1923 次点击
所在节点    Node.js
6 条回复
c3de3f21
26 天前
比较让我棘手的场景是
我想用 nuxt / next 这种 后端他们是 nitro 或者别的,我如何用例如 您的框架 hoa 或者 koa/express 连接 nitro 端点和其他中间件或 server 类似 https://github.com/node-oauth/node-oauth2-server 或 prisma 这种服务和中间件
前后端同构利用 vercel 等边缘环境运行
zhmouV2
26 天前
这个能直接跑在 cf worker 上吗 hono 好像最近加了啥特性 得开 nodejs_compat flag
v1
26 天前
中文开发者但是没有中文文档,虽然不影响但就是怪怪的
nswbmw
26 天前
@zhmouV2 可以直接跑,不需要开启 nodejs_compat ,但是如果用到数据库(如 mysql/postgres ),就得开启
nswbmw
26 天前
@v1 目前精力不足,先只维护英文文档了
skkakaka2
25 天前
node 下只用 nest+fastify ,统一架构,舒适快捷健壮

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1174987

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX