Proyecto Construir un sitio web completo con Middleman

En la tercera parte de esta serie, nos ensuciaremos las manos y comenzaremos a construir un sitio para un sitio de podcast ficticio: "Matcha Nerdz". Usaremos Middleman, Bourbon, Neat y Bitters. Vamonos!

En este post

  • Mapa vial
  • Configuración básica del blog
  • LiveReload
  • Organizar publicaciones
  • Despliegue de páginas GitHub
  • Activos más inteligentes
  • Configuración Bourbon
  • Normalizar y jQuery

Mapa vial

Vamos a empezar con un poco de heads-up de dónde va esto. En el próximo par de artículos, voy a construir un pequeño sitio estático para un podcast ficticio llamado "Matcha Nerdz", un podcast para personas que quieren sumergirse en todo lo que sea el té verde en polvo. Tendrá las siguientes páginas:

  • Una página para cada etiqueta
  • Una página de detalles para cada episodio.
  • Una página de índice para podcasts anteriores

Usaremos Middleman para generar el sitio estático y la suite Bourbon para todo el estilo. Espero que haya echado un vistazo a mis tutoriales anteriores sobre Bourbon, Neat y Middleman antes de llegar a este punto. Si no, te recomiendo que vayas a leerlos, a menos que ya te sientas lo suficientemente seguro en lo básico..

Para todas las cosas relacionadas con el estilo, he estado confiando en Bourbon durante bastante tiempo. Además, realmente me gusta la sintaxis de Sass con sangría, ahora la prefiero .scss sintaxis. los .hablar con descaro a la sintaxis es la única (probablemente) parte desconocida que me gustaría lanzar a los novatos, porque creo que realmente vale la pena conocerla.

Configuración básica del blog

Iniciemos una nueva aplicación para nuestro sitio de podcast, ingresando en el terminal:

bash middleman init matcha_nerdz y luego cambiando a nuestro directorio de proyectos:

bash cd matcha_nerdz

Ahora vamos a poner en marcha Git:

"bash git init
# => para iniciar un nuevo repositorio de Git

git add -all # => agrega todos los archivos para la puesta en escena

git commit -m 'Initital commit' # => confirma cambios "

A continuación agregamos la plantilla de blog a la mezcla. Esta es una buena base para nuestro sitio de podcast. Más adelante ajustaremos los artículos para mostrar las pistas de audio de podcast de SoundCloud. Por ahora, sin embargo, es solo un blog..

En el Gemfile agregar:

gema rubí "intermediario-blog"

Luego a través de la terminal:

bash bundle # o bundle exec middledleman

bash middleman init --template = blog

Esto actualizará su carpeta "matcha_nerdz". ".Config.rb" y su plantilla de índice también se actualizan un poco. Además, obtienes nuevas plantillas para tu feed, página de etiquetas, página de calendario, un artículo de ejemplo y un nuevo diseño. Compruebe la salida del terminal:

bash idéntico .gitignore update config.rb existe source create source / 2012-01-01-example-article.html.markdown create source / calendar.html.erb create source / feed.xml.builder actualización source / index.html.erb crear fuente / layout.erb crear fuente / tag.html.erb existe fuente / hojas de estilo existe fuente / javascripts fuente / imágenes

Git:

bash git add --all git commit -m 'Agrega una plantilla de blog'

Creación de nuevos artículos

Ahora puedes crear nuevos artículos a través de la línea de comando:

Bash Middleman article "My new fancy second article" # => create source / 2015-11-22-my-wonderful-second-article.html.markdown

Esto crea un nuevo artículo de rebajas en "/ source". Esto no es óptimo en cuanto al almacenamiento, pero lo lograremos. Encienda su servidor para ver su primer artículo de blog de ejemplo:

bash middleman #or middleman server

Poner en orden las cosas

A continuación tenemos que hacer algunas tareas de limpieza. La plantilla del blog creó un nuevo diseño en "source / layout.erb". Necesitamos eliminar el original en "source / layouts / layout.erb" y mover el nuevo a allí. Así, a través de la terminal:

