Prosjekt Bygg et komplett nettsted med middleman

I del tre av denne serien skal vi få våre hender skitne og begynne å bygge et nettsted for et fiktivt podcast-nettsted: "Matcha Nerdz". Vi bruker Middleman, Bourbon, Neat and Bitters. La oss gå!

I dette innlegget

  • Veikart
  • Grunnleggende bloggoppsett
  • LiveReload
  • Organiserende innlegg
  • GitHub Pages Deployment
  • Smartere eiendeler
  • Bourbon Setup
  • Normaliser og jQuery

Veikart

La oss starte med et lite heads-up av hvor dette går. I løpet av de neste par artiklene skal jeg bygge et lite statisk nettsted for en fiktiv podcast kalt "Matcha Nerdz" - en podcast for folk som ønsker å dykke inn i alt pulverisert grønn te. Den vil ha følgende sider:

  • En side for hver tag
  • En detaljside for hver episode
  • En indeksside for tidligere podcaster

Vi vil bruke Middleman for å generere det statiske nettstedet og Bourbon-pakken for alle stilene. Jeg håper at du har tatt en titt på mine tidligere veiledninger om Bourbon, Neat og Middleman før du kom til dette punktet. Hvis ikke, anbefaler jeg at du går og leser dem, med mindre du føler deg trygg nok i det grunnleggende allerede.

For alle ting knyttet til styling har jeg lenge vært stolt av Bourbon for en stund. Også, jeg graver virkelig den innrykkede Sass-syntaksen - jeg foretrekker det langt til .SCSS syntaks. De .sass syntaks er den eneste (sannsynligvis) ukjente biten jeg vil gjerne kaste på nybegynnere, fordi jeg føler det er verdt å bli kjent med.

Grunnleggende bloggoppsett

La oss starte en ny app for vårt podcast-nettsted ved å skrive inn i terminalen:

bash middleman init matcha_nerdz og deretter skifte til prosjektkatalogen vår:

bash cd matcha_nerdz

Nå får vi Git å gå:

"bash git init
# => for å starte nye Git repo

git add -all # => legger til alle filene for oppstart

git commit -m 'Initital commit' # => forandrer endringer "

Deretter legger vi til bloggen til mixen. Dette er et godt utgangspunkt for vårt podcast-nettsted. Senere vil vi justere artiklene for å vise podcast lydspor fra SoundCloud. For nå er det imidlertid bare en blogg.

Legg til i Gemfile:

ruby perle "middleman-blog"

Deretter via terminalen:

bashbunt # eller bunt exec mellleman

bash middleman init --template = blog

Dette vil oppdatere mappen "matcha_nerdz". ".Config.rb" og indeksmalen din får også en liten oppdatering. Dessuten får du nye maler for din feed, tags-side, kalenderside, et eksempelartikkel og en ny layout. Kontroller utgangen fra terminalen:

bash identisk .gitignore oppdatering config.rb eksisterer kilde opprette kilde / 2012-01-01-eksempel-artikkel.html.markdown lage kilde / calendar.html.erb lag kilde / feed.xml.builder oppdater kilde / index.html.erb lage kilde / layout.erb lage kilde / tag.html.erb eksisterer kilde / stylesheets eksisterer kilde / javascripts eksisterer kilde / bilder

Git:

bash git add --all git commit -m 'Legger til blogg mal'

Opprette nye artikler

Nå kan du opprette nye artikler via kommandolinjen:

bash middleman artikkel "Min nye fancy andre artikkel" # => lage kilde / 2015-11-22-min-fantastiske-andre artikkel.html.markdown

Dette skaper en ny markdown artikkel under "/ source". Dette er ikke optimal lagringsmessig, men vi kommer dit. Brann opp serveren din for å se ditt første eksempelbloggartikkel:

bash middleman #or middleman server

Rydde opp ting

