¿Debo aprender Express.js o Koa.js para el nodo?

Hola, soy relativamente nuevo en Node.js y he creado algunas aplicaciones pequeñas en Express.js y Koa.js. Mi elección personal es Koa.

1. Koa es más ligero y más modular que el expreso. Esto significa que cuando creo una aplicación ya no hay toneladas de cosas, es una aplicación completamente vacía y solo uso las que quiero usar. Si quiero un registrador para imprimir solicitudes y respuestas en mi consola? Añado el middleware koa-logger. Si quiero páginas estáticas (como html, archivos js, etc.), agrego el middleware koa-static. Agregar middleware toma una línea de código y es muy fácil. De hecho, creo que esto es genial para aprender porque si te hace entender todas y cada una de las partes de la aplicación que estás creando. Siempre tuve malas experiencias en el pasado con marcos en los que generarían código automáticamente y no tenía idea de por qué estaba allí o cómo encajaba con el resto de la aplicación hasta mucho más tarde.

2. También me gustan las devoluciones de llamada, pero incluso al crear algunos envoltorios de API simples, descubrí que empecé a tener problemas molestos con las devoluciones de llamada. La conclusión es que si aprende a codificar con generadores y en Koa, podrá escribir en 10 líneas lo que antes habría tomado como 30 líneas. Realmente es así de diferente. Honestamente, una vez que superé el primer tipo de obstáculo, en realidad no fue tan difícil conceptualizar una aplicación koa. Al igual que acaba de poner sus funciones asíncronas después de una declaración de rendimiento.

3. Koa fue creado por el creador original de Express. Koa está destinado a resolver muchos de los problemas en Express, como tener que hacer parches de mono. (El parche de mono es esta cosa horrible en la que modificas el código preempaquetado). Es definitivamente posible que así sea como la gente programará en el futuro. Es una forma extremadamente elegante, limpia y eficiente de programar de forma asíncrona (hasta que la espera asíncrona se produce en unos pocos años …).

Koa es un poco más difícil porque requiere conocimientos previos en generadores y promesas (o trucos). Dicho esto, hay muchas explicaciones y videos en youtube que explican estos conceptos. Como mencioné antes, no soy un experto en esto, pero he jugado con ambos y personalmente prefiero a Koa.

Una cosa que realmente recomendaría en lugar de saltar directamente a los marcos es hacer algunos paquetes pequeños en npm (gestor de paquetes de nodo). Usted puede experimentar con la programación de devolución de llamada allí. Hay un montón de tutoriales sobre cómo puede hacer y publicar una pieza de software en npm. Si quieres darme de alta en @yvanscher en twitter y podemos chatear más.

Editar:

Quiero agregar una edición a todo esto ahora que he estado haciendo un poco más de Koa.
Descubrí que a veces el código de devolución de llamada promisificable para ser utilizado en Koa tiene algunos efectos extraños. Por ejemplo, usar bluebird para promisificar y fb para crear una aplicación que acceda a la API de Facebook produce algunos resultados extraños. En lugar de que los resultados se almacenen en una variable `var resultado = rendimiento promisifedfb.api (‘4’)`, se lanzan y se deben capturar con los bloques try catch. Solo debes saber que si eliges usar Koa es posible que tengas que experimentar para usar paquetes que aún no han creado un soporte explícito y las cosas pueden ponerse un poco complicadas. Si me dejas un voto a favor, voy a darte un poco de mi tiempo para tratar de ayudarte a resolver tu problema. Solo pégame en twitter @yvanscher.

Edición 2:

Quiero agregar una edición, especialmente porque la gente parece leer esta respuesta. todo se reduce a esto: aunque creo que cosas como koa son el futuro de javascript, probablemente debas usar Express. más gente usa Express y ha sido usado muchas veces más que koa; Hay una gran ventaja de trabajar con el software que utilizan todos los demás. cuando el software ha sido probado en el campo de batalla por miles o millones de personas, es más fácil depurar problemas, es más fácil evitarlos, y casi todos los problemas tienen una solución ya establecida en algún lugar por alguien que se encontró con él primero. Creo que es apropiado mencionarlo ya que he estado trabajando como ingeniero de software, ingeniero de datos y, a veces, científico de datos por algunos años. Principalmente uso matraz cuando necesito hacer una aplicación web; está convenientemente en Python como mi otro canal de datos y código de procesamiento de datos. ahora puede que se pregunte ‘¿cómo puede el nuevo software convertirlo en la corriente principal si la gente solo usa lo probado y verdadero? Esa es una historia para otro tiempo / post. solo sepan que es difícil y generalmente ocurre cuando los ingenieros de software con experiencia deciden probar una nueva tecnología o marco. El beneficio marginal tiene que ser mejor para ese grupo de usuarios. Buena suerte con tu aprendizaje y si todavía decides usar koa más poder para ti. Es un marco realmente genial. como siempre estoy disponible en twitter para ayuda de codificación.

