¡Mata a Node.js! ¡El nuevo tiempo de ejecución de JS es "rápido de volar"!

Antes de comenzar, expliquemos brevemente qué es el tiempo de ejecución de JavaScript y por qué deberíamos preocuparnos por su velocidad.

Imagina que escribes una historia en JavaScript y necesitas que alguien la lea en voz alta. ¡El tiempo de ejecución de JavaScript actúa como un "narrador" amigable y le da vida a tu historia! Es el entorno especial en el que se leen y ejecutan las historias de JavaScript. Técnicamente hablando, este "narrador" consta de componentes como el motor JavaScript, que es el núcleo del tiempo de ejecución y es responsable de comprender y ejecutar el código.

Bun es un nuevo tiempo de ejecución de JavaScript. El 8 de septiembre, se lanzó oficialmente Bun1.0, lo que indica que ha alcanzado un estado estable y listo para producción.

Los desarrolladores de Bun dicen que está posicionado como un reemplazo directo de Node.js y tiene como objetivo eliminar la complejidad y la lentitud, simplificando el desarrollo de JavaScript al eliminar "capas de herramientas".

1. Desafío Node.js: integración del tiempo de ejecución, herramientas de empaquetado y marco de prueba

"Bun es un conjunto de herramientas completo para crear, ejecutar pruebas y depurar JavaScript y TypeScript, desde un pequeño script hasta una aplicación completa de renderizado del lado del servidor", dijo el creador Jarred Sumner en una demostración en video.

A diferencia de Node.js, Bun utiliza el motor JavaScriptCore de Apple y está construido con Zig. Está diseñado para hacer que las aplicaciones sean más rápidas sin agregar complejidad adicional a su código. Según el equipo de Bun, sus principales ventajas son:

  • Cuando usas Bun, no necesitas nodo, tiene un modo de monitoreo incorporado. Bun hace que las herramientas de Node.js (incluidos node, npx, nodemon, dotenv o cross-env) sean innecesarias.
  • Bun puede ejecutar diferentes archivos como .js, .ts, .cjs, .mjs, .jsx y .tsx que pueden reemplazar transpiladores como tsc y babel.
  • Bun es un ejecutor de pruebas compatible con Jest que admite pruebas de instantáneas, cobertura de código y burlas. Para que pueda escribir pruebas unitarias sin instalar dependencias adicionales.
  • Bun también es un paquete de JavaScript con el mejor rendimiento de su clase y una API de complemento compatible con esbuild.
  • Bun también es un administrador de paquetes compatible con npm, con todos los comandos familiares que tienen Yarn y npm.
  • Admite módulos EcmaScript y el sistema de módulos CommonJS.

Aunque los desarrolladores también han cuestionado su afirmación de ser un "reemplazo", de las ventajas anteriores se puede ver que Bun intenta integrar el tiempo de ejecución, las herramientas de empaquetado, el marco de prueba y otras funciones en una sola herramienta, resolviendo así la fragmentación de la herramienta. a problemas como la baja eficiencia del desarrollo.

Sin embargo, la versión 1.0 lanzada oficialmente por Bun sigue siendo diferente de la versión beta anterior. El desarrollador Jarred Sumner compartió en Twitter que una de las cosas más difíciles de lanzar Bun 1.0 fue la eliminación del servidor front-end que formaba parte de la versión beta.

"Me gustaría que tuviéramos más tiempo para hacer que Bun esté más orientado al desarrollo front-end", dijo Sumner en una sesión de preguntas y respuestas en Twitter después del lanzamiento del jueves. "Eso no es malo: puedes usar las herramientas que ya usas... Pero yo Sigo pensando que integrar el tiempo de ejecución directamente con las herramientas de compilación front-end es una gran oportunidad".

Señaló que los comentarios de los usuarios indicaron que no había ningún problema con la eliminación de los servidores front-end y que la mayoría de las reacciones a la noticia en las redes sociales fueron positivas. Un día después de su lanzamiento, todo el revuelo en torno a Bun giraba en torno a su velocidad y facilidad de uso.

2. Nacido para la velocidad, pero no sólo para la velocidad

Lo más impresionante de Bun es su velocidad. La razón por la que se atreve a desafiar a Node.js es su mayor confianza.

Según la presentación del equipo de Bun en la transmisión en vivo, la velocidad de escritura de Bun es tres veces mayor que la de Node.js y su velocidad de lectura de archivos es tres veces mayor que la de Node.js. Bun instala paquetes 29 veces más rápido que npm; en las pruebas de JavaScript, es 13 veces más rápido que Jest; y la velocidad de empaquetado es 1,75 veces más rápida que esbuild.

