El Bosque para los Árboles (Sintaxis Abstracta)

Rate this content
Bookmark

Llámalo "iniciar", "crear estructura", "inicializar" o simplemente "escribir palabras en una terminal y obtener archivos para comenzar", esta es a menudo la primera oportunidad para que un framework deleite o decepcione a los desarrolladores. ¿Qué tan fácilmente pueden comenzar, pueden extenderlo con su conjunto de herramientas ideal y cómo escalará? En esta charla exploraremos las limitaciones de las soluciones actuales y examinaremos las formas en que nos propusimos mejorar la experiencia de incorporación de desarrolladores del nuevo framework y SDK de React de Shopify, Hydrogen.

8 min
25 Oct, 2021

Video Summary and Transcription

Hydrogen es un framework y SDK React con opiniones para construir tiendas personalizadas rápidas y dinámicas impulsadas por Shopify. Con Hydrogen, los desarrolladores pueden aprovechar los compiladores para componer fácilmente operaciones comunes y mejorar la experiencia del desarrollador. El framework se enfoca en el rendimiento de imágenes, el almacenamiento en caché de solicitudes, la representación en el servidor y los componentes de servidor de React. También proporciona auditoría de accesibilidad, seguridad, métricas web y violaciones del framework. La CLI de Hydrogen ofrece una experiencia de desarrollo poderosa y divertida para la creación inicial, la aplicación de las mejores prácticas, el mantenimiento continuo y las pruebas.

Available in English

1. Introducción a Hydrogen

Short description:

Hydrogen es un marco de trabajo y SDK React con opiniones para construir tiendas personalizadas rápidas y dinámicas impulsadas por Shopify. El tiempo que lleva ponerse en marcha es crucial para la experiencia del desarrollador. Queríamos brindar a los desarrolladores un mejor punto de partida con una interfaz de línea de comandos más sofisticada, extensible y que los acompañe mientras construyen su experiencia de comercio personalizada. Aquí hay un modelo mental de alto nivel de cómo funciona esto: recopilar información sobre el proyecto, analizar el proyecto existente o comenzar desde un proyecto base de Hydrogen, aplicar funciones de transformación para manipular el código y generar nuevo código a partir de la representación JSON.

Hydrogen es un marco de trabajo y SDK React con opiniones para construir tiendas personalizadas rápidas y dinámicas impulsadas por Shopify. Actualmente estamos en versión beta privada, pero estén atentos a una vista previa para desarrolladores en las próximas semanas. En realidad, no voy a entrar en detalles sobre cómo funciona Hydrogen específicamente, pero pueden ver esta demostración con Toby, el CEO de Shopify, en nuestra conferencia Unite de este año.

Como cualquier nuevo marco de trabajo o producto, el tiempo que lleva ponerse en marcha es crucial para la experiencia del desarrollador. Con tantos frameworks competidores, todos con una trayectoria mucho más larga, sabíamos que esto sería una consideración importante para cualquiera que decida adoptar Hydrogen. Los scripts de creación, como Create React App o Create Next App, son bastante estándar para la creación de proyectos. Pero aún así, muchos de ellos están actualmente limitados a clonar un directorio de plantilla. Esto no es ideal, ya que no proporciona muchas opciones de configuración, y cada nueva configuración conlleva la sobrecarga de mantenimiento de una plantilla completamente nueva y, probablemente, mucho código duplicado. Es muy poco probable que las configuraciones predeterminadas de estas plantillas se ajusten exactamente a tus preferencias. Es posible que desees agregar Tailwind o componentes de estilo o Storybook, o puedes instalar tu propia biblioteca interna. En estos casos, te quedas solo para unir tu configuración final para múltiples ejemplos o duplicar proyectos anteriores, todo antes de escribir una sola línea de código real.

Queríamos brindar a los desarrolladores un mejor punto de partida. Una interfaz de línea de comandos más sofisticada, extensible y que los acompañe mientras construyen su experiencia de comercio personalizada. Un CLI específico para el desarrollo de Hydrogen que hará más que la creación de proyectos, pero al que llamarás continuamente mientras desarrollas tu proyecto y capaz de un número infinito de configuraciones sin la sobrecarga adicional. Aquí hay un modelo mental de alto nivel de cómo funciona esto. Primero, recopilamos información sobre el proyecto ya sea mediante argumentos en el CLI, un archivo de configuración o solicitudes de entrada. Luego, analizamos el proyecto existente si hay uno o comenzamos desde un proyecto base de Hydrogen y lo convertimos en una representación en forma de árbol JSON. Esto es lo que se conoce como un árbol de sintaxis abstracta o AST. Luego, aplicamos funciones de transformación para mover nodos del JSON, manipulando efectivamente el código en función de las entradas que recopilamos en la primera etapa. Y finalmente, generamos nuevo código a partir del JSON y lo escribimos de vuelta en el disco. Estas etapas, análisis, transformación y generación son comunes en la mayoría de los compiladores. Y estamos utilizando Babbel en el fondo para hacer la mayor parte del trabajo pesado. Para aquellos que no están familiarizados, Babbel es una herramienta que es más conocida por ser una de las primeras formas en que comenzamos a modificar el código escrito utilizando características de JavaScript a una sintaxis más compatible con los navegadores. Cada etapa del compilador se ocupa de una preocupación diferente. No usamos muchos archivos de plantilla como EJS o Handlebar Templates, y solo operamos en el AST y las funciones de transformación son agnósticas al código de entrada. Esto se debe a que utiliza un patrón de código común conocido como el patrón visitante que permite muchas operaciones únicas e independientes en el objeto AST. Una función principal comenzará recorriendo el árbol y emparejando nodos con funciones de transformación. Estas funciones solo se preocupan por los nodos específicos en los que operan y les importa poco el resto del código fuera de esos puntos de interés.