bash rm source / layouts / layout.erb mv source / layout.erb source / layouts /

También necesitamos actualizar el nuevo "layout.erb" con las cosas que se eliminaron en el archivo de diseño. Agregue lo siguiente a su etiqueta en "source / layouts / layout.erb":

"html

<%= stylesheet_link_tag “normalize”, “all” %> <%= javascript_include_tag “all” %>"

Lo más importante es que esto garantiza que sus activos de estilo y JS estén disponibles..

Git

bash git rm source / layout.erb git add --todo git commit -m 'Mueve el nuevo diseño a / layouts Agrega enlaces de activos Elimina el diseño antiguo'

LiveReload

Para hacer nuestras vidas un poco más convenientes, agregaremos LiveReload a la mezcla. Necesitamos agarrar la gema y luego activarla en nuestro archivo "config.rb".

En nuestro Gemfile:

gema de rubí 'intermediario-livereload'

En la terminal:

paquete de bash

Luego en config.rb:

ruby #uncomment active: livereload

Y finalmente nuestro Git ordena:

bash git add --all git commit -m 'Activa LiveReload'

Con esto activado, reinicie su servidor y su página se actualizará automáticamente cada vez que cambie el contenido de la página, los estilos o el comportamiento. Salvavidas, confia en mi!

Atención! Una advertencia: si tiene otro servidor local en ejecución, LiveReload puede no jugar a la pelota. Tendrás que matar a ese otro servidor por ahora.

Organizar publicaciones

Cuando mire dónde se almacenan los artículos en este momento, rápidamente se dará cuenta de que esta organización directamente debajo de "/ source" se vuelve tediosa muy rápidamente. Publica un par de artículos y te ahogarás en las publicaciones. No es necesario que sea tan desordenado; en lugar de eso, vamos a crear un directorio bajo "/ source" para todas nuestras publicaciones. Mueva su (s) artículo (s) allí y déjele saber a Middleman dónde encontrarlos.

bash mkdir source / posts mv source / 2012-01-01-example-article.html.markdown source / posts / Luego agregamos "/ posts" como fuente para los artículos del blog. En config.rb:

ruby blog.sources = "posts /: year-: title.html"

Entonces nuestro Git ordena:

"bash git rm source / 2012-01-01-example-article.html.markdown # Elimina el archivo movido del repositorio

git add -all gco -m 'Agrega una nueva carpeta para publicaciones y agrega una fuente en config.rb "

Y eso es. Nada debería haber cambiado y debería ver el artículo de ejemplo como antes. El almacenamiento de mensajes, sin embargo, es mucho más sano. Lo que también es bueno es que si crea nuevos artículos a través de la línea de comandos, sus nuevas publicaciones se almacenarán automáticamente en "/ post":

Bash Middleman article 'My awesome 3rd article' # => create source / posts / 2015-my-awesome-3rd-article.html.markdown

Despliegue de páginas GitHub

Para mí, el envío de sitios estáticos a GitHub Pages es una solución tan conveniente que no quiero ponerle en práctica a través de Heroku o el servicio S3 de Amazon. Seamos sencillos!

En el Gemfile:

gema rubí "intermediario-despliegue"

Luego en la terminal:

paquete de bash

Necesitamos agregar un bloque de despliegue a "config.rb":

ruby activar: desplegar hacer | desplegar | deploy.method =: git deploy.branch = 'gh-pages' deploy.build_before = true end

Para que las páginas de GitHub encuentren sus activos de CSS y JS también debemos activar lo siguiente en config.rb:

ruby configure: construir hacer activar: relative_assets end

Luego, cree un repositorio en GitHub, agregue el control remoto y despliegue:

"bash git remoto agregar origen https://github.com/yourusername/repositoryname.git

despliegue de intermediarios "

¡Auge! Su sitio está activo en "yourusername.github.io/projectname" y sus activos deben estar ordenados. Me encanta este proceso, no podría ser más fácil y más fácil de usar. Buen trabajo GitHub!

bash git add --all gco -m 'Agrega configuración para la implementación de GitHub Pages'

Activos más inteligentes

