Make Hono work on Node.js

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

El creador de Hono habla sobre Hono. Hono es un marco web que utiliza solo APIs de estándares web y se ejecuta en Cloudflare Workers, Deno y Bun. Ahora, además de esos entornos de ejecución, también se ejecuta en Node.js utilizando un adaptador de Node.js. Sin embargo, hubo algunas dificultades en el camino. En esta sesión, hablaré sobre cómo adaptamos Hono para que funcione en Node.js, mejoramos su rendimiento y la posibilidad de que apoyemos middleware compatible con Connect.

This talk has been presented at Node Congress 2025, check out the latest edition of this JavaScript Conference.

Yusuke Wada
Yusuke Wada
15 min
17 Apr, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La masterclass de hoy trata sobre cómo hacer que Hono funcione en Node.js. Hono es un backend para marcos web que soporta TypeScript. Comenzó como un marco de trabajadores de Cloudflare y ahora soporta múltiples entornos de ejecución. El adaptador de Node.js permite que las aplicaciones Hono se ejecuten en Node.js al convertir las APIs de Node.js en APIs de estándares web. Las pruebas de referencia muestran que Hono es más rápido que Express, pero más lento en algunas áreas clave. El adaptador de Node.js ha sido ampliamente utilizado y ha experimentado mejoras en el rendimiento. En general, agregar soporte para Node.js a Hono ha sido exitoso en alcanzar más usuarios y mejorar la calidad.
Available in English: Make Hono work on Node.js

1. Introducción a Hono

Short description:

Estoy muy emocionado de hablar en Node Congress hoy. Hoy me gustaría hablar sobre cómo hicimos que Hono funcionara en Node.js. Hono es el backend de los frameworks web para JavaScript. Tiene cinco características clave y soporta TypeScript como primera clase. Déjame compartir cómo comencé a construir Hono.

Hola. Estoy muy emocionado de hablar en Node Congress hoy. El título es Hacer que Hono funcione en Node.js. Vamos a continuar. Mi nombre es Yusuke. Me encanta construir frameworks web. Estoy trabajando en Cloudflare como defensor de desarrolladores. Soy el creador de Hono.

Hoy me gustaría hablar sobre cómo hicimos que Hono funcionara en Node.js. Aquí está la agenda de hoy. Primero, hablaré sobre Hono. A continuación, compartiré cómo comenzó Hono. Luego, explicaré cómo hicimos que Hono funcionara en Node.js y las mejoras de rendimiento. Primero, hablaré sobre qué es Hono. Hono es el backend de los frameworks web para JavaScript. Podemos llamar a Hono la próxima generación de express. Utiliza solo estándares web APIs y funciona en Cloudflare, Castino y Node.js, etcétera. Aquí está la aplicación web Hello World usando Hono. Solo una, dos, tres, cuatro líneas, y esta API es súper simple.

Hono tiene cinco características clave. Primero, es muy rápido, y segundo, el tamaño del paquete es pequeño y funciona en múltiples entornos de ejecución, y puedes agregar muchas características fácilmente usando middleware. Por último, Hono soporta TypeScript como primera clase y proporciona una gran experiencia de desarrollador. Hablaré sobre el comienzo de Hono. Déjame compartir cómo comencé a construir Hono. Estamos creando Hono, quería construir una aplicación para Cloudflare workers, pero en ese momento, no podía encontrar un gran framework para mí. Este IttyRooter es tan simple. No tiene suficientes características para mí y este masterclass y Thunder son buenos frameworks, pero no prefiero la API que es similar a express. Así que decidí hacer mi propio framework. Así es como nació Hono. El commit inicial de Hono fue el 15 de diciembre de 2021, luego Hono comenzó.

2. Supporting Multiple Runtimes

Short description:

Hono comenzó como un framework para Cloudflare workers y ahora soporta múltiples entornos de ejecución, incluyendo Dno y BAN. El mismo código puede ejecutarse en Cloudflare y BAN. Convertirse en multi-runtime ha traído más retroalimentación y mejorado la calidad de Hono. A continuación, abordamos el desafío de hacer que Hono funcione en Node.js.