2. Aprovechando los Compiladores y la Experiencia del Desarrollador

Short description:

Dado que cada operación está aislada, se comportan como el componente primitivo en React y podemos agrupar operaciones comunes en un paquete compartido. Esto hace que componer una serie de transformaciones comunes sea trivial y la sintaxis es muy accesible. Con Hydrogen, queremos ser un marco de trabajo con opiniones cuando más importa, preocupándonos por el rendimiento de las imágenes, el almacenamiento en caché de las solicitudes y utilizando el renderizado del lado del servidor y los componentes de servidor de React para proporcionar respuestas no bloqueantes y eliminar las cascadas del lado del cliente. Queremos proporcionar una experiencia de desarrollo que haga que el desarrollo web sea divertido nuevamente. Podemos inspeccionar problemas comunes mientras se utilizan los componentes de servidor de React y guiarlo hacia el uso correcto o simplemente cambiar el código por usted. También auditamos su proyecto en cuanto a accesibilidad y seguridad, conformidad con los indicadores vitales de la web y cualquier violación del marco de trabajo. Esto ha sido una breve mirada bajo el capó de cómo estamos aprovechando los compiladores desde la creación inicial hasta la aplicación de las mejores prácticas, el soporte de mantenimiento continuo e incluso las pruebas internas. Con la CLI de Hydrogen, cada una de estas interacciones culmina en una experiencia de desarrollo poderosa y divertida.

Dado que cada operación está aislada, se comportan como el componente primitivo en React y podemos agrupar operaciones comunes en un paquete compartido. Esto hace que componer una serie de transformaciones comunes sea trivial y la sintaxis es muy accesible. También existen algunas herramientas excelentes como astexplorer.net o el Babel Playground que pueden ayudarlo a escribir y visualizar transformaciones AST.

Imagina poder agregar soporte para aplicaciones web progresivas con un solo comando, o por ejemplo, si escribiste una transformación que agregara internacionalización con todos los manejadores de errores y fallbacks adecuados en su lugar. A un nivel básico, podríamos importar un proveedor y un hook, proporcionar al hook una configuración única basada en su proyecto y envolver la otra aplicación en ese proveedor, pasando el resultado del hook como una propiedad. Por supuesto, también instalaríamos el paquete y todas las cosas fáciles, pero poder manipular el código de esta manera puede llevar a oportunidades bastante poderosas y creativas.

Con Hydrogen, queremos ser un marco de trabajo con opiniones cuando más importa, pero hay ciertos complementos en su proyecto que pueden no tener sentido para usted desde el principio. Si decide más adelante que el proyecto lo requiere, podemos proporcionar un proceso llave en mano en el futuro y con todas las mejores configuraciones predeterminadas. Entonces, ¿en qué somos opinionados? Bueno, nos preocupamos por el rendimiento de las imágenes, el almacenamiento en caché de las solicitudes y el uso del renderizado del lado del servidor y los componentes de servidor de React para proporcionar respuestas no bloqueantes y eliminar las cascadas del lado del cliente. En Shopify, nos apasiona el comercio y queremos brindar a los desarrolladores de comerciantes en nuestra plataforma los bloques de construcción para crear tiendas de alto rendimiento utilizando Hydrogen.