Como puede ver en las otras respuestas, Koa.js es una mejor opción, pero en mi experiencia, si usted es un nuevo usuario de Node es mejor si aprende Express primero, esto se debe básicamente a que la documentación de Koa es un tanto críptica para un nuevo usuario, mientras tanto Express tiene muchos tutoriales y cursos.

Una vez que domines Express, debes moverte a Koa.js, y verás las diferencias por tu cuenta.

Un trazador de líneas: No aprendas koaJS a distancia. No vale la pena su tiempo y energía hasta que esté lista para la producción y tenga el apoyo total de la comunidad.

Sigue leyendo para aprender mis razonamientos detrás de esto.

Estoy bastante familiarizado con ExpressJS y lo utilicé para desarrollar pocas aplicaciones listas para producción. El hecho de que ha evolucionado de node.js http nativo ha hecho que sea fácil de empaquetar para que los desarrolladores extiendan su funcionalidad y la compartan con la comunidad.

KoaJS evita el infierno de devolución de llamada

KoaJS tiene soporte de primera clase para generadores que lo ayudan a escribir código asíncrono ordenado aprovechando las co-rutinas. Pero esto solo no debería ser la razón para adoptar un nuevo marco.

¿Quieres evitar el infierno de devolución de llamada? Puedes usar promesas o generadores en la aplicación express. No necesita migrar a un marco totalmente diferente, solo para eso

Koa es modular.

Seguramente lo hace liviano desde el punto de vista del código, pero insoportablemente pesado para los desarrolladores. Por cada funcionalidad que desee agregar, terminará en Google y, por lo tanto, quemará más y más tiempo en la búsqueda de respuestas solo.

Desea soporte para solicitudes GET / POST / DELETE, es decir, desea un soporte de enrutamiento. Usted buscará en Google y koa-router ha expresado como funcionalidad de enrutamiento. Lea el archivo doc (README) e intégrelo con su código. Hasta ahora tan bueno.

Para implementar un inicio de sesión de Google simple. Pasaporte es lo primero que me viene a la mente por razones obvias. Pero no puedes usar estos paquetes de manera inmediata. Comenzarás a tirar de tu pelo cómo integrar el pasaporte con KoaJS. La documentación de una sola página de KoaJS está muy mal escrita y carece de información crucial. A menudo te encontrarás en Google para obtener respuestas.

Me encuentro haciendo eso. Busque en Google las respuestas, copiando y pegando fragmentos de los módulos que se encuentran en github. Es frustrante cuando ves en 10 de las líneas que has escrito, solo una es significativa para ti y el resto se copia: “var xxx = require (‘koa-xxx’); // ta-da tiene función xxx “.

¿Estás viendo el problema? Koa es genial, pero la falta de apoyo comunitario ha eliminado todos sus beneficios. Estar atascado en todos los niveles me hace renunciar a KoaJS.

Estoy totalmente de acuerdo con Kai Zhu. Para ser productivo con KoaJS, tiene que volver a escribir / innovar muchos módulos existentes

KoaJS es más rápido

Tal vez o tal vez no. Cada aplicación es diferente y, para una aplicación puramente WEB, el número de referencia final dependerá completamente de su código. Después de todo, bajo el capó es el mismo motor v8 que lo va a ejecutar.

KoaJS es el futuro

Prepárese para el futuro en el presente para dar la bienvenida al futuro.

¿Sabes que KoaJS viene en dos versiones: 1.xy 2.x. ¿En qué se diferencian? ¿Qué paquete sería compatible con qué versión? Debe encontrar muchas, muchas respuestas antes de poder llamar a KoaJS una herramienta productiva y lista para la producción en su kit de herramientas.

Mi aprendizaje: prepárate primero. Aprende lo que llaman generadores. Úsalos en tu aplicación ExpressJS. Conozca el ecosistema koaJS primero antes de sumergirse en KoaJS. Eso salvará tus preciosos fines de semana que he perdido miserablemente.