Hace más de tres años. En ese momento, Hono fue construido con WebStandard API y era solo para Cloudflare workers. Así que, realmente no podíamos decir que es multi-runtime aún. Hablaré sobre cómo Hono soporta múltiples entornos de ejecución.

Lanzamos la versión 2 de Hono el 16 de junio de 2022. En la versión 2, Hono comenzó a soportar Dno y BAN. No dijimos que Hono soporta Dno y BAN antes de la versión 2, pero era fácil soportarlos porque tanto Dno como BAN utilizan WebStandard APIs.

Para soportar Dno, necesitamos hacer dos cosas. En Dno, para importar un módulo, tuvimos que agregar una extensión como .ts o .ds, el nombre del módulo. Y segundo, Dno importa módulos usando URLs. Así que, hicimos un paquete de Hono que se puede descargar desde Dno.runx. Soportar BAN fue muy fácil. Después de que BAN se hizo público, alguien creó este problema y ¿hay algún plan para el soporte de BAN.js? Pero no tenemos que hacer nada. Hono simplemente funciona en BAN sin ningún cambio.

Aquí hay algo interesante. El mismo código puede ejecutarse en Cloudflare y BAN. Este ejemplo es solo una aplicación hello world y puedes aprenderlo. Comandos de desarrollo de lenguaje para Cloudflare workers y comando BAN para BAN. Así que, completamente igual para la aplicación hello world que comenzó como Cloudflare workers y BAN. Por lo tanto, podemos decir que Hono es un framework multi-runtime.

Convertirse en multi-runtime tuvo grandes beneficios. Cuando Hono comenzó a soportar multi-runtime, más personas comenzaron a usarlo. Esto significó que obtuvimos más retroalimentación, problemas y casos de uso. Al abordar esto, mejoramos la calidad de Hono. Así que, aprender Hono en multi-runtime ha llevado a muy buenos resultados para nosotros. A continuación, explico el adaptador de Node.js. Después de soportar DNO y BAN en la versión 2, nuestro próximo gran desafío fue hacer que Hono funcionara en Node.js. Porque muchas personas usan Node.js, así que si tiene éxito, Hono alcanzaría a muchos más usuarios. Pero la aplicación Hono no puede ejecutarse en Node.js tal como está. Node.js tiene APIs estándar web como fetch y request response URL y etcétera.

3. Adaptador de Node.js para Hono

Short description:

El adaptador de Node.js permite ejecutar aplicaciones Hono en Node.js al convertir las APIs de Node.js en APIs estándar web. Proporciona una forma sencilla de usar el adaptador con aplicaciones Hono básicas. A pesar de algún costo de rendimiento, la creación del adaptador de Node.js ha sido exitosa, y hemos realizado pruebas de referencia para medir su rendimiento.

Pero si construyes un servidor web, necesitas APIs específicas de Node.js. Aquí hay un ejemplo de aplicación Hono para Node.js. Como puedes ver, este objeto es un mensaje de entrada HTTP y la respuesta del servidor HTTP. Esta API de Node.js, son diferentes de la API estándar web. Así que, tienes que usar estos objetos en lugar de la API estándar web para la aplicación de Node.js.

Para resolver esto, creamos el adaptador de Node.js. Este se publica como un paquete npm llamado .machono. Esto convierte la API de Node.js en una API estándar web. Transforma el mensaje de entrada HTTP de Node.js en un objeto de solicitud estándar web y lo pasa a la aplicación Hono. Y luego la aplicación Hono devuelve el objeto de respuesta y lo convierte en la respuesta del servidor HTTP de Node.js. Esta área es la aplicación Hono, el adaptador de Node.js de Hono. Este adaptador puedes ejecutar tu aplicación Hono en Node.js. Esta es una implementación interna del adaptador. Este fallback significa la aplicación Hono. Recibe el objeto de solicitud y devuelve el objeto de respuesta. El adaptador convierte el objeto de mensaje de entrada de Node.js en un objeto de solicitud y lo pasa a la aplicación de Hono. Luego la aplicación Hono devuelve el objeto de respuesta y establece el código de estado y los valores de encabezado y el cuerpo para la respuesta del servidor de Node.js.

