Proiect Construiește un site web complet cu Middleman

În partea a treia a acestei serii, vom mânca mâinile și vom începe să construim un site pentru un site fictiv podcast: "Matcha Nerdz". Vom folosi Middleman, Bourbon, Neat și Bitters. Sa mergem!

În această postare

  • Foaia de parcurs
  • Setarea de bază a blogului
  • LiveReload
  • Organizarea posturilor
  • Implementarea paginilor GitHub
  • Mai inteligent
  • Bourbon Setup
  • Normalizeaza si jQuery

Foaia de parcurs

Să începem cu un mic heads-up de unde mergem. În următoarele câteva articole voi construi un mic site static pentru un podcast fictiv numit "Matcha Nerdz" - un podcast pentru persoanele care doresc să se scufunde în toate ceaiul verde pulverizat. Va avea următoarele pagini:

  • O pagină pentru fiecare etichetă
  • O pagină detaliată pentru fiecare episod
  • O pagină de index pentru podcasturile anterioare

Vom folosi Middleman pentru a genera site-ul static și suita Bourbon pentru tot stilul. Sper că ați aruncat o privire la tutorialele mele anterioare despre Bourbon, Neat și Middleman înainte de a ajunge la acest punct. Dacă nu, vă recomand să mergeți și să le citiți, cu excepția cazului în care vă simțiți destul de încrezători în elementele de bază deja.

Pentru toate lucrurile legate de stil, m-am îndreptat foarte mult pe Bourbon de ceva timp. De asemenea, eu chiar săpat sintaxa Sass indentată - eu o prefer cu mult .SCSS sintaxă. .Sass sintaxa este singurul bit (probabil) necunoscut pe care aș vrea să-l arunc la începători, pentru că simt că merită să fiu cunoscut.

Setarea de bază a blogului

Să inițiem o nouă aplicație pentru site-ul nostru podcast, prin intrarea în terminal:

bash intermediar init matcha_nerdz și apoi schimbarea în directorul nostru de proiecte:

bash cd matcha_nerdz

Acum îl vom face pe Git:

"bash git init
# => pentru a iniția un nou Git repo

git add -all # => adaugă toate fișierele pentru stadializare

git commit -m 'Initial commit' # => comite modificări "

Apoi adăugăm șablonul blogului la mix. Aceasta este o bază bună pentru site-ul nostru podcast. Mai târziu, vom regla articolele pentru a afișa piese audio podcast de la SoundCloud. Pentru moment, totuși, este doar un blog.

În Gemfile adăugați:

rubin bijuterie "broker-blog"

Apoi, prin terminal:

bash bundle # sau bundle exec middleman

bash intermediar init --template = blog

Aceasta va actualiza dosarul "matcha_nerdz". ".Config.rb" și șablonul dvs. de index obține o mică actualizare, de asemenea. În plus, veți obține șabloane noi pentru feedul dvs., pagina de etichete, pagina calendarului, un articol exemplu și un aspect nou. Verificați ieșirea de la terminal:

bash identic .gitignore actualizare config.rb există sursă creare sursă / 2012-01-01 -exemplu-article.html.markdown crea sursă / calendar.html.erb crea sursă / feed.xml.builder update source / index.html.erb crea sursa / layout.erb crea sursa / tag.html.erb exista sursa / stiluri exista sursa / javascripts exista sursa / imagini

git:

bash git add - tot git commit -m 'Adaugă șablonul de blog'

Crearea de noi articole

Acum puteți crea articole noi prin linia de comandă:

bash articol intermediar "Noul meu articol al doilea fantezie" # => creare sursă / 2015-11-22-my-minus-second-article.html.markdown

Acest lucru creează un nou articol de marcare sub "/ sursă". Acest lucru nu este optim pentru depozitare, dar vom ajunge acolo. Porniți-vă serverul pentru a vedea primul exemplu de blog articol:

bash intermediar # sau server intermediar

Trezirea lucrurilor sus

În continuare avem nevoie de ceva gospodărie. Șablonul de bloguri a creat un nou aspect în "sursa / layout.erb". Trebuie să ștergeți versiunea originală din "sursa / layouts / layout.erb" și să mutați-o pe cea nouă. Deci, prin terminal:

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