KoaJS es del creador de expressJS.

Sí estoy de acuerdo. Para los creadores, por los creadores. Claramente, es visible en la falta de documentación que solo los creadores pueden entender.

Conclusión

KoaJS es muy impresionante y seguramente es el siguiente nivel de creación de aplicaciones web. Mi respuesta no responde y no debería interpretarse como “No usar KoaJS”, incluso si suena así.

En su lugar, lo que quiero decir es prepararse para el koaJS mientras trabaja con ExpressJS. Paso a paso, familiarícese con el ecosistema koaJS. Aprende ‘co’, y generadores. Continuar de frente con KoaJS solo le hará retroceder si ha decidido trabajar en un gran proyecto.

Después de dar dos semanas de tiempo a KoaJS, hoy estoy decidiendo recurrir a la querida ExpressJS. En dos semanas he construido con éxito un blog basado en la autenticación de Google. No voy a renunciar a KoaJS. Estoy tomando un camino diferente para alcanzar la meta final.

usted debe aprender expreso Express no intenta hacer cosas demasiado locas para los objetos de solicitud de socket y respuesta de socket nativos de nodejs. simplemente les agrega métodos y propiedades adicionales, así que muchas cosas http que haces en Express, podrías hacer con un servidor nodejs puro y viceversa (y también te permite aprovechar muchas soluciones de desbordamiento de pila que tratan con http io en nodejs ).

Koajs prácticamente ignora las clases y objetos http nativos de nodejs, y reinventa los suyos propios. He tenido experiencia al usar otros dos marcos que intentaron reinventar o reemplazar los objetos de solicitud / respuesta nativos de nodejs (hapi y mojito), y mi conclusión después de usar koajs es la misma que esas dos: los koajs nunca se acercarán a expresar en términos de popularidad o uso productivo. alguna vez

nodejs tiene que ver con http io, por lo que uno debería esperar que sus apis integradas para tratar con http, estén completamente probadas y bien diseñadas. Si trabaja en proyectos web serios, ¿en qué confiaría: 1) la API http nativa de nodejs con algunas mejoras leves hechas por Express, o 2) la API http “nueva y mejorada” completamente diferente reinventada por koajs / hapi / mojito?

de hecho, koajs hace que sea imposible hacer cosas simples como configurar encabezados http o escribir directamente en el cuerpo de respuesta utilizando las api-calls de nodejs nativas, porque sus reinvenciones tienen muchos efectos secundarios sutiles y magia, que se romperían si lo intentas. Haz eso. Si va con koajs, está bloqueado efectivamente para escribir el código del servidor de la “manera koajs”, y ninguno de los códigos del servidor será portátil o reutilizable en ningún proyecto que no sea koajs. subidas de archivos de varias partes, websockets, auth / openid / user login, etc … todo esto tendrá que reinventarse usando la api de koajs.

Definitivamente deberías aprender koa de los dos.
Koa en la superficie puede parecer inicialmente más complejo que el expreso, pero esta complejidad da paso a una buena arquitectura, un buen manejo asíncrono y un conjunto de otras características.
En lugar de crear otra versión de Express Ie upgrade, los desarrolladores de Express regresaron al tablero de dibujo y reconstruyeron el marco desde cero utilizando los generadores de es6. Y como lo cambiaron significativamente en el proceso de actualización, lo cambiaron de nombre a koa.

Hace 3 meses, pensaba lo mismo en mi mente y después de navegar en internet y escuchar a algunas personas de la industria, decidí ir con KOAJS y ​​ahora estoy disfrutando de mi decisión.

KOA es del mismo equipo que nos da Express y esto nos da confianza, por lo que diría que la experiencia del equipo de Express 4.0 muestra Koa (marco de Node.js) para el futuro, ya que utiliza las características de ECMAScript 6 que hacen la vida del desarrollador más fácil, especialmente nos ayuda a deshacernos de las funciones de devolución de llamada.

Nota: KOA 2 está en camino, vigílalo también 🙂

Aprende expreso si:

  • Necesitas hacer un proyecto de forma rápida y sencilla.
  • Está familiarizado con el javascript y la forma en que tradicionalmente utiliza las devoluciones de llamada para el código asíncrono
  • Prefieres los frameworks populares y probados por el tiempo, y generalmente los guardas a salvo.

