Creando un blog con GatsbyJS, Material Design y Contentful — Parte 2

Integración con Material Design

Edgar Talledos
Tech Talent Oaxaca
5 min readAug 2, 2019

--

Toca una parte interesante y que quizá pueda causar un poco de polémica para los puristas, haremos lo siguiente (para aclarar cualquier punto, porque antes por hacer esto he recibido comentarios negativos).

Lo más importante para el desarrollo de cualquier aplicación (según mi opinión) es el performance y el diseño, y para lograrlo usaremos sass junto con emotion.

No daré muchos argumentos, pero dada la naturaleza de Material Design y la modularidad de la misma, es ampliamente recomendable que se haga por medio de sass, esto maximará el performance, dado que tomaremos solamente los estilos y componentes que necesitemos.

La primera parte se encuentra en el siguiente enlace:

Partes del tutorial

  1. Instalación de plugins de gatsby, emotion y sass.
  2. Integración con Material Design y prueba de un componente.

Instalación y configuración de plugins

Vamos acceder a la página de plugins de gatsby e instalaremos el siguiente:

https://www.gatsbyjs.org/plugins/

El nombre del mismo es gatsby-plugin-sass y también necesitaremos instalar autoprefixer , una utilidad que añadirá compatibilidad con versiones antiguas de distintos navegadores, entre otras cosas.

Ahora instalaremos emotion utilizando el plugin gatsby-plugin-emotion .

A continuación añadiremos unas cuantas líneas al archivo ./gatsby-config.js

Ahora vamos a agregar un pequeño archivo, que ayudará a autoprefixer a saber qué versiones de los navegadores tendrá que utilizar, puedes checar la documentación en el siguiente enlace:

https://autoprefixer.github.io

Creamos un archivo en la raiz de nuestro proyecto, que llevará por nombre: .browserslistrañadiremos una línea de código.

Listo, hemos instalado, ahora solo tenemos que añadir un componente de react.

Integración con Material Design

Los invito a navegar por la página oficial de material design (nosotros usaremos la librería oficial) a parte de tener una documentación muy buena, es muy modular, y eso nos da muchas ventajas como antes había mencionado.

Vamos a utilizar el wrapper oficial de React, cuyo nombre es: Material Components for React, así como aparece en la siguiente captura.

El wrapper que utilzaremos está seleccionado en la imagen

Para hacer un poco mejor y más efectivo este tutorial, vamos a instalar directamente, utilzaremos el componente layout-grid.

En la documentación aparece como utilizar ese componente, por lo que primero tenemos que instalarlo (una de las ventajas es que solamente tenemos que instalar un componente, dado que hay otros wrappers como rmwc.io en los cuales necesita instalar a parte los estilos).

Ahora vamos a hacer lo siguiente, añadiremos la siguiente estructura de carpetas:

Vamos a crear un archivo dentro de sass-components que se llamará layout-grid.scss que contendrá lo siguiente:

Esto nos permitirá hacerle modificaciones al componente de forma muy modular, y utilizar los mixins que material tiene para nosotros y facilitarnos el trabajo.

Este estilo se volverá parte de todo nuestro blog, por lo que lo pondremos en ./src/components/layout.jsx añadiendo la siguiente importación y eliminando los estilos anteriores, nuestro componente layout quedará de la siguiente forma.

Es importante que eliminemos los archivos que no ocuparemos más, en este caso layout.css .

Modificaremos un poco nuestro componente, quedará como aparece en la siguiente línea.

Corremos el servidor para ver el resultado (en estos momentos todo debe de estar un poco desordenado).

Los márgenes han desaparecido y hay un margen de más

Ahora vamos a añadir unas cuantas líneas a ./src/pages/index.jsx

Primero, importaremos el componente de react, añadiendo la siguiente línea:

Siguiendo la documentación:

Envolvemos nuestra actual index, en nuestro Grid > Row > Cell, considerando que tomaremos todo el ancho, osea que tenemos que añadir la prop -> columns={12}, quedando de la siguiente forma.

Checamos nuestro servidor.

Los márgenes ya tomaron el layout-grid
Aquí se puede apreciar la división por márgenes que hace layout-grid

Ahora necesitamos corregir el error que tienen los márgenes externos.

Aquí se puede apreciar un margen extra en body

Antes ya habíamos instalado emotion, ahora inyectaremos un estilo global en nuestra aplicación para corregir el margen.

Importamos las librerías necesarias, agregando al archivo ./src/components/layout.jsx la siguiente línea.

Añadimos dentro de nuestro componente, arriba de Header lo siguiente:

Nuestro componente debe de quedar de la siguiente forma:

Checamos los cambios realizados.

Se han corregido los márgenes
El layout-grid está perfecto.

Vamos a jugar un poco con Material y Emotion para la próxima parte del tutorial. Por el momento es todo, espero te haya gustado, puedes dejar tus comentarios en la caja de comentarios.

Recueda que el repositorio del tutorial está en el siguiente enlace:

--

--

Edgar Talledos
Tech Talent Oaxaca

La única manera de lidiar con este mundo sin libertad, es volverte tan absolutamente libre que tu mera existencia sea un acto de rebelión