De asemenea, trebuie să actualizăm noul "layout.erb" cu chestii care au fost șterse în fișierul de aspect. Adăugați următoarele la dvs. tag în "sursa / layouts / layout.erb":

„html

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

Cel mai important, acest lucru vă asigură că activele JS și stilul dvs. sunt disponibile.

git

bash git rm sursă / layout.erb git add - tot git commit -m 'Mută noul layout în / layouts Adăugă link-uri de active Îndepărtează layout-ul vechi'

LiveReload

Pentru a ne face viața mult mai convenabilă, vom adăuga LiveReload la mix. Trebuie să luăm bijuteria și apoi să o activăm în fișierul "config.rb".

În Gemfile noastre:

ruby gem "intermediar-livereload"

În terminal:

bash bundle

Apoi, în config.rb:

ruby #uncomment activa: livereload

Și, în sfârșit, comenzile noastre Git:

bash git adăuga -all git comite -m 'Activează LiveReload'

Cu această opțiune activată, reporniți serverul și pagina dvs. se va actualiza automat ori de câte ori modificați conținutul paginii, stilurilor sau comportamentului. Salvatorul vieții, crede-mă!

Atenţie! Un cuvânt de precauție: Dacă aveți un alt server local care rulează, LiveReload nu poate juca mingea. Va trebui să-l omori pe celălalt server de acum.

Organizarea posturilor

Când vă uitați în cazul în care articolele sunt stocate chiar acum, veți realiza rapid că această organizație se află direct în "/ source" devine plictisitoare foarte repede. Publicați câteva articole și veți fi înecate în postări. Nu este nevoie să fie acel dezordonat - în loc să creăm o diratură sub "/ source" pentru toate postările noastre. Mutați-vă articolul (e) acolo și lăsați-l pe Middleman să știe unde să-i găsească.

bash mkdir sursă / posturi mv source / 2012-01-01-example-article.html.markdown source / posts / Apoi adăugăm "/ posts" ca sursă pentru articolele din blog. În config.rb:

ruby blog.sources = "mesaje /: an-: title.html"

Apoi comenzile noastre Git:

"bash git rm source / 2012-01-01-example-article.html.markdown # Îndepărtează fișierul mutat din repo

git add -all gco -m "Adaugă un dosar nou pentru postări și adaugă sursă în config.rb"

Si asta e. Nimic nu ar fi trebuit să se schimbe și ar trebui să vedeți exemplul de articol ca înainte. Stocarea posturilor, cu toate acestea, este mult mai sănătoasă. Ce este de asemenea cool este că, dacă creați articole noi prin linia de comandă, postările dvs. noi vor fi stocate în "/ post" automat:

bash articol intermediar "Articolul meu minunat 3" # => crea sursa / posturi / 2015-my-awesome-3rd-article.html.markdown

Implementarea paginilor GitHub

Pentru mine, împingerea site-urilor statice către paginile GitHub este o soluție atât de convenabilă încât nu vreau să vă pun în aplicare prin intermediul serviciilor Heroku sau Amazon S3. Să o păstrăm simplu!

În Gemfile:

rubin bijuterie "mijlocul-deploy"

Apoi, în terminal:

bash bundle

Trebuie să adăugăm un bloc de implementare la "config.rb":

ruby activa: implementare | implementare | deploy.method =: git deploy.branch = 'gh-pagini' deploy.build_before = sfârșitul adevărat

Pentru ca paginile GitHub să găsească activele dvs. CSS și JS, va trebui să activați și următoarele în config.rb:

ruby configure: construiți nu activați: end relative_sets

Apoi, creați un repo pe GitHub, adăugați telecomanda și implementați:

"bash git adăugați la distanță originea https://github.com/yourusername/repositoryname.git

agentul intermediar desfășoară "

Boom! Site-ul dvs. este live sub "yourusername.github.io/projectname" și activele dvs. ar trebui sortate. Îmi place acest proces - nu ar putea fi mai ușor și mai ușor de utilizat. GitHub!