Aprende koa si:

  • Por lo general, te gusta estar delante de la curva y en el borde de sangrado
  • Su proyecto debe ser a prueba de futuro, duradero y fácil de mantener a largo plazo
  • Usted proviene de un lenguaje de programación que tiene funciones asíncronas o un estilo sincrónico de tratar con acciones asíncronas sin devoluciones de llamada.

koa vs express

Por lo que sé, la principal diferencia entre Express y Koa es el predominio de la codificación de estilo asíncrono o síncrono. Express utiliza el estilo de devolución de llamada / asíncrono, y Koa hace un uso intensivo de promesas / futuros / generadores para lograr un estilo de codificación pseudo-síncrono.

Personalmente, no me importa la programación de estilo de devolución de llamada, 3 niveles de devoluciones de llamada está bien. Después de 3-4 niveles de devoluciones de llamada anidadas, podría considerar una biblioteca como Q, Bluebird o Async para hacerlo más limpio. Creo que las promesas y los generadores son geniales, pero Express.js funciona bien para mí, así que diría que con eso.

TLDR; Cierto. Ve con koa. Usted no tendrá que lidiar con el infierno de devolución de llamada.

Aquí hay una respuesta detallada a su pregunta.

Como puede ver en las otras respuestas, Koa.js es una mejor opción, pero en mi experiencia, si usted es un nuevo usuario de Node es mejor si aprende Express primero, esto se debe básicamente a que la documentación de Koa es un tanto críptica para un nuevo usuario, mientras tanto Express tiene muchos tutoriales y cursos.

Una vez que domines Express, debes moverte a Koa.js, y verás las diferencias por tu cuenta.

Para obtener más información, Koa.js Tutorial recopila datos.

Si eres un desarrollador de Node.Js, learning express.js tardará un máximo de uno o dos días. No he usado koa, así que no puedo darte números específicos, pero supongo que tomaría lo mismo que ofrece una funcionalidad similar o casi similar.

Así que prueba ambos en 3 días y apégate a lo que te gusta. Personalmente iría con Express, ya que ha existido durante bastante tiempo, debido a la rabia y el amor de los desarrolladores, y por lo tanto ha madurado.

Express.js funciona bien y mucha gente lo usa, no se “vaya con la corriente”, es un error común en el campo de desarrollo, no tiene que enseñarse nueva tecnología JUSTO porque está ahí.

Como puede ver en las otras respuestas, Koa.js es una mejor opción, pero en mi experiencia, si usted es un nuevo usuario de Node es mejor si aprende Express primero, esto se debe básicamente a que la documentación de Koa es un tanto críptica para un nuevo usuario, mientras tanto Express tiene muchos tutoriales y cursos.

Más detalles es Koa.js Tutorial.

koa.js es el futuro, el desarrollador debe pasar a koa.js porque su base en ES6 y ese futuro

para mas informacion puedes revisar

Lista de middleware – Koa

Llegarás a conocer el poder de koa.js.

Gracias ,

¡¡¡aclamaciones!!!

Recomendaría jugar con Meteor si tienes tiempo, es el marco más delicioso que existe.

Koa mejor creo

  • Koa 1 usa el rendimiento / siguiente mientras que Koa 2 usa async / await para resolver el infierno de devolución de llamada.
  • Koa mas flexible
  • Koa es más liviano y tiene suficiente middleware ahora.

Como Koa es más amigable con Es6, Koa es aún mejor.

No hay razón para usar Express cuando Koa está aquí. No vas a perder nada, solo saltar a Koa y tu vida será mucho más fácil si lo haces. Esto viene de un tipo que hizo lo mismo hace 3 años, saltó a Node y decidió ir con Koa primero que expresarse. Nunca miré hacia atrás.

Una persona dijo que escuchan que Koa es mejor pero que los documentos son crípticos. No estoy de acuerdo Además, te obliga a comenzar a aprender conceptos de ES6 como async-await.

Y hay una razón por la cual el equipo de Express construyó Koa, se dieron cuenta de que Express podría mejorar mucho.

He estado encontrando la respuesta a esta pregunta durante mucho tiempo. También fui aficionado a esta pregunta, pero después de leer este artículo El mejor marco de Node.js para su proyecto: Express.js, Koa.js o Sails.js. Lo entendí todo.

ser despreocupado y aprender koa

Más difícil de entender. Súper divertido.