Home >Web Front-end >JS Tutorial >Hono.js: The Next-Gen Node.js Framework
There are already many backend libraries and frameworks for Node.js on the market. I've used Nest.js for some small projects before. It has comprehensive functions and enables rapid project implementation. However, for my small projects, many of its features are really overkill, and it has a high level of encapsulation, leaving little freedom when writing code.
By chance, I came across Hono online. After reading its documentation:
Hono is a simple web application framework, similar to Express, but without a frontend. It allows you to build larger applications when combined with middleware. Here are some use case examples:
Great, let's start learning it.
https://hono.dev/docs/getting-started/basic
You can modify the port by setting the port.
import { Hono } from 'hono'; const app = new Hono(); app.get('/', (c) => { return c.text('Hello Hono!'); }); export default app;
To execute:
npm run dev
To access: http://localhost:8787
app.get('/', (c) => c.text('GET /')); app.post('/', (c) => c.text('POST /')); app.put('/', (c) => c.text('PUT /')); app.delete('/', (c) => c.text('DELETE /'));
const apiRoutes = app .basePath("/api") .route("/expenses", route1) .route("/", route2);
The previous basePath("/api") adds the /api prefix to all routes.
export const route1 = new Hono() .post("/", async (c) => { return c.json({ }); });
You can access the above route via http://localhost:8787/api/expenses.
app.get('/posts/:id', (c) => { const page = c.req.query('page'); const id = c.req.param('id'); return c.text(`You want see ${page} of ${id}`); });
View the result: http://localhost:8787/posts/1?page=12
app.put("/posts/:id{[0-9]+}", async (c) => { const data = await c.req.json(); return c.json(data); });
Besides text(), there are many methods like json(), html(), notFound(), redirect(), etc., to make the request return different types of data. html() can directly return JSX.
import { Hono } from 'hono'; const app = new Hono(); app.get('/', (c) => { return c.text('Hello Hono!'); }); export default app;
Just change the file extension to .tsx and you can directly write JSX, very React-like.
Validators are implemented through zod and @hono/zod-validator to check if the requests sent from the client conform to the specified data format.
Installation: yarn add zod @hono/zod-validator
For example, if we need to verify that in a request, the data format sent by the client must be:
account: string; password: string
npm run dev
Learn more from the zod documentation. And the IDE can directly show type hints for user.
Finally, let me introduce a platform that is very suitable for deploying Hono apps: Leapcell.
Leapcell is a serverless platform with the following characteristics:
Explore more in the documentation!
Leapcell Twitter: https://x.com/LeapcellHQ
The above is the detailed content of Hono.js: The Next-Gen Node.js Framework. For more information, please follow other related articles on the PHP Chinese website!