Neste trenger vi ha litt housekeeping å gjøre. Bloggen malen opprettet et nytt layout under "source / layout.erb". Vi må slette den opprinnelige i "kilde / layouts / layout.erb" og flytte den nye til der. Så, via terminalen:

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

Vi må også oppdatere den nye "layout.erb" med ting som ble slettet i layoutfilen. Legg til følgende i din tag inn "kilde / layouter / layout.erb":

"html

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

Viktigst av alt, dette sørger for at dine JS- og stilaktiver er tilgjengelige.

Git

bash git rm kilde / layout.erb git add --all git commit -m 'Flytter nytt layout inn / layouter Legger til ressurs linker Fjerner gammel layout'

LiveReload

For å gjøre livet enklere, legger vi LiveReload til mixen. Vi må ta tak i perlen og aktivere den i vår "config.rb" -fil.

I vår Gemfile:

rubin perle 'middleman-livereload'

I terminalen:

bash bunt

Deretter i config.rb:

rubin #uncomment aktivere: leverskinn

Og til slutt våre Git-kommandoer:

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

Med dette aktivert, start serveren på nytt og siden oppdateres automatisk når du endrer innhold på siden, stiler eller oppførsel. Livssparer, stol på meg!

Oppmerksomhet! Et forsiktig ord: Hvis du har en annen lokal server som kjører, kan LiveReload ikke spille ball. Du må drepe den andre serveren for nå.

Organiserende innlegg

Når du ser hvor artikler lagres akkurat nå, vil du raskt innse at denne organisasjonen direkte under "/ source" blir kjedelig veldig raskt. Publiser et par artikler, og du vil drukne i innlegg. Det er ikke nødvendig å være så rotete - i stedet la oss lage et dirctory under "/ source" for alle våre innlegg. Flytt artikkelen din (er) der inne og la Middleman vite hvor du skal finne dem.

bash mkdir kilde / innlegg mv kilde / 2012-01-01-eksempel-artikkel.html.markdown kilde / innlegg / Deretter legger vi til "/ innlegg" som kilde til bloggartikler. I config.rb:

ruby blog.sources = "innlegg /: år-: title.html"

Så våre Git kommandoer:

"bash git rm source / 2012-01-01-example-article.html.markdown # Fjerner flyttet fil fra repo

git add -all gco -m 'Legger til ny mappe for innlegg og legger til kilde i config.rb "

Og det er det. Ingenting bør ha endret seg, og du bør se eksemplet artikkelen som før. Lagring av innlegg er imidlertid mye mer sane. Hva er også kult er at hvis du lager nye artikler via kommandolinjen, blir de nye innleggene dine lagret i "/ post" automatisk:

bash middleman artikkelen 'My awesome 3rd article' # => opprett kilde / innlegg / 2015-min-awesome-3rd-article.html.markdown

GitHub Pages Deployment

For meg, å presse statiske steder til GitHub Pages er en så praktisk løsning som jeg ikke vil sette deg gjennom gjennom distribusjon via Heroku eller Amazons S3-tjeneste. La oss holde det enkelt!

I Gemfile:

ruby perle "mellommann-distribuere"

Deretter i terminalen:

bash bunt

Vi må legge til en distribusjonsblokk til "config.rb":

rubin aktivere: deploy do | deploy | deploy.method =: git deploy.branch = 'gh-sider' deploy.build_before = sann ende

For at GitHub Pages skal kunne finne CSS- og JS-aktiver, må du aktivere følgende i config.rb:

ruby configure: build aktivere: relative_assets ende

Deretter lager du en repo på GitHub, legger til fjernkontrollen og distribuerer:

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

mellommann distribuere "

Boom! Nettstedet ditt er under "yourusername.github.io/projectname" og dine eiendeler skal sorteres ut. Jeg elsker denne prosessen, det kunne ikke vært enklere og mer brukervennlig. God jobb GitHub!

bash git add --all gco -m 'Legger til oppsett for GitHub Pages-distribusjon'

Smartere eiendeler

