Projet Construire un site web complet avec Middleman

Dans la troisième partie de cette série, nous allons nous salir les mains et commencer à créer un site pour un site de podcast fictif: «Matcha Nerdz». Nous utiliserons Middleman, Bourbon, Neat et Bitters. Allons-y!

Dans ce post

  • Feuille de route
  • Configuration de base du blog
  • LiveReload
  • Organiser des messages
  • Déploiement de pages GitHub
  • Des actifs plus intelligents
  • Configuration Bourbon
  • Normaliser et jQuery

Feuille de route

Commençons par un bref aperçu de la situation. Dans les prochains articles, je vais créer un petit site statique pour un podcast fictif appelé «Matcha Nerdz», un podcast destiné aux personnes qui souhaitent se plonger dans le thé vert en poudre. Il aura les pages suivantes:

  • Une page pour chaque tag
  • Une page de détail pour chaque épisode
  • Une page d'index pour les podcasts précédents

Nous utiliserons Middleman pour générer le site statique et la suite Bourbon pour tous les styles. J'espère que vous avez jeté un coup d'œil à mes précédents tutoriels sur Bourbon, Neat et Middleman avant votre arrivée. Sinon, je vous recommande d'aller les lire, à moins que vous ne vous sentiez déjà suffisamment à l'aise avec les bases.

Pour tout ce qui a trait au style, je fais beaucoup confiance à Bourbon depuis un bon moment. En outre, je creuse vraiment la syntaxe Sass en retrait-je le préfère de loin à la .scss syntaxe. le .toupet la syntaxe est le seul (probablement) inconnu peu que je voudrais jeter aux débutants, parce que je pense que cela vaut vraiment la peine de connaître.

Configuration de base du blog

Initions une nouvelle application pour notre site de podcast, en entrant dans le terminal:

intermédiaire bash init matcha_nerdz puis en passant à notre répertoire de projet:

bash cd matcha_nerdz

Maintenant, nous allons commencer Git:

"bash git init
# => pour initier un nouveau repo Git

git add -all # => ajoute tous les fichiers pour le transfert

git commit -m 'Commit Initital' # => valide les modifications "

Ensuite, nous ajoutons le modèle de blog au mélange. C'est une bonne base pour notre site de podcast. Plus tard, nous ajusterons les articles pour afficher les pistes audio de podcast de SoundCloud. Pour l'instant, cependant, ce n'est qu'un blog.

Dans le Gemfile, ajoutez:

rubis bijou "intermédiaire-blog"

Puis via le terminal:

bash bundle # ou intermédiaire bundle exec

bash intermédiaire init --template = blog

Cela mettra à jour votre dossier «matcha_nerdz». “.Config.rb” et votre modèle d'index reçoivent également une petite mise à jour. En plus de cela, vous obtenez de nouveaux modèles pour votre flux, une page de balises, une page de calendrier, un exemple d'article et une nouvelle présentation. Vérifiez la sortie du terminal:

bash identique .gitignore update config.rb existe source créer source / 2012-01-01-exemple-article.html.markdown créer source / calendar.html.erb créer source / feed.xml.builder mise à jour source / index.html.erb créer source / layout.erb créer source / tag.html.erb existe source / stylesheets existe source / javascripts existe source / images

Git:

bash git add --all git commit -m "Ajoute un modèle de blog"

Créer de nouveaux articles

Vous pouvez maintenant créer de nouveaux articles via la ligne de commande:

article d'intermédiaire bash 'Mon nouveau deuxième article original' # => create source / 2015-11-22-my-wonderful-second-article.html.markdown

Cela crée un nouvel article de démarque sous “/ source”. Ce n'est pas optimal en termes de stockage mais nous y arriverons. Lancez votre serveur pour voir votre premier exemple d'article de blog:

bash intermédiaire # ou intermédiaire serveur

Rangement des choses

Nous devons ensuite faire un peu de ménage. Le modèle de blog a créé une nouvelle présentation sous «source / layout.erb». Nous devons supprimer l’original dans “source / layouts / layout.erb” et déplacer le nouveau. Donc, via le terminal:

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