En ese mundo, tenemos opiniones sobre los aspectos difíciles pero no diferenciados del desarrollo y queremos proporcionar una experiencia de desarrollo que haga que el desarrollo web sea divertido nuevamente. Piense en esto como nuestro intento de elevar el nivel base en la medida de lo posible para que pueda elevar más fácilmente el techo dentro de los tipos de experiencias de comercio creativas y personalizadas que desarrolla. Tomemos los componentes de servidor de React. Probablemente no es algo con lo que hayas trabajado mucho todavía y tal vez no estés seguro de qué componente debería ser solo para el cliente, solo para el servidor o compartido, y qué primitivas están disponibles en cada uno de ellos. Bueno, utilizando el mismo proceso de análisis, transformación y generación que he descrito anteriormente, podemos acompañarte. Podemos inspeccionar problemas comunes mientras se utilizan los componentes de servidor de React y guiarlo hacia el uso correcto o simplemente cambiar el código por usted. Podemos proporcionar migraciones integradas directamente en la CLI que analizarán automáticamente su proyecto en busca de cambios que puedan romper en nuevas versiones de Hydrogen y, opcionalmente, aplicar una migración automáticamente. También auditamos su proyecto en cuanto a accesibilidad y seguridad, conformidad con los indicadores vitales de la web y cualquier violación del marco de trabajo. También utilizamos la CLI internamente para alimentar nuestras pruebas de integración, generando configuraciones únicas de aplicaciones Hydrogen sobre la marcha que probamos en navegadores sin cabeza para detectar problemas. Esto nos protege de lanzar nuevas versiones con problemas desconocidos y también tiene la ventaja adicional de que probamos nuestras propias herramientas. Entonces, esto ha sido una breve mirada bajo el capó de cómo estamos aprovechando los compiladores desde la creación inicial hasta la aplicación de las mejores prácticas, el soporte de mantenimiento continuo e incluso las pruebas internas. Con la CLI de Hydrogen, cada una de estas interacciones culmina en una experiencia de desarrollo poderosa y divertida.

Gracias por ver mi charla. Si tienes alguna pregunta o quieres enviarme un mensaje, no soy muy activo en las redes sociales, pero puedes encontrarme como kardagram en la mayoría de los lugares. Bueno, disfruta el resto de la conferencia.

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

GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Your GraphQL Groove
Building with GraphQL for the first time can be anywhere between daunting and easy-peasy. Understanding which features to look for in your client-side and server-side tooling and getting into the right habits (and ridding yourself of old habits) is the key to succeed with a team of any size in GraphQL.

This talk gives an overview of common struggles I've seen numerous teams have when building with GraphQL, how they got around common sources of frustration, and the mindset they eventually adopted, and lessons learned, so you can confidently stick with and adopt GraphQL!
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Atomic Deployment for JS Hipsters
Deploying an app is all but an easy process. You will encounter a lot of glitches and pain points to solve to have it working properly. The worst is: that now that you can deploy your app in production, how can't you also deploy all branches in the project to get access to live previews? And be able to do a fast-revert on-demand?Fortunately, the classic DevOps toolkit has all you need to achieve it without compromising your mental health. By expertly mixing Git, Unix tools, and API calls, and orchestrating all of them with JavaScript, you'll master the secret of safe atomic deployments.No more need to rely on commercial services: become the perfect tool master and netlifize your app right at home!
React Advanced Conference 2021React Advanced Conference 2021
6 min
Full-stack & typesafe React (+Native) apps with tRPC.io
Top Content
Why are we devs so obsessed with decoupling things that are coupled nature? tRPC is a library that replaces the need for GraphQL or REST for internal APIs. When using it, you simply write backend functions whose input and output shapes are instantly inferred in your frontend without any code generation; making writing API schemas a thing of the past. It's lightweight, not tied to React, HTTP-cacheable, and can be incrementally adopted. In this talk, I'll give a glimpse of the DX you can get from tRPC and how (and why) to get started.

Workshops on related topic

React Advanced Conference 2021React Advanced Conference 2021
170 min
Build a Custom Storefront on Shopify with Hydrogen
Workshop
Hydrogen is an opinionated React framework and SDK for building fast, custom storefronts powered Shopify. Hydrogen embraces React Server Components and makes use of Vite and Tailwind CSS. In this workshop participants will get a first look at Hydrogen, learn how and when to use it, all while building a fully functional custom storefront with the Hydrogen team themselves.
React Advanced Conference 2022React Advanced Conference 2022
81 min
Build a Product Page with Shopify’s Hydrogen Framework
WorkshopFree
Get hands on with Hydrogen, a React-based framework for building headless storefronts. Hydrogen is built for Shopify commerce with all the features you need for a production-ready storefront. It provides a quick start, build-fast environment so you can focus on the fun stuff - building unique commerce experiences. In this workshop we’ll scaffold a new storefront and rapidly build a product page. We’ll cover how to get started, file-based routing, fetching data from the Storefront API, Hydrogen’s built-in components and how to apply styling with Tailwind.You will know:- Get started with the hello-world template on StackBlitz- File-based routing to create a /products/example route- Dynamic routing /products/:handle- Hit the Storefront API with GraphQL- Move the query into the Hydrogen app- Update the query to fetch a product by handle- Display title, price, image & description.- Tailwind styling- Variant picker and buy now button- Bonus if there’s time: Collections page
Prerequisites: - A Chromium-based browser (StackBlitz)- Ideally experience with React. A general web development background would be fine.
React Advanced Conference 2021React Advanced Conference 2021
168 min
How to create editor experiences your team will love
Workshop
Content is a crucial part of what you build on the web. Modern web technologies brings a lot to the developer experience in terms of building content-driven sites, but how can we improve things for editors and content creators? In this workshop you’ll learn how use Sanity.io to approach structured content modeling, and how to build, iterate, and configure your own CMS to unify data models with efficient and delightful editor experiences. It’s intended for web developers who want to deliver better content experiences for their content teams and clients.