I det siste skrittet før vi kommer inn i Bourbon-oppsettet, vil jeg gjerne bli kvitt stilene som følger med Middleman, og optimalisere våre eiendeler for bedre ytelse i nettleserviringen minifisering og sammenkobling. Gå til "source / stylesheets / all.css" og slett innholdet. Bare hold den første linjen:

css @ charset "utf-8";

Git-kommandoer:

bash git add --all git commit -m 'Fjerner unødvendige Middleman stiler'

Deretter ønsker vi å aktivere et par alternativer for å optimalisere for ytelse i "config.rb":

ruby configure: build aktivere: asset_hash aktivere: minify_javascript aktivere: css aktivere: gzip end

Så igjen, Git kommandoer:

bash git add --all git commit -m 'Aktiverer ytelsesoptimaliseringer'

La meg raskt forklare hva vi gjorde her:

  • : gzip

For øyeblikket er gzip den mest populære og effektive komprimeringsmetoden. Dens komprimeringsalgoritme finner lignende strenger i en fil og komprimerer dem. For HTML, som er fullt av hvitt mellomrom og matchende koder, er dette veldig effektivt og reduserer HTTP-responsstørrelsen med hele 70%. Aktiverer dette ikke bare gzips HTML, men også CSS og JS filer. Under en konstruksjon lager Middleman filene dine som vanlig, men dupliserer dem også med en ".gz" -versjon. Når en nettleser kommer i kontakt med filene dine, kan den velge om det foretrekker å vise gzip-komprimerte filer eller vanlige. gzipping støttes tungt av web- og mobilnettlesere.

  • : minify_css

Denne prosessen striper ut alt unødvendig søppel fra stilene dine og reduserer filstørrelsen betydelig. Kort sagt, din CSS blir en stor blob-optimalisert for å bli lest av en maskin. Definitivt ikke vennlig på øynene.

  • : minify_javascript

Dette er det samme som minify_css, men litt mer involvert og sofistikert.

  • : asset_hash

Dette aktiverer hashing av dine eiendeler. Det betyr at filnavnene dine endres og mottar litt ekstra informasjon (under byggeprosessen) som informerer nettlesere om de trenger å laste ned eiendeler eller ikke. Nå er navnet på en fil avhengig av innholdet i den filen. Hashed-eiendeler blir bufret av nettlesere og nettstedene dine blir gjengitt raskere. Et annet ord for dette er "fingeravtrykk" fordi det gir en enkel løsning for å informere nettlesere om to versjoner av en fil er identiske. Utplasseringsdatoen spiller ingen rolle - bare innholdet. Ta en titt nedenfor for hvordan hashed eiendeler 'filer ser ut:

Skjerm

Dette ser ekkel ut, men bildene dine, stilark og JavaScript-filer får et unikt navn gjennom denne ekstra "tilfeldige" koden: en (unik) hash. Hver gang du bytter en ressurs og går gjennom byggeprosessen igjen, endres denne hasen, som igjen signalerer til nettlesere som da, og bare da, de trenger å laste ned den aktuelle filen. Filen er da utløpt, en prosess kjent som "cache busting".

Også verdt å nevne: Du kan referere til filene dine på samme måte som før, men under byggingen blir referansene i HTML oppdatert for å bruke disse hash-navnene. Ta en titt:

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

"html

