Progetto crea un sito web completo con Middleman

Nella terza parte di questa serie ci sporcheremo le mani e inizieremo a costruire un sito per un sito di podcast fittizio: "Matcha Nerdz". Useremo Middleman, Bourbon, Neat e Bitters. Andiamo!

In questo post

  • Roadmap
  • Impostazione blog di base
  • LiveReload
  • Organizzare i messaggi
  • GitHub Pages Deployment
  • Risorse più intelligenti
  • Impostazione Bourbon
  • Normalizza e jQuery

Roadmap

Iniziamo con un piccolo sopralluogo su dove sta andando. Nel prossimo paio di articoli ho intenzione di costruire un piccolo sito statico per un podcast fittizio chiamato "Matcha Nerdz", un podcast per le persone che vogliono immergersi in tutto il tè verde in polvere. Avrà le seguenti pagine:

  • Una pagina per ogni tag
  • Una pagina di dettaglio per ogni episodio
  • Una pagina indice per i podcast precedenti

Utilizzeremo Middleman per generare il sito statico e la suite Bourbon per tutti gli stili. Spero che tu abbia dato un'occhiata ai miei tutorial precedenti su Bourbon, Neat e Middleman prima di arrivare a questo punto. Altrimenti, ti consiglio di andare a leggerli, a meno che non ti senti già abbastanza sicuro nelle basi.

Per tutto ciò che riguarda lo styling, ho fatto molto affidamento su Bourbon per un po 'di tempo. Inoltre, scrivo davvero la sintassi di Sass con indentazione: lo preferisco di gran lunga al .SCSS sintassi. Il .insolenza la sintassi è l'unico (probabilmente) non familiare che vorrei lanciare ai neofiti, perché sento che vale davvero la pena di conoscerlo.

Impostazione blog di base

Iniziamo una nuova app per il nostro sito podcast, inserendo nel terminale:

bash middleman init matcha_nerdz e poi passare alla nostra directory di progetto:

bash cd matcha_nerdz

Ora faremo andare Git:

"bash git init
# => per avviare un nuovo repository Git

git add -all # => aggiunge tutti i file per la gestione temporanea

git commit -m 'Initital commit' # => conferma i cambiamenti "

Successivamente aggiungiamo il modello del blog al mix. Questa è una buona base per il nostro sito di podcast. Successivamente regoleremo gli articoli per visualizzare le tracce audio dei podcast da SoundCloud. Per ora, tuttavia, è solo un blog.

Nel Gemfile aggiungi:

gemma rubino "middleman-blog"

Quindi tramite il terminale:

bash bundle # o bundle exec middleman

bash middleman init --template = blog

Questo aggiornerà la cartella "matcha_nerdz". ".Config.rb" e il tuo modello di indice ottiene anche un piccolo aggiornamento. Inoltre, ottieni nuovi modelli per il feed, la pagina dei tag, la pagina del calendario, un articolo di esempio e un nuovo layout. Controlla l'output dal terminale:

bash identico .gitignore update config.rb esiste source create source / 2012-01-01-example-article.html.markdown crea source / calendar.html.erb crea source / feed.xml.builder aggiorna source / index.html.erb crea source / layout.erb crea source / tag.html.erb esiste source / stylesheets esiste source / javascripts esiste source / images

Idiota:

bash git add --all git commit -m 'Aggiunge il modello del blog'

Creare nuovi articoli

Ora puoi creare nuovi articoli tramite la riga di comando:

articolo bash middleman 'Il mio nuovo secondo articolo di fantasia' # => crea fonte / 2015-11-22-my-wonderful-second-article.html.markdown

Questo crea un nuovo articolo di markdown sotto "/ source". Questo non è lo stoccaggio ottimale, ma ci arriveremo. Avvia il server per vedere il tuo primo articolo del blog di esempio:

middleman middleman o server middleman

Riordina le cose