En el último paso antes de entrar en la configuración de Bourbon, me gustaría deshacerme de los estilos que vienen con Middleman y optimizar nuestros activos para un mejor rendimiento en la minificación y concatenación de recursos del navegador. Vaya a “source / stylesheets / all.css” y elimine su contenido. Solo mantén la primera línea:

css @charset "utf-8";

Git comandos:

bash git add --all git commit -m 'Elimina estilos de intermediarios innecesarios'

A continuación, queremos activar un par de opciones para optimizar el rendimiento en "config.rb":

ruby configure: construir hacer activar: asset_hash activar: minify_javascript activar: css activar: gzip end

Entonces, de nuevo, Git ordena:

bash git add --all git commit -m 'Activa las optimizaciones de rendimiento'

Déjame explicarte rápidamente lo que hicimos aquí:

  • gzip

Por el momento, gzip es el método de compresión más popular y efectivo. Su algoritmo de compresión encuentra cadenas similares dentro de un archivo y las comprime. Para HTML, que está lleno de espacios en blanco y etiquetas coincidentes, esto es muy efectivo y generalmente reduce el tamaño de la respuesta HTTP en un 70%. Al activar esto no solo gzips tu HTML, sino también los archivos CSS y JS. Durante una compilación, Middleman crea sus archivos como de costumbre, pero también los duplica con una versión ".gz". Cuando un navegador se pone en contacto con sus archivos, puede elegir si prefiere servir archivos comprimidos con gzip o archivos regulares. gzipping es soportado en gran medida por los navegadores web y móviles.

  • : minify_css

Este proceso elimina toda la basura innecesaria de sus estilos y reduce significativamente el tamaño de sus archivos. En resumen, su CSS se convierte en un gran blob optimizado para ser leído por una máquina. Definitivamente no es amistoso en los ojos..

  • : minify_javascript

Esto es lo mismo que minify_css, Pero un poco más complicado y sofisticado..

  • : asset_hash

Esto activa el hashing de sus activos. Significa que los nombres de sus archivos de activos cambian y reciben información adicional (durante el proceso de compilación) que informa a los navegadores si necesitan volver a descargar los activos o no. Ahora, el nombre de un archivo depende de los contenidos de ese archivo. Los recursos hash se almacenan en caché por los navegadores y sus sitios se procesan más rápido. Otra palabra para esto es "huella digital" porque proporciona una solución simple para informar a los navegadores si dos versiones de un archivo son idénticas o no. La fecha de despliegue no importa solo los contenidos. Mire a continuación cómo se ven los archivos de hash activo:

Capturas de pantalla

Esto parece desagradable, pero ahora sus imágenes, hojas de estilo y archivos de JavaScript obtienen un nombre único a través de este código "aleatorio" agregado: un hash (único). Cada vez que cambia un activo y vuelve a realizar el proceso de compilación, este hash cambia, lo que a su vez señala a los navegadores que, y solo entonces, necesitan volver a descargar ese archivo en particular. A continuación, el archivo caduca efectivamente, un proceso conocido como "almacenamiento en caché".

También vale la pena mencionar: puede referirse a sus archivos de la misma manera que antes, pero durante la compilación, las referencias en su HTML se actualizan para usar estos nombres de hash. Echar un vistazo:

"/Build/index.html(.gz)":

"html

