Header Ads Widget

Ticker

6/recent/ticker-posts

6 marcos útiles de GraphQL: FlacheQL, Relay, Apollo y otros

 


GraphQL es una solución poderosa para muchos usuarios. Tener la capacidad de determinar los datos devueltos y el formato que devuelve es excelente para un sistema robusto, que ofrece una excelente experiencia de usuario y un intercambio de datos inigualable. Dicho esto, GraphQL no es del todo perfecto listo para usar.

Por lo tanto, han surgido marcos GraphQL para intentar llenar los vacíos percibidos en la funcionalidad actual de GraphQL. Hoy, analizaremos un puñado de bibliotecas y marcos de trabajo GraphQL e identificaremos qué los hace únicos en el mercado más amplio.

Esta no pretende ser una lista exhaustiva, ni en amplitud ni en profundidad. Nuestro propósito es simplemente mostrar la amplia variedad de herramientas que se ofrecen a los usuarios de GraphQL.

FlacheQL

FlacheQL es una solución de almacenamiento en caché del lado del cliente rápida, flexible y ligera. En esencia, está diseñado para permitir a los desarrolladores ofrecer dos experiencias distintas de almacenamiento en caché. La primera, la recuperación de caché completa , es la experiencia clásica de almacenamiento en caché. Todas las solicitudes en FlacheQL se pasan a través de la caché y, como tal, las consultas completadas previamente se pueden transmitir sin tener que duplicar el contenido.

Sin embargo, lo más importante de FlacheQL es que también permite a los desarrolladores responder con recuperación de caché parcial . Cuando se realiza una solicitud, si parte de esa solicitud ha sido parte de otra solicitud completada previamente, los desarrolladores pueden optar por atender solo esa parte de la solicitud almacenada en caché, completando el resto de la consulta para completar los espacios en blanco.

Pros

  • La recuperación de caché incompleta es una característica única que es bastante rara en el mundo GraphQL. Esto ahorra una tonelada de datos y procesamiento a lo largo del tiempo, y su impacto en los enfoques de caché efectivos no puede subestimarse.
  • FlacheQL es bastante ligero y rápido, lo que es un requisito absoluto para un sistema de este tipo.

Contras

  • No todas las API necesitan almacenamiento en caché y, en muchos casos, este enfoque de contenido en caché, especialmente cuando se utiliza el almacenamiento en caché parcial, puede hacer más daño que bien (por ejemplo, cuando se debe llamar al estado de API para dispositivos médicos).
  • No importa lo ligero que sea, es otro marco del que preocuparse: si el almacenamiento en caché es un elemento de la lista de deseos, no una demanda, el almacenamiento en caché HTTP nativo integrado en GraphQL puede ser "suficiente".

Instalación

FlachQL se puede instalar usando el siguiente código:

import Flache from 'flacheql'
const endpoint = 'https://.com/graphql';
const yourCache = new Flache(endpoint);

Relé

Probablemente el framework más famoso de esta lista, Relay a menudo se considera una solución al mismo tiempo que cualquier GraphQL. Es un marco de uso muy general para el desarrollo de aplicaciones. Si bien esto significa que si bien es más una solución para todos los oficios que cualquier otra cosa, también tiene una compatibilidad mucho mayor que la mayoría de las cosas en el mundo GraphQL. Con un patrón de consulta altamente declarativo, almacenamiento en caché integrado y sincronización de servidor de estado, Relay es un enfoque generalista para la mayoría de las demandas en GraphQL.

Pros

  • La utilización a largo plazo ha hecho que Relay se haya probado y probado en gran medida. Esto también significa que si surge un problema, es probable que exista documentación sobre qué solucionó el problema y qué se requirió para que el usuario implemente dicha solución.
  • Relay es compatible con otras soluciones en el espacio GraphQL, lo que hace que su integración sea perfecta y casi sin problemas.

Contras

  • Para muchos, Relay busca solucionar los problemas que surgen de la mala comprensión de los inquilinos principales de REST; si este es el caso de la implementación, la adopción de Relay es una solución a un problema más importante y no resuelve los problemas subyacentes de arquitectura y comprensión que causan la demanda en El primer lugar.

Instalación

El relé se puede instalar usando el siguiente código:

yarn add react react-dom react-relay
yarn add --dev babel-plugin-relay graphql
{
  "plugins": [
    "relay"
  ]
}

Apolo

Apollo es principalmente una solución de pila completa, pero debido a la naturaleza de su diseño, se puede utilizar el servidor, el cliente o una base de código conjunta servidor-cliente. Es compatible con las principales integraciones de marcos y tiene un enfoque algo generalista, muy parecido a Relay. Dicho esto, requiere significativamente más bibliotecas que otros marcos de esta lista. Eso, además de la metodología de almacenamiento en caché "buena pero no perfecta" (que a veces requiere actualización manual), hace que Apollo sea una solución específica para problemas específicos en lugar de una implementación que solucione todo.