Quindi abbiamo bisogno di avere delle pulizie da fare. Il modello del blog ha creato un nuovo layout sotto "source / layout.erb". Dobbiamo eliminare quello originale in "source / layouts / layout.erb" e spostare quello nuovo lì. Quindi, tramite il terminale:

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

Abbiamo anche bisogno di aggiornare il nuovo "layout.erb" con elementi che sono stati cancellati nel file di layout. Aggiungi il seguente al tuo tag in "source / layouts / layout.erb":

"html

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

Soprattutto, questo assicura che il tuo JS e le risorse di stile siano disponibili.

Idiota

bash git rm source / layout.erb git add --all git commit -m 'Sposta il nuovo layout in / layouts Aggiunge i link delle risorse Rimuove il vecchio layout'

LiveReload

Per rendere le nostre vite un po 'più convenienti aggiungeremo LiveReload al mix. Dobbiamo prendere la gemma e quindi attivarla nel nostro file "config.rb".

Nel nostro file Gem:

gemma di rubino "middleman-livereload"

Nel terminale:

bundh di bash

Quindi in config.rb:

ruby #uncomment activate: livereload

E infine i nostri comandi Git:

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

Con questo attivato, riavvia il server e la pagina si aggiornerà automaticamente ogni volta che cambi il contenuto della pagina, gli stili o il comportamento. Salvavita, fidati di me!

Attenzione! Una parola di cautela: se hai un altro server locale in esecuzione, LiveReload potrebbe non giocare a palla. Dovrai uccidere l'altro server per ora.

Organizzare i messaggi

Quando guardi dove sono archiviati gli articoli in questo momento, ti renderai presto conto che questa organizzazione direttamente in "/ source" diventa noiosa molto rapidamente. Pubblica un paio di articoli e affoghi nei post. Non è necessario essere così disordinati, ma creiamo una directory sotto "/ source" per tutti i nostri post. Sposta i tuoi articoli lì dentro e fai sapere a Middleman dove trovarli.

bash mkdir source / posts mv source / 2012-01-01-example-article.html.markdown sorgente / messaggi / Quindi aggiungiamo "/ posts" come fonte per gli articoli del blog. In config.rb:

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

Quindi i nostri comandi Git:

"bash git rm source / 2012-01-01-example-article.html.markdown # Rimuove il file spostato dal repository

git add -all gco -m 'Aggiunge una nuova cartella per i post e aggiunge la fonte in config.rb "

E questo è tutto. Nulla dovrebbe essere cambiato e dovresti vedere l'articolo di esempio come prima. L'archiviazione dei post, tuttavia, è molto più sana. La cosa interessante è che se crei nuovi articoli tramite la riga di comando, i tuoi nuovi post verranno automaticamente salvati in "/ post":

articolo bash middleman 'Il mio fantastico terzo articolo' # => crea fonte / post / 2015-my-awesome-3rd-article.html.markdown

GitHub Pages Deployment

Per me, spingere i siti statici a GitHub Pages è una soluzione così conveniente che non voglio sottoporvi alla distribuzione tramite Heroku o il servizio S3 di Amazon. Facciamo in modo semplice!

Nel file Gemma:

gemma rubino "middleman-deploy"

Quindi nel terminale:

bundh di bash

Abbiamo bisogno di aggiungere un blocco deploy a "config.rb":

ruby activate: deploy do | deploy | deploy.method =: git deploy.branch = 'gh-pages' deploy.build_before = true end

Affinché GitHub Pages trovi le risorse CSS e JS, è necessario attivare anche quanto segue in config.rb:

ruby configure: build do activate: relativo_assets end

Quindi, creare un repository su GitHub, aggiungere il telecomando e distribuire:

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

middleman deploy "

Boom! Il tuo sito è pubblicato sotto "yourusername.github.io/projectname" e le tue risorse dovrebbero essere eliminate. Adoro questo processo: non potrebbe essere più semplice e facile da usare. Ottimo lavoro GitHub!

bash git add --all gco -m 'Aggiunge l'installazione per l'implementazione di GitHub Pages'

Risorse più intelligenti