Aquí está cómo usas el adaptador de Node.js. Esta es una aplicación Hono muy básica y esta app es una instancia de Hono. Si quieres ejecutarla en Node.js, primero importa un método secundario del adaptador de Hono, el adaptador de Node.js, y pasa la aplicación al método secundario. Es tan simple y puedes ejecutar este código con el comando Node. La creación del adaptador de Node.js funciona muy bien y el conteo de descargas está aumentando. Sin embargo, hay algún costo de rendimiento. Convierte entre el adaptador de Node.js, las APIs de Node.js y las APIs WebStandard. Este costo introduce una degradación del rendimiento. Así que hemos realizado pruebas de referencia para medir el rendimiento. Seguiremos el método descrito en esta URL y hay tres escenarios. Uno es simplemente recibir una solicitud GET y devolver una respuesta hello world. Segundo, devuelve una solicitud GET y captura el parámetro de paso y el parámetro de consulta y devuelve estos valores y añade un encabezado personalizado. El último es pasar el cuerpo JSON de una solicitud POST y devolver el cuerpo JSON serializado.

4. Benchmarking Node.js Adapter Performance

Short description:

Aquí hay una aplicación Hono que maneja tres escenarios y los resultados de referencia en comparación con los frameworks de Node.js. Hono es más rápido que Express pero más lento en el núcleo. A pesar de esto, nuestro adaptador de Node.js ha sido ampliamente utilizado, y hemos realizado mejoras significativas en el rendimiento al introducir objetos de solicitud y respuesta livianos. Estas optimizaciones permiten que Hono sea extremadamente rápido en casos de uso simples sin cambiar la API.

Aquí hay una aplicación Hono que maneja tres escenarios. Aquí están los resultados de referencia en comparación con algunos frameworks de Node.js. Y BAN y DINO. Estos BAN y DINO son más rápidos que la aplicación de Node.js porque no tienen sobrecargas. Pero entre los frameworks de Node.js, Hono es más rápido que Express. Pero eso es más lento en el núcleo. Y allí hay una gran diferencia con Fastify. Así que no podemos decir que Hono es rápido en Node.js.

Sin embargo, aún Node.js tiene muchos usuarios, así que nuestro adaptador de Node.js terminó siendo utilizado por muchos usuarios. Después de que se lanzó el adaptador de Node.js, después de un tiempo, hicimos una mejora significativa para aumentar el rendimiento. En noviembre de 2023, se creó esta solicitud de extracción titulada reducir la generación de objetos y optimizar el rendimiento. Esta solicitud de extracción aplica principios fundamentales de ajuste de rendimiento. No hagas cosas hasta que sean necesarias. Nos dimos cuenta de que crear objetos de solicitud y respuesta usando new request y new response es muy lento. Para resolver esto, introdujimos objetos de solicitud livianos y objetos de respuesta livianos. Normalmente, estos objetos livianos se utilizan si no es necesario leer el cuerpo. Por ejemplo, acceder a propiedades como request, lo siento, objeto de estado y propiedad de estado y propiedad de método. Pero si quieres acceder al cuerpo como leak JSON, leak text y leak alibha, entonces crea el objeto de solicitud.

Esto significa que algunos casos de uso simples como la aplicación Hello World, Hono puede ser extremadamente rápido y una gran cosa sobre esta optimización es que los objetos de solicitud y respuesta livianos no cambian la API. Aquí hay un código simple para implementar la solicitud liviana en el adaptador de Node.js. Este constructor, no crea el objeto de solicitud de inmediato. En cambio, almacena en caché este mensaje entrante. Al acceder a propiedades como método o estado, tampoco crea el objeto de solicitud. Sin embargo, al llamar a JSON o text alibha, que requieren leer el cuerpo, crea el objeto de solicitud por primera vez y lee el cuerpo de él y almacena en caché el objeto de solicitud. Luego, almacena el objeto para el futuro. Así que, la próxima vez, es útil desde este objeto de solicitud en caché. Aprendimos a medir de nuevo usando los mismos escenarios. No hubo mucha diferencia en la referencia de paso del cuerpo JSON, pero vimos una gran mejora en la prueba de ping y consulta. Cada uno de ellos es aproximadamente un 50% más rápido que antes. Vamos a compararlo con otros frameworks.