Pros

  • Apollo es muy modular, lo que permite que el código del servidor, el código del cliente o ambas bases de código se utilicen de forma aislada o en tándem. Esto hace que Apollo sea mucho más libre en un sentido de desarrollo en comparación con otros marcos, incluso cuando se consideran los de esta misma lista.
  • Apollo es un generalista en un mundo de marcos de API especializados; como Relay, esto fortalece su propuesta de valor frente a marcos de implementación de API más específicos.

Contras

  • Apollo requiere más bibliotecas para hacer su funcionalidad principal que otros marcos mencionados en este documento y, como tal, si eso es un problema para un entorno de API, Apollo rápidamente se convierte en una no consideración.
  • El almacenamiento en caché está bien, pero no es genial: a veces requiere una actualización manual y, en algunas situaciones, eso es un factor decisivo.

Instalación

Apollo se puede instalar usando el siguiente código. Primero, debe iniciar la función del servidor:

cd start/server && npm install

A continuación, puede crear el servidor Apollo real y comenzar a construir los esquemas definidos.

const { ApolloServer } = require('apollo-server'); const typeDefs = require('./schema'); const server = new ApolloServer({ typeDefs });

Graphcool

Graphcool es un marco de trabajo del lado del servidor de código abierto que está diseñado específicamente para separar la lógica empresarial de los componentes con estado. Esto permite un mayor nivel de control sobre los recursos individuales y las rutas que esos recursos priorizan al tiempo que ofusca partes que facilitan o no interactúan directamente con las solicitudes de los clientes. Si bien esto parece una pequeña división para muchos, la separación de la lógica de la funcionalidad central es relativamente importante y permite que un sistema más distribuido proporcione la misma continuidad de función esperada en los diseños arquitectónicos estándar.

Pros

  • Graphcool proporciona amplias plantillas para trabajar, lo que significa que puede ponerse en marcha bastante rápido. Esa velocidad también se refleja en el esquema de construcción real: GraphCool es bastante rápido en hacer lo que hace.
  • Graphcool tiene una excelente metodología de filtrado, y cuando se combina con una excelente ordenación y paginación integradas, esto conduce a obtener resultados muy específicos, incluso para los estándares GraphQL.

Contras

  • El esquema de contenido generado por GraphCool es muy específico y no se observan relaciones distintas entre los elementos del esquema. Esto significa que tampoco hay una opción de eliminación en cascada.
  • Dado que GraphCool se ha convertido recientemente en código abierto, su documentación es muy escasa; esto es lo suficientemente significativo como para ser una queja común entre la mayoría de los que revisan el marco.

Instalación

GraphCool se puede instalar usando el siguiente código:

graphcool init     # bootstrap new Graphcool service
graphcool local up # start local cluster
graphcool deploy   # deploy to local cluster

Uña de espiga

Spikenail es compatible con Relay y es compatible de forma nativa con la funcionalidad GraphQL. Tiende a centrarse principalmente en el control de acceso y proporciona control a través de relaciones anidadas, ámbitos personalizados y roles dinámicos. Sus opciones de esquema son todas bastante avanzadas, lo que permite que los campos virtuales y los resolutores personalizados controlen el esquema de una manera ágil y funcional. Por diseño, Spikenail también está destinado a ser ajustable, lo que permite al usuario anular cualquier parte del marco para obtener una solución realmente personalizable.

Pros

  • Control de acceso altamente efectivo, que soporta relaciones, alcances y roles complejos.

Contras

  • Todo se maneja a través de middlewares altamente personalizables. Si bien este es un gran beneficio, también significa que Spikenail, listo para usar, está personalizado para "todo" y, como tal, debe cambiarse y adaptarse a lo que usted desea.

Instalación

Spikenail se puede instalar usando el siguiente código:

npm install -g generator-spikenail
yo spikenail

Vulcano

Vulcan es, en esencia, una solución de pila completa que combina React y GraphQL en Meteor. Si bien esto tiene el beneficio obvio de ofrecer esa funcionalidad dentro de Meteor, tiene la importante advertencia de que, esencialmente, está tomando la decisión de diseño para seguir con Meteor. Debido a eso, no adopte Vulcan a menos que desee seguir con esa opción, ya que cambiar más adelante será costoso, lento y complejo.

Pros

  • Una solución completa de pila completa.

Contras

  • Requiere "compra" para el entorno Meteor y, como tal, no es una gran opción para implementaciones fuera de este campo relativamente limitado.

Instalación

Vulcan se puede instalar usando el siguiente código:

npm install
npm start

Conclusión

Esta lista solo pretende ser una introducción a muchos de estos marcos. Dicho esto, esta lista comienza a pintar una imagen de lo que el panorama GraphQL tiene para ofrecer y qué marcos se pueden utilizar para aprovechar las disposiciones de código para un mejor almacenamiento en caché, funcionalidad extensible y más.

¿Cuál es tu marco favorito? ¡Háganos saber en los comentarios a continuación!

Publicar un comentario

0 Comentarios