Maison > interface Web > js tutoriel > Hono.js : le framework Node.js de nouvelle génération

Hono.js : le framework Node.js de nouvelle génération

Barbara Streisand
Libérer: 2025-01-06 22:33:42
original
414 Les gens l'ont consulté

Hono.js: The Next-Gen Node.js Framework

Pourquoi apprendre Hono

Hono.js: The Next-Gen Node.js Framework

Il existe déjà de nombreuses bibliothèques et frameworks backend pour Node.js sur le marché. J'ai déjà utilisé Nest.js pour quelques petits projets. Il dispose de fonctions complètes et permet une mise en œuvre rapide des projets. Cependant, pour mes petits projets, beaucoup de ses fonctionnalités sont vraiment excessives et il a un niveau d'encapsulation élevé, laissant peu de liberté lors de l'écriture du code.

Par hasard, je suis tombé sur Hono en ligne. Après avoir lu sa documentation :

  • Ultra-rapide ? - Le routeur RegExpRouter est vraiment rapide. Il n'utilise pas de boucles linéaires. C'est juste rapide.
  • Léger ? - Le préréglage hono/tiny fait moins de 12 Ko. Hono n'a aucune dépendance et utilise uniquement des API standards du Web.
  • Multi-runtime ? - Cela fonctionne pour Cloudflare Workers, Fastly Compute@Edge, Deno, Bun, Lagon, AWS Lambda ou Node.js. Le même code s'exécute sur toutes les plateformes.
  • Capable ? - Hono est livré avec un middleware intégré, un middleware personnalisé, un middleware tiers et des assistants. C'est tout compris.
  • Pleasant DX ?️ - Il dispose d'une API super propre et d'un excellent support TypeScript. Maintenant, nous avons des "types".

Cas d'utilisation

Hono est un framework d'application Web simple, similaire à Express, mais sans frontend. Il vous permet de créer des applications plus volumineuses lorsqu'il est combiné avec un middleware. Voici quelques exemples de cas d'utilisation :

  • Construire des interfaces web
  • Proxy du serveur backend
  • Interfaces CDN
  • Applications de pointe
  • Serveurs de base pour bibliothèques
  • Applications full-stack

Super, commençons à l'apprendre.

Bonjour le monde

https://hono.dev/docs/getting-started/basic

Vous pouvez modifier le port en définissant le port.

import { Hono } from 'hono';

const app = new Hono();

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

export default app;
Copier après la connexion
Copier après la connexion

Pour exécuter :

npm run dev
Copier après la connexion
Copier après la connexion

Pour accéder : http://localhost:8787

Itinéraires

Méthodes HTTP

app.get('/', (c) => c.text('GET /'));
app.post('/', (c) => c.text('POST /'));
app.put('/', (c) => c.text('PUT /'));
app.delete('/', (c) => c.text('DELETE /'));
Copier après la connexion

Itinéraires hiérarchiques

const apiRoutes = app
   .basePath("/api")
   .route("/expenses", route1)
   .route("/", route2);
Copier après la connexion

Le basePath("/api") précédent ajoute le préfixe /api à toutes les routes.

export const route1 = new Hono()
   .post("/", async (c) => {
        return c.json({ });
    });
Copier après la connexion

Vous pouvez accéder à l'itinéraire ci-dessus via http://localhost:8787/api/expenses.

Demandes

Obtenir les paramètres de demande et la requête

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}`);
});
Copier après la connexion

Voir le résultat : http://localhost:8787/posts/1?page=12

Obtenez le contenu du corps de la demande

app.put("/posts/:id{[0-9]+}", async (c) => {
    const data = await c.req.json();
    return c.json(data);
});
Copier après la connexion

Réponses

En plus de text(), il existe de nombreuses méthodes comme json(), html(), notFound(), redirect(), etc., pour que la requête renvoie différents types de données. html() peut renvoyer directement JSX.

JSX

import { Hono } from 'hono';

const app = new Hono();

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

export default app;
Copier après la connexion
Copier après la connexion

Changez simplement l'extension du fichier en .tsx et vous pourrez écrire directement du JSX, très proche de React.

Validateurs

Les validateurs sont implémentés via zod et @hono/zod-validator pour vérifier si les requêtes envoyées par le client sont conformes au format de données spécifié.
Installation : fil ajouter zod @hono/zod-validator
Par exemple, si nous devons vérifier cela dans une demande, le format des données envoyées par le client doit être :
compte : chaîne ; mot de passe : chaîne

npm run dev
Copier après la connexion
Copier après la connexion

Apprenez-en plus grâce à la documentation zod. Et l'EDI peut afficher directement des astuces de type pour l'utilisateur.

Leapcell : la plate-forme avancée sans serveur pour l'hébergement Nodejs

Hono.js: The Next-Gen Node.js Framework

Enfin, permettez-moi de vous présenter une plateforme très adaptée au déploiement d'applications Hono : Leapcell.

Leapcell est une plateforme sans serveur présentant les caractéristiques suivantes :

  1. Support multilingue
    • Développer avec JavaScript, Python, Go ou Rust.
  2. Déployez un nombre illimité de projets gratuitement
    • Payez uniquement pour l'utilisation – pas de demandes, pas de frais.
  3. Une rentabilité imbattable
    • Payez à l'utilisation sans frais d'inactivité.
    • Exemple : 25 $ prend en charge 6,94 millions de requêtes avec un temps de réponse moyen de 60 ms.
  4. Expérience de développeur simplifiée
    • Interface utilisateur intuitive pour une configuration sans effort.
    • Pipelines CI/CD entièrement automatisés et intégration GitOps.
    • Mesures et journalisation en temps réel pour des informations exploitables.
  5. Évolutivité sans effort et hautes performances
    • Mise à l'échelle automatique pour gérer facilement une concurrence élevée.
    • Zéro frais opérationnels – concentrez-vous uniquement sur la construction.

Explorez-en davantage dans la documentation !

Twitter de Leapcell : https://x.com/LeapcellHQ

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal