Projekt Bygg en komplett webbplats med Middleman

I del tre av denna serie kommer vi att få våra händer smutsiga och börja bygga en webbplats för en fiktiv podcasts webbplats: "Matcha Nerdz". Vi använder Middleman, Bourbon, Snygg och Bitter. Nu går vi!

I detta inlägg

  • färdplan
  • Grundläggande blogginställning
  • LiveReload
  • Organisera inlägg
  • GitHub Pages Deployment
  • Smarterare tillgångar
  • Bourbon Setup
  • Normalisera och jQuery

färdplan

Låt oss börja med en liten heads-up av var det här går. Under de kommande par artiklarna ska jag bygga en liten statisk plats för en fiktiv podcast som heter "Matcha Nerdz" - en podcast för människor som vill dyka in i allt pulveriserat grönt te. Den kommer att ha följande sidor:

  • En sida för varje tagg
  • En detaljerad sida för varje avsnitt
  • En indexsida för tidigare podcaster

Vi kommer att använda Middleman för att generera den statiska platsen och Bourbon-sviten för all styling. Jag hoppas att du har tittat på mina tidigare tutorials om Bourbon, Neat och Middleman innan du kom fram till denna punkt. Om inte, rekommenderar jag att du går och läser dem, såvida du inte känner dig tillräckligt säker i grunden redan.

För alla saker som rör styling har jag länge varit starkt beroende av Bourbon. Jag gräver egentligen den indragna Sass-syntaxen - jag föredrar det långt till .SCSS syntax. De .sass syntax är den enda (förmodligen) obekanta biten jag skulle vilja kasta på nybörjare, för jag tycker att det är verkligen värt att lära känna.

Grundläggande blogginställning

Låt oss initiera en ny app för vår podcasts webbplats genom att ange i terminalen:

bash middleman init matcha_nerdz och sedan byta till vår projektkatalog:

bash cd matcha_nerdz

Nu får vi Git att gå:

"bash git init
# => för att initiera nya Git repo

git add -all # => lägger till alla filer för uppspelning

git commit -m 'Initital commit' # => förbinder ändringar "

Nästa lägger vi till bloggmallen i mixen. Detta är en bra grund för vår podcasts webbplats. Senare justerar vi artiklarna för att visa podcasts ljudspår från SoundCloud. För nu är det bara en blogg.

Lägg till i Gemfile:

rubin pärla "mellanhuss blogg"

Då via terminalen:

bashbunt # eller bunt exec mellleman

bash middleman init - template = blog

Detta uppdaterar din "matcha_nerdz" -mapp. ".Config.rb" och din indexmall får en liten uppdatering också. Dessutom får du nya mallar för ditt flöde, etikettsida, kalendersida, en exempelartikel och en ny layout. Kontrollera utgången från terminalen:

bash identiska .gitignore uppdatering config.rb existera källa skapa källa / 2012-01-01-exempel-artikel.html.markdown skapa käll / kalender.html.erb skapa source / feed.xml.builder uppdatering source / index.html.erb skapa källa / layout.erb skapa källa / tag.html.erb finns källa / stylesheets existerar källa / javascripts existerar källa / bilder

Git:

bash git add --all git commit -m 'Lägger till bloggmall'

Skapa nya artiklar

Nu kan du skapa nya artiklar via kommandoraden:

bash intermediary artikel "My new fancy second article" # => skapa källa / 2015-11-22-min-underbara-andra-artikel.html.markdown

Detta skapar en ny markeringsartikel under "/ source". Det här är inte optimalt lagringsvis men vi kommer dit. Avfyra din server för att se din första artikelbloggartikel:

bash mellanhänder # eller mellanhusserver

Förnya saker upp

Nästa behöver vi ha lite hushållning att göra. Bloggmallen skapade en ny layout under "source / layout.erb". Vi måste ta bort den ursprungliga i "source / layouts / layout.erb" och flytta den nya till där. Så, via terminalen:

bash rm källa / layouter / layout.erb mv källa / layout.erb källa / layouter /

Vi behöver också uppdatera den nya "layout.erb" med saker som raderades i layoutfilen. Lägg till följande i din tagga i "källa / layouter / layout.erb":

"html

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

Viktigast av allt, detta säkerställer att dina JS- och stiltillgångar är tillgängliga.

Git

bash git rm source / layout.erb git add --all git commit -m 'Flyttar ny layout till / layouter Lägger till tillgångslänkar Tar bort gamla layout'

LiveReload

För att göra våra liv lite mer praktiska lägger vi till LiveReload i mixen. Vi måste ta tag i pärlan och aktivera den i vår "config.rb" -fil.

I vår Gemfile:

rubin pärla "mellanhänder-leverelad"

I terminalen:

bash bunt

Sedan i config.rb:

rubin #uncomment aktivera: leverbelastning

Och äntligen våra Git-kommandon:

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

Med det här aktiverade startar du om servern och din sida uppdateras automatiskt när du ändrar innehåll på sidan, stilar eller beteende. Livsuppehållare, lita på mig!

Uppmärksamhet! Ett försiktighetssvar: Om du har en annan lokal server som körs, kan LiveReload inte spela boll. Du måste döda den andra servern för nu.

Organisera inlägg

När du ser var artiklar lagras just nu kommer du snabbt inse att den här organisationen direkt under "/ source" blir tråkig mycket snabbt. Publicera ett par artiklar och du kommer att drunkna i inlägg. Det finns inget behov av att vara så rörigt - istället låt oss skapa en dirctory under "/ source" för alla våra inlägg. Flytta din artikel (er) där inne och låt Middleman veta var de ska hitta dem.

bash mkdir källa / inlägg mv källa / 2012-01-01-exempel-artikel.html.markdown källa / inlägg / Sedan lägger vi till "/ inlägg" som en källa för bloggartiklarna. I config.rb:

ruby blog.sources = "inlägg /: år-: title.html"

Då våra Git kommandon:

"bash git rm source / 2012-01-01-example-article.html.markdown # Ta bort flyttad fil från repo

git add -all gco -m 'Lägger till ny mapp för inlägg och lägger till källa i config.rb "

Och det är allt. Ingenting borde ha förändrats och du borde se exemplet artikeln som tidigare. Lagring av inlägg är dock mycket mer sane. Vad som också är coolt är att om du skapar nya artiklar via kommandoraden kommer dina nya inlägg att lagras i "/ post" automatiskt:

bash middlemanartikel 'My awesome 3rd article' # => skapa källa / inlägg / 2015-my-awesome-3rd-article.html.markdown

GitHub Pages Deployment

För mig är det en lämplig lösning som jag trycker på statiska webbplatser på GitHub Pages, som jag inte vill ge dig genom att distribuera via Heroku eller Amazons S3-tjänst. Låt oss hålla det enkelt!

I Gemfile:

rubin pärla "mellanspelare"

Då i terminalen:

bash bunt

Vi måste lägga till ett deployeringsblock till "config.rb":

rubin aktivera: deploy do | deploy | deploy.method =: git deploy.branch = 'gh-sidor' deploy.build_before = true end

För att GitHub Pages ska kunna hitta dina CSS- och JS-tillgångar måste vi aktivera följande i config.rb:

ruby configure: build aktivera: relative_assets slut

Skapa sedan en repo på GitHub, lägg till fjärrkontrollen och distribuera:

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

mellanhandsanläggare "

bom! Din webbplats är under "yourusername.github.io/projectname" och dina tillgångar ska sorteras ut. Jag älskar den här processen - det kunde inte vara enklare och mer användarvänligt. Bra jobb GitHub!

bash git add --all gco -m 'Lägger till setup för GitHub Pages-implementering'

Smarterare tillgångar

I det sista steget innan vi går in i Bourbon-uppläggningen, skulle jag vilja bli av med de stilar som följer med Middleman, och optimera våra tillgångar för bättre prestanda i webbläsares tillgångsminskning och sammanlänkning. Gå till "source / stylesheets / all.css" och ta bort innehållet. Håll bara första raden:

css @ charset "utf-8";

Git-kommandon:

bash git add -all git commit -m 'Ta bort unneccessary Middleman styles'

Nästa vill vi aktivera ett par alternativ för att optimera för prestanda i "config.rb":

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

Sedan, igen, Git kommandon:

bash git add --all git commit -m 'Aktiverar prestanda optimeringar'

Låt mig snabbt förklara vad vi gjorde här:

  • : gzip

För närvarande är gzip den mest populära och effektiva komprimeringsmetoden. Dess komprimeringsalgoritm hittar liknande strängar i en fil och komprimerar dem. För HTML, som är fullt av vitt utrymme och matchande taggar, är detta mycket effektivt och minskar HTTP-responsstorleken med en hel del 70%. Aktivera detta inte bara gzips din HTML, men också CSS och JS-filer. Under en byggnad skapar Middleman dina filer som vanligt, men duplicerar dem också med en ".gz" -version. När en webbläsare kommer i kontakt med dina filer kan den välja om det föredrar att använda gzip-komprimerade filer eller vanliga. gzipping stöds kraftigt av web- och mobila webbläsare.

  • : minify_css

Denna process eliminerar all onödig skräppost från dina stilar och minskar deras filstorlek väsentligt. Kort sagt, din CSS blir en stor blob-optimerad för att läsas av en maskin. Definitivt inte vänlig på ögonen.

  • : minify_javascript

Detta är detsamma som minify_css, men lite mer involverad och sofistikerad.

  • : asset_hash

Detta aktiverar hashing av dina tillgångar. Det betyder att dina filnamn för tillgångar ändras och får lite extra information (under byggprocessen) som informerar webbläsare om de behöver ladda ner tillgångar eller inte. Nu är namnet på en fil beroende av innehållet i den filen. Hashed-tillgångar blir cachade av webbläsare och dina webbplatser blir snabbare. Ett annat ord för detta är "fingeravtryck" eftersom det ger en enkel lösning för att informera webbläsare om två versioner av en fil är identiska eller ej. Utvecklingsdatumet spelar ingen roll - bara innehållet. Ta en titt nedan för hur hashed assets 'filer ser ut:

Skärm