5. Optimizing Hono for Node.js

Short description:

Anteriormente, Hono se ha vuelto más rápido y más cercano a Fastify en rendimiento. El rendimiento de Hono en Node.js es bueno. El adaptador de Node.js convierte las APIs estándar web en APIs de Node.js, mejorando el rendimiento. Hono soporta múltiples entornos de ejecución, alcanzando más usuarios y mejorando la calidad. Agregar soporte para Node.js fue una buena decisión. Este es el final. Muchas gracias.

Anteriormente, Hono era más lento en el núcleo, pero ahora se ha vuelto más rápido. Y siempre se está acercando, también se está acercando a Fastify en rendimiento. Con esto, nuestra optimización de rendimiento está completa. El rendimiento de Hono en Node.js es bastante bueno. Por supuesto, aprender en Cloud-Havercast y Deno es más rápido porque no hay sobrecarga de conversión. Pero Node.js sigue siendo lo suficientemente rápido para casos de uso del mundo real.

Así que, ahora, puedes usar el adaptador de Node.js en producción. Ahora, vamos a concluir la masterclass de hoy. Nos encantan nuevos entornos de ejecución como Cloud-Havercast y Deno y BAN, sin embargo, Node.js todavía es ampliamente utilizado por muchos desarrolladores. Así que, con el adaptador de Node.js, convierte las APIs estándar web en APIs de Node.js. Al usar objetos de solicitud livianos y objetos de respuesta livianos, mejoramos con éxito el rendimiento. Una de las mejores cosas sobre Hono es el soporte para múltiples entornos de ejecución. Así que, esto ayuda a Hono a alcanzar más usuarios y mejorar la calidad de Hono. Agregar soporte para Node.js fue definitivamente una buena decisión.

Así que, esta fue la historia de hacer que Hono funcione en Node.js. Este es el final. Muchas gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
The Talk discusses the shift to full-stack frameworks and the challenges of full-stack documentation. It highlights the power of interactive tutorials and the importance of user testing in software development. The Talk also introduces learn.svelte.dev, a platform for learning full-stack tools, and discusses the roadmap for SvelteKit and its documentation.
SolidJS: ¿Por qué tanto Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: ¿Por qué tanto Suspense?
Top Content
Suspense is a mechanism for orchestrating asynchronous state changes in JavaScript frameworks. It ensures async consistency in UIs and helps avoid trust erosion and inconsistencies. Suspense boundaries are used to hoist data fetching and create consistency zones based on the user interface. They can handle loading states of multiple resources and control state loading in applications. Suspense can be used for transitions, providing a smoother user experience and allowing prioritization of important content.
De GraphQL Zero a GraphQL Hero con RedwoodJS
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
De GraphQL Zero a GraphQL Hero con RedwoodJS
Top Content
Tom Pressenwurter introduces Redwood.js, a full stack app framework for building GraphQL APIs easily and maintainably. He demonstrates a Redwood.js application with a React-based front end and a Node.js API. Redwood.js offers a simplified folder structure and schema for organizing the application. It provides easy data manipulation and CRUD operations through GraphQL functions. Redwood.js allows for easy implementation of new queries and directives, including authentication and limiting access to data. It is a stable and production-ready framework that integrates well with other front-end technologies.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.

Workshops on related topic

Masterclass de Node.js
Node Congress 2023Node Congress 2023
109 min
Masterclass de Node.js
Top Content
Workshop
Matteo Collina
Matteo Collina
¿Alguna vez has tenido dificultades para diseñar y estructurar tus aplicaciones Node.js? Construir aplicaciones que estén bien organizadas, sean probables y extensibles no siempre es fácil. A menudo puede resultar ser mucho más complicado de lo que esperas. En este evento en vivo, Matteo te mostrará cómo construye aplicaciones Node.js desde cero. Aprenderás cómo aborda el diseño de aplicaciones y las filosofías que aplica para crear aplicaciones modulares, mantenibles y efectivas.