bash git add - toate gco -m 'Adaugă setări pentru implementarea paginilor GitHub'

Mai inteligent

În ultimul pas înainte de a intra în configurația Bourbon, aș vrea să scap de stilurile care vin împreună cu Middleman și să optimizez activele pentru o performanță mai bună în minificarea și concatenarea activelor browser-ului. Mergeți la "source / stylesheets / all.css" și ștergeți conținutul. Mențineți doar prima linie:

css @ harset "utf-8";

Comenzi Git:

bash git add - tot git commit -m 'Îndepărtează stilurile inconștientului Middleman'

În continuare vrem să activam câteva opțiuni pentru a optimiza performanța în "config.rb":

ruby configure: construi nu activa: activ_hash activa: minify_javascript activa: css activa: gzip end

Apoi, din nou, comenzile Git:

bash git add - tot git commit -m "Activează optimizarea performanțelor"

Permiteți-mi să explic rapid ceea ce am făcut aici:

  • : gzip

În prezent, gzip este metoda cea mai populară și eficientă de compresie. Algoritmul său de comprimare găsește niște șiruri similare într-un fișier și le comprimă. Pentru HTML, care este plin de spațiu alb și etichete de potrivire, acest lucru este foarte eficient și de obicei reduce dimensiunea răspunsului HTTP cu un procent de 70%. Activând acest lucru, nu numai gzip HTML, dar și fișiere CSS și JS. În timpul construirii, Middleman creează fișierele ca de obicei, dar le copiază și cu o versiune ".gz". Când un browser intră în contact cu fișierele dvs., acesta poate alege dacă preferă să servească fișiere comprimate gzip sau cele obișnuite. gzipping este susținut puternic de browserele web și mobile.

  • : minify_css

Acest proces elimină orice junk inutil din stilurile dvs. și reduce semnificativ dimensiunea fișierului. Pe scurt, CSS devine unul mare pentru optimizarea citirii de către o mașină. Cu siguranta nu este prietenos pe ochi.

  • : minify_javascript

Acest lucru este la fel ca minify_css, dar un pic mai implicat și mai sofisticat.

  • : asset_hash

Aceasta activează hash-ul activelor tale. Aceasta înseamnă că numele fișierelor de active se modifică și primesc câteva informații suplimentare (în timpul procesului de construire) care informează browserele dacă au nevoie să reîncarce active sau nu. Acum, numele unui fișier depinde de conținutul acelui fișier. Activele scoase din cache sunt accesate în cache de browsere și site-urile dvs. devin redate mai repede. Un alt cuvânt pentru aceasta este "amprentarea" deoarece oferă o soluție simplă pentru a informa browserele dacă două versiuni ale unui fișier sunt identice sau nu. Data de desfășurare nu contează, ci doar conținutul. Aruncați o privire mai jos în ce mod arată fișierele de materiale:

Imagini

Acest lucru pare a fi urât, dar acum imaginile, foile de stil și fișierele JavaScript obțin un nume unic prin acest cod "aleatoriu" adăugat: hash (unic). De fiecare dată când schimbați un material și treceți prin procesul de construire din nou, acest hash se schimbă, ceea ce semnalează la rândul său browserelor și numai atunci trebuie să re-descarce acel fișier. Fișierul este apoi expirat efectiv, un proces cunoscut sub numele de "busting cache".

De asemenea, merită menționat: puteți să vă referiți la fișierele dvs. la fel ca înainte, dar în timpul construirii referințelor din codul HTML obțineți-vă actualizări pentru a utiliza aceste nume cu șir. Aruncati o privire:

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

„html

