¿Express, Feathers y GraphQL son equivalentes?

La respuesta corta sería que no, no son equivalentes. Como alguien que ya mencionaste, realmente no puedes compararlos, porque realmente no son lo mismo y tienen un propósito diferente.

No sé mucho sobre Feathers, pero mi equipo y yo en Snipcart acabamos de publicar un tutorial [1] en el que usamos GraphQL y Express. También ofrece introducciones en profundidad a ambos.

La distinción es que Express es un marco Node.js, mientras que GraphQL es un lenguaje de consulta para API.

Express lo ayuda a agregar funciones fundamentales de aplicaciones web sobre Node.js. Es un marco minimalista, lo suficientemente potente como para ser utilizado por la mayoría de las empresas que trabajan con Node.js.

GraphQL , por otro lado, es una nueva sintaxis para su API que define cómo recuperar datos de una o varias bases de datos. Debería verlo más como una alternativa a las API REST que a los marcos de cualquier tipo. Es posible con GraphQL gestionar datos a través de un único punto final a través de HTTP. Reagrupa todos los datos a los que puede acceder, sin importar dónde estén almacenados, en diferentes campos. Puede relacionarlos entre sí para obtener la información necesaria en una simple solicitud.

Si lee el tutorial, descubrirá que GraphQL y Express realmente funcionan muy bien juntos para crear aplicaciones simples pero potentes.

Notas al pie

[1] Tutorial Express de GraphQL y Node.js: aplicación de comercio electrónico GraphCMS – Snipcart

Los tres marcos cumplen un objetivo final similar, es decir, estructura de préstamos para el desarrollo de una aplicación web, pero cada uno tiene una función diferente.

Aquí hay un resumen rápido de las aplicaciones y fortalezas de cada uno:

  • Express: es un marco para escribir un servidor web en Node. Puede servir una variedad de contenido, incluidas plantillas JSON y HTML sin procesar. Esto significa que no es particularmente preceptivo y los usuarios tienen mucha flexibilidad. Puede escribir plantillas HTML en su estilo de elección y hacer que el servidor sustituya las variables directamente en el marcado antes de enviar la página al cliente. Alternativamente, puede escribir solo una API con Express y crear un cliente front-end (en JavaScript, o en cualquier otro lenguaje que pueda hacer solicitudes HTTP … prácticamente cualquier cosa) que interactúe con la API. Si solo está haciendo el cambio a Node y / o construyendo su primera aplicación web (sitio web no estático), aprender a usar Express con Pug (anteriormente conocido como Jade) (o similar) no es una mala manera de Aprenda Nodo y JavaScript!
  • Plumas: está construido en Express. A diferencia del propio Express, su uso es comparativamente limitado porque está destinado a ser utilizado solo como una API. Es probable que no renderice HTML con Feathers, ¡pero proporcionará convenciones y repeticiones útiles que le ahorrarán tiempo si está creando un cliente para interactuar con su API de back-end!
  • GraphQL: no es tanto un marco como un estándar. GraphQL se conoce como una “capa de consulta de datos”; ni almacena la información en una aplicación web ni muestra esa información. En cambio, le permite definir un método para que su servidor GraphQL obtenga datos de la base de datos y una interfaz estándar para que los clientes soliciten esa información (piense en condensar muchos puntos finales de la API REST en uno sin perder ninguna capacidad de obtención de datos) . No existe una versión única de GraphQL, sino una gran cantidad de implementaciones, cada una con su propio marco. Algunos clientes populares de GraphQL (el bit de código que entra en la aplicación que recibirán sus usuarios, a diferencia del servidor GraphQL que responderá a las solicitudes de GraphQL con los datos apropiados) son Facebook Relay y mi favorito personal, Apollo. Espero que GraphQL reemplace a REST como la interfaz API predominante en el futuro cercano, pero es más complejo para comenzar que el modelo REST que Feathers fomenta.
    Anexo a GraphQL:
    Para utilizar GraphQL, debe ejecutar un servidor GraphQL (el análogo de un conjunto de puntos finales REST que se ejecutan en un servidor web) que consulta con un cliente GraphQL (incluido en su aplicación “front-end”). Apollo es único entre las plataformas GraphQL en el hecho de que proporciona un servidor, al momento de escribir esto es especialmente confuso porque el servidor Apollo es en realidad un paquete llamado “graphql-tools” y varios clientes, incluidos paquetes para un ReactJS , [1] Angular, Swift / iOS, Android o la aplicación JavaScript “estándar”. Todos estos clientes funcionan de la misma manera al consultar datos del servidor.
    Otro punto de confusión es cómo se relacionan las diferentes implementaciones de GraphQL (por ejemplo, Relay vs. Apollo). Como se indicó anteriormente, GraphQL en sí mismo es solo un estándar o especificación. Diferentes paquetes implementan esta ‘especificación’. de maneras ligeramente diferentes (tal vez ofreciendo diferentes herramientas o sintaxis de desarrollador), pero puede mezclar y combinar clientes y servidores y confiar en que dos paquetes (uno para el cliente y otro para el servidor) se interconectarán correctamente. Por lo tanto, podría ejecutar un servidor Apollo si me gustara la sintaxis de ese proyecto y conectarme a él con un cliente Relay si prefería Relay por alguna razón.

Notas al pie

[1] Una biblioteca de JavaScript para construir interfaces de usuario – Reaccionar

Aquí hay una comparación de Express vs Feathers: Express + Socket.io. En resumen, Express es minimalista y Feathers no.

Graphql es un lenguaje API, por lo que compararlo con Express y Feathers es de manzanas a naranjas. De un vistazo, parece que ambos marcos tienen al menos un paquete que permite el soporte Graphql:

Para Express: graphql / express-graphql

Para plumas: feathersjs / feathers-waterline

Mañana organizamos un seminario web para analizar las mejores prácticas con GraphQL, ¿quieres unirte a nosotros?

http://bit.ly/GraphQLReduceCost