React

A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES

Álvaro José Agámez Licha - @CodeMaxter

Velocity Partners Colombia

Medellín - Colombia, 2015/10/29

Agenda

  • ¿Qué es React?
  • Virtual DOM
  • Component-driven development
  • JSX
  • Show me the Code

¿Qué es React?

React es una librería UI desarrollada por Facebook para facilitar la creación de componentes interactivos, con estado y reusables. React es usando por Facebook en producción, e Instagram.com es escrito enteramente en React.

 

Uno de sus puntos de venta únicos es que no sólo funciona en el cliente, sino también puede ser renderizado en el lado del servidor y pueden trabajar juntos de forma interoperativa.

 

También utiliza un concepto llamado el DOM Virtual que selectivamente renderiza subárboles de nodos basados en cambios de estado. Hace la menor cantidad de manipulación DOM posible para mantener los componentes actualizados.

Virtual DOM

Para monitorizar los cambios en los modelos y aplicarlos en el DOM (alias renderizar) tenemos que ser conscientes de dos cosas importantes:

  1. Cuando los datos han cambiado.
  2. Cuales elementos del DOM deben ser actualizados.

Para la detección de cambios (1) React utiliza un modelo observer en vez de dirty checking (comprobación continua de cambios en el modelo). Por eso no tiene que calcular que ha cambiado, lo sabe inmediatamente. Esto reduce los cálculos y hace la aplicación más fluida.

Para el desafío de cambiar el DOM (2) React construye la representación de árbol del DOM en memoria y calcula qué elemento DOM debe cambiar. La manipulación del DOM es costosa, y nos gustaría mantenerla al mínimo. Por suerte, React trata de realizar la menor cantidad de manipulación a los elementos DOM como sea posible. Dado que menos manipulaciones del DOM se pueden calcular más rápido, basandonos en la representación del objeto, los costos de los cambios al DOM se reducen bastante.

Component-driven development

En el desarrollo guiado por componentes, uno no ve todo el sitio en una plantilla.


Al principio probablemente un pensará que es un inconveniente. Pero más adelante uno reconoce el poder de pensar en piezas más pequeñas que trabajan con menos responsabilidad. Esto facilita las cosas para entender, mantener y cubrir con pruebas.

¿Cómo debería imaginarlo?

  • FilterableProductTable
    • SearchBar
    • ProductTable
      • ProductCategoryRow
      • ProductRow

En primer lugar es aconsejable seguir el principio de responsabilidad única y lo ideal sería diseñar nuestros componentes para que sean responsables de sólo una cosa. Cuando empecemos a sentir que el componente no está cumpliendo con esto, debemos considerar dividirlo en partes más pequeñas.

JSX

JSX es una  extensión de sintaxis para ECMAScript, que es similar a XML. La sintaxis JSX y HTML son similares pero son diferentes en algunos puntos. Por ejemplo, el atributo HTML class se llama className en JSX. Para más diferencias y encontrar un conocimiento más profundo sobre este tema, pueden consultar la guía de Facebook referente a HTML Tags vs. componentes React.

 

Debido a que JSX no es compatible por defecto con los navegadores (tal vez algún día) tenemos que compilarlo a JS. Para esto podemos usar Babel.

Show me the Code

React

By Alvaro Agamez

React

  • 631