Nivel: intermedio
Construir y Desplegar un Backend Con Fastify & Platformatic
JSNation 2023JSNation 2023
104 min
Construir y Desplegar un Backend Con Fastify & Platformatic
Top Content
WorkshopFree
Matteo Collina
Matteo Collina
Platformatic te permite desarrollar rápidamente GraphQL y REST APIs con un esfuerzo mínimo. La mejor parte es que también te permite desatar todo el potencial de Node.js y Fastify siempre que lo necesites. Puedes personalizar completamente una aplicación de Platformatic escribiendo tus propias características y plugins adicionales. En la masterclass, cubriremos tanto nuestros módulos de Open Source como nuestra oferta en la Nube:- Platformatic OSS (open-source software) — Herramientas y bibliotecas para construir rápidamente aplicaciones robustas con Node.js (https://oss.platformatic.dev/).- Platformatic Cloud (actualmente en beta) — Nuestra plataforma de alojamiento que incluye características como aplicaciones de vista previa, métricas integradas e integración con tu flujo de Git (https://platformatic.dev/). 
En esta masterclass aprenderás cómo desarrollar APIs con Fastify y desplegarlas en la Platformatic Cloud.
Construyendo un Servidor Web Hiper Rápido con Deno
JSNation Live 2021JSNation Live 2021
156 min
Construyendo un Servidor Web Hiper Rápido con Deno
Workshop
Matt Landers
Will Johnston
2 authors
Deno 1.9 introdujo una nueva API de servidor web que aprovecha Hyper, una implementación rápida y correcta de HTTP para Rust. El uso de esta API en lugar de la implementación std/http aumenta el rendimiento y proporciona soporte para HTTP2. En este masterclass, aprende cómo crear un servidor web utilizando Hyper en el fondo y mejorar el rendimiento de tus aplicaciones web.
0 a Auth en una Hora Usando NodeJS SDK
Node Congress 2023Node Congress 2023
63 min
0 a Auth en una Hora Usando NodeJS SDK
WorkshopFree
Asaf Shen
Asaf Shen
La autenticación sin contraseña puede parecer compleja, pero es fácil de agregar a cualquier aplicación utilizando la herramienta adecuada.
Mejoraremos una aplicación JS de pila completa (backend de Node.JS + frontend de React) para autenticar usuarios con OAuth (inicio de sesión social) y contraseñas de un solo uso (correo electrónico), incluyendo:- Autenticación de usuario - Administrar interacciones de usuario, devolver JWT de sesión / actualización- Gestión y validación de sesiones - Almacenar la sesión para solicitudes de cliente posteriores, validar / actualizar sesiones
Al final del masterclass, también tocaremos otro enfoque para la autenticación de código utilizando Flujos Descope en el frontend (flujos de arrastrar y soltar), manteniendo solo la validación de sesión en el backend. Con esto, también mostraremos lo fácil que es habilitar la biometría y otros métodos de autenticación sin contraseña.
Tabla de contenidos- Una breve introducción a los conceptos básicos de autenticación- Codificación- Por qué importa la autenticación sin contraseña
Requisitos previos- IDE de tu elección- Node 18 o superior
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
GraphQL: De Cero a Héroe en 3 horas
React Summit 2022React Summit 2022
164 min
GraphQL: De Cero a Héroe en 3 horas
Workshop
Pawel Sawicki
Pawel Sawicki
Cómo construir una aplicación GraphQL fullstack (Postgres + NestJs + React) en el menor tiempo posible.
Todos los comienzos son difíciles. Incluso más difícil que elegir la tecnología es desarrollar una arquitectura adecuada. Especialmente cuando se trata de GraphQL.
En este masterclass, obtendrás una variedad de mejores prácticas que normalmente tendrías que trabajar en varios proyectos, todo en solo tres horas.
Siempre has querido participar en un hackathon para poner algo en funcionamiento en el menor tiempo posible, entonces participa activamente en este masterclass y únete a los procesos de pensamiento del instructor.