Nous devons également mettre à jour le nouveau "layout.erb" avec des éléments supprimés dans le fichier de mise en page. Ajoutez ce qui suit à votre balise dans “source / layouts / layout.erb”:

"html

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

Plus important encore, cela garantit que vos ressources JS et style sont disponibles..

Git

bash git source / layout.erb git add --all git commit -m 'Déplace une nouvelle présentation dans / layouts Ajoute des liens d'actif Supprime l'ancienne présentation'

LiveReload

Pour rendre nos vies un peu plus pratiques, nous ajouterons LiveReload au mélange. Nous devons récupérer la gemme puis l'activer dans notre fichier «config.rb».

Dans notre Gemfile:

gemme rubis 'intermédiaire-foie'

Dans le terminal:

bash bundle

Puis dans config.rb:

ruby #uncomment activate: foieeload

Et enfin nos commandes Git:

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

Lorsque cela est activé, redémarrez votre serveur et votre page s'actualisera automatiquement chaque fois que vous modifierez le contenu, les styles ou le comportement de la page. Sauveteur de vie, croyez-moi!

Attention! Attention: si un autre serveur local est en cours d'exécution, LiveReload risque de ne pas jouer au ballon. Vous aurez besoin de tuer cet autre serveur pour l'instant.

Organiser des messages

Lorsque vous regardez où les articles sont stockés maintenant, vous réaliserez rapidement que cette organisation directement sous «/ source» devient très fastidieuse. Publiez quelques articles et vous vous noierez dans des publications. Pas besoin d'être aussi désordonné, créons plutôt un répertoire sous “/ source” pour tous nos articles. Déplacez votre ou vos articles et laissez Middleman savoir où les trouver..

bash mkdir source / posts mv source / 2012-01-01-example-article.html.markdown source / posts / Ensuite, nous ajoutons «/ posts» comme source pour les articles de blog. Dans config.rb:

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

Puis nos commandes Git:

"bash git rm source / 2012-01-01-example-article.html.markdown # Supprime le fichier déplacé du référentiel

git add -all gco -m 'Ajoute un nouveau dossier pour les publications et ajoute la source dans config.rb "

Et c'est tout. Rien n'aurait dû changer et vous devriez voir l'exemple de l'article comme avant. Le stockage des messages, cependant, est beaucoup plus sain. Ce qui est également intéressant, c'est que si vous créez de nouveaux articles via la ligne de commande, vos nouveaux messages seront automatiquement stockés dans «/ post»:

article d'intermédiaire bash 'Mon superbe 3ème article' # => créer une source / posts / 2015-my-awesome-3rd-article.html.markdown

Déploiement de pages GitHub

Pour moi, le transfert de sites statiques vers GitHub Pages est une solution tellement pratique que je ne souhaite pas vous laisser déployer par le biais de Heroku ou du service S3 d'Amazon. Restons simples!

Dans le Gemfile:

gemme rubis "intermédiaire-déployer"

Puis dans le terminal:

bash bundle

Nous devons ajouter un bloc de déploiement à «config.rb»:

ruby activer: déployer faire | déployer | deploy.method =: git deploy.branch = 'gh-pages' deploy.build_before = true fin

Pour que GitHub Pages puisse trouver vos ressources CSS et JS, nous devons également activer les éléments suivants dans config.rb:

ruby configure: build active: fin_assets

Ensuite, créez un dépôt sur GitHub, ajoutez la télécommande et déployez:

"bash git remote add origine https://github.com/yourusername/repositoryname.git

intermédiaire se déployer "

Boom! Votre site est sous "yourusername.github.io/projectname" et vos actifs doivent être triés. J'aime ce processus, il ne pourrait pas être plus facile et plus convivial. Excellent travail GitHub!

bash git add --all gco -m 'Ajoute la configuration pour le déploiement de GitHub Pages'

Des actifs plus intelligents