Nell'ultimo passaggio prima di entrare nella configurazione di Bourbon, mi piacerebbe sbarazzarmi degli stili che vengono con Middleman e ottimizzare le nostre risorse per ottenere prestazioni migliori nel browser e nella gestione delle risorse e della concatenazione. Vai su "source / stylesheets / all.css" ed elimina il suo contenuto. Mantieni la prima linea:

css @charset "utf-8";

Comandi Git:

bash git add --all git commit -m 'Rimuove gli stili Middleman non necessari'

Quindi vogliamo attivare un paio di opzioni per ottimizzare le prestazioni in "config.rb":

ruby configure: build do activate: asset_hash activate: minify_javascript activate: css activate: gzip end

Quindi, di nuovo, Git comanda:

bash git add --all git commit -m 'Attiva le ottimizzazioni delle prestazioni'

Lascia che ti spieghi rapidamente cosa abbiamo fatto qui:

  • : gzip

Al momento, gzip è il metodo di compressione più popolare ed efficace. Il suo algoritmo di compressione trova stringhe simili all'interno di un file e le comprime. Per HTML, che è pieno di spazio bianco e tag corrispondenti, questo è molto efficace e in genere riduce le dimensioni della risposta HTTP di un enorme 70%. Attivando questo non solo gzips il tuo HTML, ma anche i file CSS e JS. Durante una compilazione, Middleman crea i tuoi file come al solito, ma li duplica anche con una versione ".gz". Quando un browser entra in contatto con i tuoi file, può scegliere se preferisce servire file compressi gzip o regolari. gzipping è supportato pesantemente dai browser web e mobile.

  • : minify_css

Questo processo elimina tutta la spazzatura inutile dai tuoi stili e riduce significativamente le dimensioni del file. In breve, il tuo CSS diventa un grande blob ottimizzato per essere letto da una macchina. Sicuramente non amichevole negli occhi.

  • : minify_javascript

Questo è lo stesso di minify_css, ma un po 'più coinvolto e sofisticato.

  • : asset_hash

Questo attiva l'hashing delle tue risorse. Significa che i nomi dei tuoi asset cambiano e ricevono alcune informazioni aggiuntive (durante il processo di compilazione) che informano i browser se devono ri-scaricare risorse o meno. Ora, il nome di un file dipende dal contenuto di quel file. Le risorse tratteggiate vengono memorizzate nella cache dai browser e i tuoi siti vengono renderizzati più velocemente. Un'altra parola per questo è "fingerprinting" perché fornisce una soluzione semplice per informare i browser indipendentemente dal fatto che due versioni di un file siano identiche. La data di implementazione non è importante, ma solo i contenuti. Dai un'occhiata a come appaiono i file degli asset hash:

Screenshots

Questo sembra brutto, ma ora le tue immagini, fogli di stile e file JavaScript ottengono un nome univoco attraverso questo codice "casuale" aggiunto: un hash (unico). Ogni volta che si modifica un asset e si ripassa il processo di costruzione, questo hash cambia, che a sua volta segnala ai browser che quindi, e solo successivamente, devono scaricare nuovamente quel particolare file. Il file è quindi effettivamente scaduto, un processo noto come "busting della cache".

Vale anche la pena ricordare: puoi fare riferimento ai tuoi file allo stesso modo di prima, ma durante la compilazione i riferimenti nel codice HTML vengono aggiornati per utilizzare questi nomi hash. Guarda:

“/Build/index.html(.gz)”:

"html