Ashcon Partovi, gerente de producto de Oven, la empresa de desarrollo a la que pertenece Bun, mencionó específicamente que Bun puede reemplazar cualquier comando npm run con Bun run. Npm tarda unos 150 milisegundos en comenzar a ejecutar el script en la MacBook Pro, que está en marcado contraste con los 30 milisegundos de Bun. . "Npm se siente significativamente retrasado. Bun se siente instantáneo".

Los competidores de Bun son Node.js y Deno, basado en Rust. El ingeniero de software James Cornick comparó específicamente los tres tiempos de ejecución Bun, Node.js y Deno, y los resultados mostraron que el rendimiento de Bun fue mejor que los dos últimos.

"Desarrollado por Zig, Bun pretende ser un conjunto de herramientas y tiempo de ejecución todo en uno centrado en la velocidad, el empaquetado, las pruebas y la compatibilidad con los paquetes Node.js", escribió Konik. "Su mayor atractivo Una de las fortalezas es su rendimiento , es significativamente más rápido que Node.js y Deno".

Señaló que el mantenedor de Bun proporcionó un punto de referencia de ejemplo ejecutando un controlador HTTP que usa React para representar una página del lado del servidor. Bun maneja aproximadamente 68.000 solicitudes por segundo, mientras que Deno y Node.js manejan 29.000 y 14.000 solicitudes respectivamente.

En sus propias pruebas de las primeras versiones de Bun, Konik descubrió que Node.js manejaba un promedio de 21,29 consultas por segundo, mientras que Deno promediaba 43,50. Bun maneja un promedio de 81,37 consultas por segundo.

Al mismo tiempo, Konik también descubrió que en otra comparación entre Node.js, Deno y Bun, Bun era el más rápido en el manejo de conexiones simultáneas y el número de solicitudes por segundo también era bastante alto, por ejemplo, en el caso de 10 conexiones concurrentes A continuación, Bun puede lograr 110,000 solicitudes por segundo, mientras que Node.js puede lograr 60,000 solicitudes por segundo y Deno puede lograr 67,000 solicitudes por segundo.

Por supuesto, la velocidad no es el único factor a considerar al correr.

El desarrollador MarkThree también señaló que cada tiempo de ejecución tiene sus ventajas: "Bun está más centrado en el rendimiento, por lo que en términos de rendimiento actual, es mucho mejor que los otros dos tiempos de ejecución. En lo que a mí respecta, Deno es sinónimo de seguridad". Puedo usar paquetes de la comunidad de forma segura sin preocuparme de que hagan cosas en mi sistema que no conozco. Node también está empezando a esforzarse mucho en el rendimiento y la seguridad. En general, la competencia es algo bueno y ayuda. avanzar en el tiempo de ejecución de JS. evolución."

3. Las versiones de Linux y macOS están listas, pero la versión de Windows aún es "experimental"

En términos generales, mucha gente todavía da la bienvenida al incipiente Bun.

Debido a que los entornos de desarrollo basados ​​en nodos a menudo implican una colección de herramientas diferentes, son difíciles de administrar y tanto Bun como Deno simplifican esto. Bun está más orientado a la compatibilidad con Node.js y CommonJS que Deno, lo cual es una ventaja para muchos desarrolladores.

Sin embargo, Bun todavía tiene mucho margen de mejora. Por ejemplo, el equipo de Bun proporciona versiones locales listas para producción para macOS y Linux, pero el equipo todavía está trabajando para que la versión de Windows funcione correctamente. En esta conferencia, la versión de Bun para Windows fue calificada de "altamente experimental". Hasta ahora, Bun sólo funciona en Mac, Linux y el subsistema de Windows para Linux (WSL).

Según la documentación, la versión de Windows actualmente solo admite el tiempo de ejecución Bun y "el administrador de paquetes, el ejecutor de pruebas y el empaquetador se han deshabilitado hasta que se vuelvan más estables".

4. ¿Deberías cambiar a Bun en lugar de Node.js?

Como nueva generación en el mundo de JavaScript, Bun muestra un lado interesante: tiene algunas características integradas interesantes que Node.js no tiene y, de hecho, es muy rápido. Si estás pensando en qué usar para tu próximo proyecto, no es mala idea darle una oportunidad a Bun.

En cuanto a cómo elegir entre varios tiempos de ejecución de JS, las opiniones del desarrollador Shalini Tewari son bastante representativas.

"Node.js, Bun y Deno son tiempos de ejecución js del lado del servidor, pero sus objetivos son completamente diferentes. La elección entre Bun y Node.js depende de las necesidades de su proyecto".

"Si necesita velocidad y una experiencia simple y liviana, opte por Bun. Si desea un ecosistema más amplio y soporte comunitario, entonces Node.js es una opción sólida. Incluso puede usar ambos métodos para hacer que sus aplicaciones JavaScript sean potentes y eficientes. "

Supongo que te gusta

Origin blog.csdn.net/Z__7Gk/article/details/132977929
Recomendado
Clasificación