Avant de passer à la configuration de Bourbon, j'aimerais supprimer les styles fournis avec Middleman et optimiser nos actifs pour une meilleure performance en matière de minification et de concaténation des actifs de navigateur. Allez dans «source / stylesheets / all.css» et supprimez son contenu. Il suffit de garder la première ligne:

css @charset "utf-8";

Commandes Git:

bash git add --all git commit -m "Supprime les styles de Middleman inutiles"

Ensuite, nous souhaitons activer quelques options pour optimiser les performances dans «config.rb»:

ruby configurer: construire activer: asset_hash activer: minify_javascript activer: css activer: gzip fin

Puis, encore une fois, Git commande:

bash git add --all git commit -m 'Active les optimisations de performance'

Permettez-moi d'expliquer rapidement ce que nous avons fait ici:

  • : gzip

Pour le moment, gzip est la méthode de compression la plus populaire et la plus efficace. Son algorithme de compression trouve des chaînes similaires dans un fichier et les compresse. Pour HTML, qui est plein d'espaces blancs et de balises correspondantes, cela est très efficace et réduit généralement la taille de la réponse HTTP de 70%. Activer ceci non seulement gzips votre HTML, mais également les fichiers CSS et JS. Au cours d'une compilation, Middleman crée vos fichiers comme d'habitude, mais les duplique également avec une version «.gz». Lorsqu'un navigateur entre en contact avec vos fichiers, il peut choisir s’il préfère traiter les fichiers compressés gzip ou normaux. gzipping est largement supporté par les navigateurs web et mobiles.

  • : minify_css

Ce processus supprime tous les fichiers inutiles de vos styles et réduit considérablement la taille de leurs fichiers. En bref, votre CSS devient un gros blob optimisé pour être lu par une machine. Certainement pas amical aux yeux.

  • : minify_javascript

C'est pareil que minify_css, mais un peu plus impliqué et sophistiqué.

  • : asset_hash

Cela active le hachage de vos actifs. Cela signifie que les noms de fichiers de vos ressources changent et reçoivent des informations supplémentaires (pendant le processus de construction) qui informent les navigateurs sur le besoin de télécharger à nouveau des ressources ou non. Maintenant, le nom d'un fichier dépend du contenu de ce fichier. Les ressources hachées sont mises en cache par les navigateurs et vos sites sont rendus plus rapidement. Le terme «empreinte digitale» est un autre mot, car il fournit une solution simple pour indiquer aux navigateurs si deux versions d’un fichier sont identiques ou non. La date de déploiement n'a pas d'importance, seulement le contenu. Jetez un oeil ci-dessous à quoi ressemblent les fichiers d'actifs hachés:

Captures d'écran

Cela a l'air méchant, mais vos images, feuilles de style et fichiers JavaScript ont maintenant un nom unique grâce à ce code «aléatoire» ajouté: un hachage (unique). Chaque fois que vous modifiez un actif et recommencez le processus de construction, le hachage change, ce qui indique aux navigateurs qu'ils doivent alors, et seulement ensuite, télécharger à nouveau ce fichier. Le fichier a ensuite expiré, un processus appelé «contournement du cache»..

A noter également: vous pouvez faire référence à vos fichiers de la même manière qu'auparavant, mais lors de la construction, les références de votre code HTML sont mises à jour pour utiliser ces noms hachés. Regarde:

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

"html