Titulo de Blog ... "En su carpeta" / build ", se hace referencia automática a los archivos JS y CSS con los nombres de los activos de hash. Como resultado de este negocio de hash, cuando pasa por diferentes páginas en la misma sesión, o vuelve a visitar una página más tarde, estos los activos se han almacenado en caché y no es necesario volver a solicitarlos hasta que cambie algo. Este proceso reduce el número de solicitudes en una cantidad asombrosa. ¿No es genial? Todo eso con una línea de código en "config. rb "y algunos * Sprockets * wizardry. Booyakasha. La clave con todas estas técnicas de optimización de activos es minimizar el número de solicitudes y el tamaño de las solicitudes de sus archivos y activos. Middleman ofrece grandes mejoras de rendimiento, de inmediato, con poco trabajo en su final. ** Nota: ** GitHub Pages tiene todo lo que está comprimido y comprimido de la caja. Pero no está de más asegurarse de que todo esté en su lugar, especialmente si más tarde decide alojar su aplicación en otro lugar. Un vistazo a nuestra etapa actual. Su página de índice debe Mira bonitos barebones ahora:! [archivo] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Bourbon Setup Para este proyecto quiero usar tres gemas de Bourbon: + Bourbon + Neat + Bitters Agreguémoslas a nuestro Gemfile y paquete: "ruby gem 'bourbon' gem 'neat' gem 'bitters" En la terminal: "bash bundle" Bourbon y Neat ahora están en marcha ( casi). Bitters necesita instalar algunas cosas primero. Necesitamos cambiar al directorio de hojas de estilo y activar un generador que coloque un montón de archivos de Bitters en una carpeta "/ base". "Bash cd source / styleheets bitters instalar" Eche un vistazo a lo que tenemos después de esto: ** Captura de pantalla ** ! [archivo] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitters es una línea de base para sus diseños. Le ofrece un par de diseños sensatos para elementos de la interfaz de usuario como botones, tipos, formularios, mensajes de error, etc. Bitters también prepara un archivo de "configuración de cuadrícula" para su cuadrícula * Neat * que también debemos configurar sin comentar la siguiente línea en "fuente / hojas de estilo / base / _base.scss": "scss @import" configuración de cuadrícula " ; "Para completar nuestra configuración de Borbón por ahora, me gustaría agregar las siguientes variables a nuestra configuración de cuadrícula. Sientan las bases para dimensionar nuestra cuadrícula y activan una cuadrícula _visual_ que nos ayuda a alinear mejor nuestro diseño. En "/source/stylesheets/base/_grid-settings.scss" :"scss $ column: 90px; $ gutter: 30px; $ grid-columns: 12; $ max-width: 1200px; $ visual-grid: true; $ visual-grid-index: back; $ visual-grid-opacity: 0.15; $ visual-grid-color: red; "El paso final para hacer este trabajo es cambiar el nombre de" /stylesheets/all.css "a" / stylesheets. all.sass ”e importar nuestros archivos Bourbon. ** Nota: ** Desde que cambiamos a la sintaxis de Sass con sangría, también debemos eliminar el punto y coma al final de la línea '@charset'. "All.css.scss": "sass @charset" utf-8 "@import 'bourbon' @import 'base / base' @import 'neat" Importamos el archivo base de Bitters aquí justo después de Bourbon porque necesitamos acceso a Neat's El archivo de configuración de cuadrícula (que se encuentra en la carpeta "/ base") antes de importar Neat. Git: "bash git add --all git commit -m 'Configura Bourbon y activa la configuración de la red" ¡Vamos a echar un vistazo! Puede ver la cuadrícula visual roja y, también gracias a Bitters, nuestra tipografía ha mejorado un poco más allá de los valores predeterminados del navegador. Echa un vistazo a una captura de pantalla:! [Archivo] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normalize and jQuery Middleman viene con un [ Normalizar] (https://necolas.github.io/normalize.css/) archivo que se importa a "all.css" de forma predeterminada. Esta es una solicitud de activos innecesaria de la que podemos deshacernos fácilmente, así que cambie el nombre de "origen / hojas de estilo / normalize.css" a "fuente / hojas de estilo / _normalize.css.scss". Ahora tenemos un parcial que necesitamos importar justo en la parte superior después de '@charset' en “source / stylesheets / all.sass”: "css @charset" utf-8 "@import 'normalize' @import 'bourbon' @ importar 'base / base' @import 'neat' @import 'normalize "Una cosa que no debemos pasar por alto es el enlace para nuestras hojas de estilo en nuestro diseño. Ya que estamos usando parciales de Sass que todos se importan a una hoja de estilo final, "global", ya no necesitamos un enlace para normalize.css; un enlace a all.sass es suficiente. En "source / layouts / layout.erb": "html <%= stylesheet_link_tag "all" %>