Titlu de Blog ... "În folderul" / build ", fișierele JS și CSS se referă automat la numele de elemente de tip hash. Ca urmare a acestei activități de tip hash, atunci când treceți prin diferite pagini în aceeași sesiune sau revizuiți o pagină mai târziu, acestea activele au fost stocate în memoria cache și nu trebuie să fie solicitate din nou - până când schimbați ceva.Acest proces vă reduce numărul de solicitări într-o sumă uimitoare.Nu este așa de rece? Toate acestea cu o singură linie de cod în "config. rb "și unii * sprockets * wizardry.Whoyakasha! Cheia cu toate aceste tehnici de optimizare a activelor este de a minimiza numărul de cereri și mărimea solicitării fișierelor și a activelor dvs. Middleman oferă performanțe extraordinare de performanță, chiar din cutie, cu puțină muncă la sfârșitul dvs. ** Notă: ** Paginile GitHub au fost gsipate și eliminate din cutie, dar nu strică să vă asigurați că totul este în vigoare - mai ales dacă ulterior decideți să vă găzduiți aplicația în altă parte. o privire la stadiul nostru actual arata destul de goale acum:! [file] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Bourbon Setup Pentru acest proiect vreau sa folosesc trei pietre din Bourbon: + Bourbon + Neat + Bitters Să le adăugăm la Gemfile și bundle: "Bublina de bash" Bourbon și Neat sunt acum bune ( aproape). Bitters trebuie să instaleze mai întâi câteva lucruri. Trebuie să ne schimbăm în directorul stil de foi și să acționăm un generator care plasează o grămadă de fișiere Bitters într-un director "/ base". "Bash cd source / styleheets bitters install" Aruncați o privire după ce faceți asta: ** Screenshot ** ! [fișier] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitters este ceva de bază pentru design-urile dvs. Acesta vă oferă câteva modele desăvârșite pentru elementele UI, cum ar fi butoanele, tipurile, formularele, mesajele de eroare și așa mai departe. Bitters pregătește, de asemenea, un fișier "grid-settings" pentru grilă * Neat *, pe care trebuie de asemenea să o setăm prin dezarhivarea următoarei linii în "source / stylesheets / base / _base.scss": " ; "Pentru a finaliza setările Bourbon pentru moment, aș dori să adaug următoarele variabile setărilor noastre de rețea. Acestea pun bazele pentru dimensionarea grilei noastre și activează o rețea _visual_ care ne ajută să ne aliniem mai bine proiectul. În coloana "/source/stylesheets/base/_grid-settings.scss":"scss $: 90px; $ gutter: 30px; $ grid-coloane: 12; $ max-width: 1200px; $ visual-grid: true; $ "Pasul final pentru a face această lucrare este să redenumiți" /stylesheets/all.css "la" / stylesheets ". all.sass "și importați fișierele Bourbon. ** Notă: ** De când am trecut la sintaxa Sass indentată, trebuie să omorâm și punct și virgulă la sfârșitul liniei '@charset'. "All.css.scss": "sass @charset" utf-8 "@import" bourbon'import 'base / base'import' neat "Importați fișierul de bază Bitters aici imediat după Bourbon pentru că avem nevoie de acces la Neat's grid-settings file (care este în folderul "/ base") înainte de a importa Neat. Git: "bash git add - tot git commit -m" Setează Bourbon și activează setările grilei "Să aruncăm o privire! Puteți vedea grila vizuală roșie și, datorită Bitters, tipografia noastră sa îmbunătățit puțin dincolo de valorile implicite ale browserului. Aruncați o privire la o captură de ecran:! [File] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normalize și jQuery Middleman vine cu un [ Normalize] (https://necolas.github.io/normalize.css/) fișier care devine importat în "all.css" în mod implicit. Aceasta este o cerere de active inutile pe care putem să o scăpăm cu ușurință, așa că redenumiți mai întâi "source / stylesheets / normalize.css" la "source / stylesheets / _normalize.css.scss". Acum avem o parțială pe care trebuie să o importim chiar în partea de sus după "@charset" în "source / stylesheets / all.sass": "css @charset" utf-8 "@import 'normalize' @import 'bourbon' @ import 'base / base' @import 'neat' @import 'normalize "Un lucru pe care nu ar trebui să-l ignorăm este legătura pentru foile noastre de stil în aspectul nostru. Din moment ce folosim partiții Sass care se importă într-o foaie de cotituri finală "globală", nu mai avem nevoie de un link către normalize.css - un link către toate. În "sursă / layouts / layout.erb": "html <%= stylesheet_link_tag "all" %>