Titolo del Blog ... "Nella tua cartella" / build ", i file JS e CSS vengono referenziati automaticamente con i nomi degli asset hash. Come risultato di questa attività di hashing, quando passi attraverso pagine diverse nella stessa sessione, o rivisita una pagina in un secondo momento, queste le risorse sono state memorizzate nella cache e non è necessario richiederle di nuovo fino a quando non si cambia qualcosa. Questo processo riduce il numero di richieste da un importo sbalorditivo. Non è fantastico? Tutto ciò con una riga di codice in "config. rb "e alcuni * Sprockets * wizardry Booyakasha! La chiave con tutte queste tecniche di ottimizzazione degli asset è di ridurre al minimo il numero di richieste e la dimensione richiesta dei tuoi file e risorse. Middleman offre grandi prestazioni, subito, con poco lavoro ** Nota: ** GitHub Pages ha tutto gzip e minifigure, ma non fa male assicurarsi che tutto sia a posto, specialmente se in seguito deciderai di ospitare la tua app da qualche altra parte. uno sguardo alla nostra fase attuale. La tua pagina indice dovrebbe guarda ora barebones:! [file] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Impostazione Bourbon Per questo progetto voglio utilizzare tre gemme di Bourbon: + Bourbon + Neat + Bitters Aggiungiamoli al nostro Gemfile e al bundle: "ruby gem 'bourbon' gem 'pulito' gemma 'bitter" Nel terminale: "bash bundle" Bourbon e Neat ora sono a posto ( quasi). Bitters ha bisogno di installare alcune cose prima. Abbiamo bisogno di cambiare nella directory dei fogli di stile e attivare un generatore che collochi un sacco di file Bitters in una cartella "/ base". "Bash cd source / styleheets bitters install" Dai un'occhiata a ciò che abbiamo dopo questo: ** Screenshot ** ! [file] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitter è una sorta di base per i tuoi progetti. Ti dà un paio di disegni sani per elementi dell'interfaccia utente come pulsanti, tipo, moduli, messaggi di errore e così via. Bitters prepara anche un file "grid-settings" per la tua griglia * Neat * che dobbiamo anche impostare decommentando la seguente riga in "source / stylesheets / base / _base.scss": "scss @import" grid-settings " ; "Per completare le nostre impostazioni di Bourbon per ora vorrei aggiungere le seguenti variabili alle nostre impostazioni di griglia. Mettono le basi per dimensionare la nostra griglia e attivare una griglia _visual_ che ci aiuta ad allineare meglio il nostro design. Nella colonna "/source/stylesheets/base/_grid-settings.scss":"scss $: 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; "Il passo finale per farlo è rinominare" /stylesheets/all.css "in" / stylesheets. all.sass "e importa i nostri file Bourbon. ** Nota: ** Da quando siamo passati alla sintassi di Sass indentata, dobbiamo anche eliminare il punto e virgola alla fine della riga '@ charset'. "All.css.scss": "sass @charset" utf-8 "@import" bourbon "@import" base / base "@import" pulito "Importiamo il file di base di Bitter qui subito dopo Bourbon perché abbiamo bisogno di accedere a Neat's file di impostazioni della griglia (che si trova nella cartella "/ base") prima di importare Neat. Git: "bash git add --all git commit -m" Configura Bourbon e attiva le impostazioni della griglia "Diamo un'occhiata! Puoi vedere la griglia visiva rossa e, anche grazie a Bitters, la nostra tipografia è migliorata un po 'oltre le impostazioni predefinite del browser. Guarda uno screenshot:! [File] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normalizza e jQuery Middleman ha un [ Normalizza] (https://necolas.github.io/normalize.css/) file che viene importato in "all.css" per impostazione predefinita. Questa è una richiesta di asset non necessaria che possiamo facilmente eliminare, quindi rinominare "source / stylesheets / normalize.css" in "source / stylesheets / _normalize.css.scss". Ora abbiamo un parziale che dobbiamo importare direttamente in alto dopo '@charset' in "source / stylesheets / all.sass": "css @charset" utf-8 "@import 'normalizza' @import 'bourbon' @ import 'base / base' @import 'pulito' @import 'normalizza "Una cosa da non trascurare è il link per i nostri fogli di stile nel nostro layout. Dal momento che stiamo usando Sass partial che tutti vengono importati in un foglio di stile "globale" finale, non abbiamo più bisogno di un collegamento a normalize.css - un collegamento a all.sass è sufficiente. In "source / layouts / layout.erb": "html <%= stylesheet_link_tag "all" %>