Titre du Blog … "Dans votre dossier" / build ", les fichiers JS et CSS sont automatiquement référencés avec les noms des ressources hachées. Grâce à cette opération de hachage, lorsque vous parcourez différentes pages de la même session ou que vous revenez plus tard, ces pages les ressources ont été mises en cache et n'ont plus besoin d'être redemandées - jusqu'à ce que vous changiez quelque chose.Ce processus réduit considérablement le nombre de demandes. N'est-ce pas cool? Tout cela avec une ligne de code dans «config. rb ”et quelques * astuces * Sprockets *. Booyakasha! La clé de toutes ces techniques d'optimisation des actifs est de minimiser le nombre de requêtes et la taille des requêtes de vos fichiers et de vos actifs. Middleman offre des améliorations de performances inégalées, avec peu de travail sur votre extrémité. ** Remarque: ** GitHub Pages a tout ce qui est compressé et compressé, mais cela ne fait pas de mal de s’assurer que tout est en place, surtout si vous décidez ultérieurement d’héberger votre application ailleurs. un regard sur notre étape actuelle.Votre page d’index devrait semble assez barebone maintenant:! [fichier] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Configuration Bourbon Pour ce projet, je souhaite utiliser trois pierres précieuses de Bourbon: + Bourbon + Neat + Bitters Ajoutons-les à notre Gemfile et bundle: "gem ruby ​​'bourbon' gem 'neat' gem 'bitters" Dans le terminal: "bash bundle" Bourbon et Neat sont maintenant bons à aller ( presque). Bitters doit d'abord installer certaines choses. Nous devons passer dans le répertoire stylesheets et activer un générateur qui place un tas de fichiers Bitters dans un dossier «/ base». "Bash cd source / styleheets bitters install" Regardez ce que nous avons après: ** Capture ** ! [fichier] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitters est une sorte de base pour vos créations. Il vous donne deux conceptions saines d'éléments d'interface utilisateur tels que des boutons, des types, des formulaires, des messages d'erreur, etc. Bitters prépare également un fichier «paramètres de grille» pour votre grille * Neat * que nous devons également configurer en supprimant la mise en commentaire de la ligne suivante dans «source / stylesheets / base / _base.scss»: «scss @import" paramètres de grille " "Pour compléter nos paramètres Bourbon pour le moment, j'aimerais ajouter les variables suivantes à nos paramètres de grille. Ils jettent les bases du dimensionnement de notre grille et activent une grille visuelle pour nous aider à mieux aligner notre conception. Dans “/source/stylesheets/base/_grid-settings.scss ,,: = scss $ colonne: 90px; $ gutter: 30px; $ grille-colonnes: 12; $ max-largeur: 1200px; $ visual-grid: true; $ visual-grid-index: back; $ visual-grid-opacity: 0.15; $ visual-grid-color: red; "La dernière étape pour rendre ce travail possible consiste à renommer" /stylesheets/all.css "en" / stylesheets. all.sass ”et importez nos fichiers Bourbon. ** Remarque: ** Depuis que nous avons adopté la syntaxe Sass en retrait, nous devons également supprimer le point-virgule à la fin de la ligne '@charset'. “All.css.scss”: "sass @charset" utf-8 "@import 'bourbon' @import 'base / base' @import 'neat" Nous importons le fichier de base de Bitters ici juste après Bourbon car nous avons besoin d'accéder à Neat fichier de paramètres de grille (qui se trouve dans le dossier “/ base”) avant d’importer Neat. Git: "bash git add --all git commit -m" Configure Bourbon et active les paramètres de la grille "Jetons un coup d'oeil! Vous pouvez voir la grille visuelle rouge et, également grâce à Bitters, notre typographie s’est améliorée un peu au-delà des valeurs par défaut du navigateur. Regardez une capture d'écran:! [Fichier] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normalize et jQuery Middleman est livré avec un [ Normaliser] (https://necolas.github.io/normalize.css/) fichier importé par défaut dans «all.css». Il s'agit d'une demande d'actif inutile dont nous pouvons facilement nous débarrasser. Renommez d'abord «source / stylesheets / normalize.css» en «source / stylesheets / _normalize.css.scss». Nous avons maintenant une partie que nous devons importer tout en haut après «@charset» dans «source / stylesheets / all.sass»: "css @charset" utf-8 "@import" normaliser "@import" bourbon "@ importer 'base / base' @import 'soigné' @import 'normaliser "Une chose à ne pas oublier est le lien vers nos feuilles de style dans notre mise en page. Puisque nous utilisons des partiels Sass qui sont tous importés dans une feuille de style finale «globale», nous n'avons plus besoin d'un lien vers normalize.css, un lien vers all.sass suffit. Dans “source / layouts / layout.erb”: "html <%= stylesheet_link_tag "all" %>