Det här ser otäckt ut, men nu får dina bilder, stylesheets och JavaScript-filer ett unikt namn genom den här "slumpmässiga" koden: en (unik) hash. Varje gång du ändrar en tillgång och går igenom byggprocessen igen, ändras denna hash, vilket i sin tur signalerar till webbläsare som då och då bara måste de hämta den aktuella filen igen. Filen upphör då effektivt, en process som kallas "cache busting".

Också värt att nämna: du kan hänvisa till dina filer på samma sätt som tidigare men under byggnaden blir referenserna i din HTML uppdaterad för att använda dessa hashednamn. Ta en titt:

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

"html

Bloggtitel ... "I din" / build "-mapp blir JS- och CSS-filer refererade till de hämtade aktivnamnen automatiskt. Som ett resultat av denna hashing-verksamhet, när du går igenom olika sidor i samma session eller återkommer en sida igen senare, tillgångar har cachats och behöver inte begäras om förrän du ändrar någonting. Den här processen sänker antalet begäranden med en svimlande mängd. Är det inte så coolt? Allt detta med en rad kod i "config. rb "och några * Sprockets * wizardry. Booyakasha! Nyckeln till alla dessa optimeringstekniker är att minimera antalet förfrågningar och begäran om storlek på dina filer och tillgångar. Middleman erbjuder bra prestationsförstärkningar, rätt ut i lådan, med lite arbete på din ände. ** Obs! ** GitHub Pages har någonting gzipped och minifierats ur lådan. Men det gör inte ont för att se till att allt är på plats - speciellt om du senare väljer att vara värd för din app någon annanstans. en titt på vårt nuvarande skede. Din indexsida ska ser ganska barebones nu:! [fil] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Bourbon Setup För det här projektet vill jag använda tre ädelstenar från Bourbon: + Bourbon + Neat + Bitters Låt oss lägga till dem i vår Gemfile och bunt: "Ruby gem" bourbon "pärla" snygg "pärla" bitter "I terminalen:" bash bunt "Bourbon och Neat är nu bra att gå nästan). Bitter måste installera några saker först. Vi behöver byta till stylesheets-katalogen och aktivera en generator som placerar en massa Bitters-filer i en "/ base" -mapp. "Bash cd source / styleheets bitters installera" Ta en titt på vad vi har efter detta: ** Skärmdump ** ! [fil] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitters är något av en baslinje för dina mönster. Det ger dig ett par sana design för UI-element som knappar, typ, formulär, felmeddelanden och så vidare. Bitters förbereder också en "grid-settings" -fil för ditt * Neat * -nät som vi också måste konfigurera genom att inte kommentera följande rad i "source / stylesheets / base / _base.scss": "scss @ import" ; "För att slutföra våra Bourbon-inställningar för nu vill jag lägga till följande variabler i våra nätinställningar. De lägger grunden för att dimensionera vårt nät och aktivera ett _visual_-galler som hjälper oss att bättre anpassa vår design. I "/source/stylesheets/base/_grid-settings.scss":"scss $ kolumn: 90px; $ rännor: 30px; $ grid-kolumner: 12; $ maxbredd: 1200px; $ visuellt rutnät: true; $ visuellt grid-index: back; $ visuellt grid-opacitet: 0,15; $ visuellt grid-färg: röd; "Det sista steget för att göra detta arbete är att byta namn på" /stylesheets/all.css "till" / stylesheets. all.sass "och importera våra Bourbon-filer. ** Obs! ** Eftersom vi bytte till den indragna Sass-syntaxen måste vi också döda semikolon i slutet av "@charset" -raden. "All.css.scss": "sass @charset" utf-8 "@import" bourbon "@ import" bas / bas "@ import" snyggt "Vi importerar Bitters basfil här strax efter Bourbon eftersom vi behöver tillgång till Neats Grid-Settings-filen (som finns i mappen "/ Base") innan vi importerar Pretty. Git: "bash git add --all git commit -m" Ställer upp Bourbon och aktiverar rutnät inställningar "Låt oss ta en titt! Du kan se det röda visuella nätet och, tack vare Bitters, har vår typografi förbättrats lite bortom webbläsarens standardinställningar. Ta en titt på en skärmdump:! [Fil] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normalisera och jQuery Middleman kommer med en [ Normalisera] (https://necolas.github.io/normalize.css/) fil som importeras till "all.css" som standard. Detta är en onödig tillgångsförfrågan som vi enkelt kan bli av med, så byt namn på "source / stylesheets / normalize.css" till "source / stylesheets / _normalize.css.scss" först. Nu har vi en del som vi behöver importera höger högst efter "@charset" i "source / stylesheets / all.sass": "css @charset" utf-8 "@ import" normalisera '@import' bourbon '@ import "bas / bas" @ import "snyggt" @ import "normalisera" En sak som vi inte bör förbise är länken för våra stylesheets i vår layout. Eftersom vi använder Sass partials som alla importeras till ett slutligt "globalt" stilark, behöver vi inte en länk till normalize.css längre-en länk till all.sass är tillräckligt. I "källa / layouter / layout.erb": "html <%= stylesheet_link_tag "all" %>