bloggtittel ... "I din" / build "-mappe blir JS og CSS-filer referert automatisk til de hevede aktiva navnene. Som et resultat av denne hashing-virksomheten, når du går gjennom forskjellige sider i samme økt, eller besøker en side igjen senere, disse eiendeler er blitt cachet og trenger ikke å bli bedt om igjen - til du endrer noe. Denne prosessen reduserer antall forespørsler med en svimlende mengde. Er det ikke kult? Alt dette med en linje med kode i "config. rb "og noen * Sprockets * wizardry. Booyakasha! Nøkkelen med alle disse ressursoptimaliseringsteknikkene er å minimere antall forespørsler og forespørselsstørrelsen på filene og ressursene dine. Middleman tilbyr gode ytelsesforbedringer, rett ut av boksen, med lite arbeid på slutten. ** Merk: ** GitHub Pages har blitt gzipped og fjernet fra boksen. Men det gjør ikke vondt for å sikre at alt er på plass - spesielt hvis du senere bestemmer deg for å være vert for appen din et annet sted. se på vårt nåværende stadium. Din indeksside skal se ganske barebones nå:! [fil] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Bourbon Setup For dette prosjektet vil jeg bruke tre edelstener fra Bourbon: + Bourbon + Neat + Bitters La oss legge dem til vår Gemfile og bunt: "Ruby gem 'bourbon' perle 'ryddig' perle 'bitters" I terminalen: "bash bundle" Bourbon og Neat er nå gode å gå nesten). Bitter må installere noen ting først. Vi må bytte til stilarkene og aktivere en generator som plasserer en haug med Bitters-filer i en "/ base" -mappe. "Bash cd kilde / styleheets bitters installere" Ta en titt på hva vi har etter dette: ** Skjermbilde ** ! [fil] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitters er noe av en grunnlinje for designene dine. Det gir deg et par sane design for UI-elementer som knapper, type, skjemaer, feilmeldinger og så videre. Bitters forbereder også en "grid-settings" -fil for ditt * Ryddig * grid som vi også må sette opp ved å uncommenting den følgende linjen i "source / stylesheets / base / _base.scss": "scss @ import" ; "For å fullføre Bourbon-innstillingene for nå, vil jeg gjerne legge til følgende variabler i rutenettet-innstillingene. De legger grunnlaget for dimensjonering av rutenettet og aktiverer et _visual_-rutenett som hjelper oss til å tilpasse vårt design bedre. I "/source/stylesheets/base/_grid-settings.scss":"scss $ kolonne: 90px; $ gutter: 30px; $ grid-kolonner: 12; $ maks bredde: 1200px; $ visningsnett: true; $ visuell grid-indeks: tilbake; $ visuell grid-opacity: 0,15; $ visuell-grid-farge: rød; "Det siste trinnet for å gjøre dette arbeidet er å omdøpe" /stylesheets/all.css "til" / stylesheets. all.sass "og importere våre Bourbon-filer. ** Merk: ** Siden vi byttet til Sas-syntaksen, må vi også drepe semikolonet på slutten av @charset-linjen. "All.css.scss": "sass @charset" utf-8 "@import 'bourbon' @import 'base / base' @import 'pent" Vi importerer Bitters basisfil her rett etter Bourbon fordi vi trenger tilgang til Neat's grid-settings file (som er i "/ base" -mappen) før vi importerer Neat. Git: "bash git add --all git commit -m 'Setter opp Bourbon og aktiverer grid innstillinger" La oss ta en titt! Du kan se det røde visuelle nettverket, og også takket være Bitters, har vår typografi forbedret litt utover nettleserens standardinnstillinger. Ta en titt på et skjermbilde:! [Fil] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normaliser og jQuery Middleman kommer med en [ Normaliser] (https://necolas.github.io/normalize.css/) fil som blir importert til "all.css" som standard. Dette er en unødvendig aktiv forespørsel som vi enkelt kan kvitte seg med, så omdøpe "kilde / stylesheets / normalize.css" til "source / stylesheets / _normalize.css.scss" først. Nå har vi en del som vi trenger å importere rett øverst etter '@charset' i "source / stylesheets / all.sass": "css @charset" utf-8 "@import 'normaliser' @import 'bourbon' @ import 'base / base' @import 'ryddig' @import 'normalisere "En ting vi ikke bør overse er linken til stilarkene våre i vårt layout. Siden vi bruker Sass partials som alle blir importert til et endelige, "global" stilark, trenger vi ikke en link til normalize.css lenger - en kobling til all.sass er nok. I "kilde / layouts / layout.erb": "html <%= stylesheet_link_tag "all" %>