Projekt Erstellen Sie eine komplette Website mit Middleman

Im dritten Teil dieser Serie werden wir uns die Hände schmutzig machen und mit dem Bau einer Site für eine fiktive Podcast-Site beginnen: „Matcha Nerdz“. Wir werden Middleman, Bourbon, Neat und Bitters verwenden. Lass uns gehen!

In diesem Beitrag

  • Roadmap
  • Grundlegendes Blog-Setup
  • LiveReload
  • Beiträge organisieren
  • GitHub Pages-Bereitstellung
  • Smarter Assets
  • Bourbon-Setup
  • Normalisieren und jQuery

Roadmap

Beginnen wir mit einem kleinen Überblick darüber, wohin das führt. In den nächsten paar Artikeln werde ich eine kleine statische Website für einen fiktiven Podcast mit dem Namen "Matcha Nerdz" erstellen - einen Podcast für Menschen, die in alles eintauchen möchten, was mit pulverisiertem grünem Tee zu tun hat. Es wird die folgenden Seiten haben:

  • Eine Seite für jedes Tag
  • Eine Detailseite für jede Episode
  • Eine Indexseite für vorherige Podcasts

Wir werden Middleman verwenden, um die statische Site und die Bourbon-Suite für das gesamte Styling zu generieren. Ich hoffe, dass Sie sich meine vorherigen Tutorials zu Bourbon, Neat und Middleman angesehen haben, bevor Sie an diesem Punkt angekommen sind. Wenn nicht, empfehle ich Ihnen, sie zu lesen und zu lesen, es sei denn, Sie haben schon genug Vertrauen in die Grundlagen.

In Bezug auf das Styling habe ich mich schon seit geraumer Zeit stark auf Bourbon verlassen. Außerdem grabe ich wirklich die eingerückte Sass-Syntax - ich ziehe es weit vor der .scss Syntax. Das .sass Syntax ist das einzige (wahrscheinlich) unbekannte Stück, das ich Neulingen gefallen würde, weil es meiner Meinung nach wirklich wert ist, es kennenzulernen.

Grundlegendes Blog-Setup

Lassen Sie uns eine neue App für unsere Podcast-Site initiieren, indem Sie im Terminal Folgendes eingeben:

bash middleman init matcha_nerdz und dann in unser Projektverzeichnis wechseln:

bash cd matcha_nerdz

Jetzt bringen wir Git zum Laufen:

"bash git init
# => um neues Git Repo zu initiieren

git add -all # => fügt alle Dateien für das Staging hinzu

git commit -m 'Initital Commit' # => Änderungen übernehmen "

Als nächstes fügen wir die Blog-Vorlage zum Mix hinzu. Dies ist eine gute Basis für unsere Podcast-Site. Später werden wir die Artikel anpassen, um Podcast-Audiospuren von SoundCloud anzuzeigen. Im Moment ist es jedoch nur ein Blog.

Im Gemfile hinzufügen:

Rubin Edelstein "Mittler-Blog"

Dann über das Terminal:

Bash Bundle # oder Bundle Exec Zwischenhändler

bash middleman init --template = Blog

Dadurch wird Ihr Ordner "matcha_nerdz" aktualisiert. ".Config.rb" und Ihre Indexvorlage erhalten ebenfalls ein kleines Update. Darüber hinaus erhalten Sie neue Vorlagen für Ihren Feed, die Tags-Seite, die Kalenderseite, einen Beispielartikel und ein neues Layout. Überprüfen Sie die Ausgabe vom Terminal:

bash identisch .gitignore update config.rb vorhanden source create source / 2012-01-01-example-article.html.markdown source / calendar.html.erb erstellen source / feed.xml.builder update source / index.html.erb erstellen create source / layout.erb create source / tag.html.erb vorhanden source / stylesheets vorhanden source / javascripts vorhanden source / images

Git:

bash git add --all git commit -m 'fügt eine Blogvorlage hinzu'

Neue Artikel erstellen

Jetzt können Sie neue Artikel über die Befehlszeile erstellen:

Bash-Mittelsmann-Artikel "Mein neuer, schicker zweiter Artikel" # => create source / 2015-11-22-my-wonderful-second-article.html.markdown

Dadurch wird ein neuer Abschriftenartikel unter "/ source" erstellt. Dies ist nicht optimal für die Lagerung, aber wir werden dorthin gelangen. Starten Sie Ihren Server, um Ihren ersten Blogartikel zu sehen:

bash middleman #oder Zwischenhändler-Server

Dinge aufräumen

Als nächstes müssen wir etwas zu tun haben. Die Blogvorlage erstellte ein neues Layout unter "source / layout.erb". Wir müssen das ursprüngliche in "source / layouts / layout.erb" löschen und das neue dort verschieben. Also über das Terminal:

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

Wir müssen auch das neue "layout.erb" mit Elementen aktualisieren, die in der Layoutdatei gelöscht wurden. Fügen Sie Folgendes zu Ihrem hinzu Tag in "source / layouts / layout.erb":

"html

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

Dies stellt vor allem sicher, dass Ihre JS- und Style-Assets verfügbar sind.

Git

bash git rm source / layout.erb git hinzufügen --all git commit -m 'Verschiebt neues Layout in / layouts. Fügt Asset-Links hinzu.

LiveReload

Um unser Leben ein bisschen bequemer zu machen, fügen wir LiveReload zum Mix hinzu. Wir müssen den Edelstein packen und dann in unserer „config.rb“ -Datei aktivieren.

In unserem Gemfile:

Rubin-Edelstein "Mittler-Leber-Ladung"

Im Terminal:

Bash-Bündel

Dann in config.rb:

ruby #uncomment aktivieren: Leberlast

Und zum Schluss noch unsere Git-Befehle:

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

Wenn diese Option aktiviert ist, starten Sie Ihren Server neu und Ihre Seite wird automatisch aktualisiert, wenn Sie den Inhalt, die Formatvorlagen oder das Verhalten der Seite ändern. Lebensretter, vertrau mir!

Beachtung! Vorsicht: Wenn Sie einen anderen lokalen Server ausführen, spielt LiveReload möglicherweise nicht mit dem Ball. Sie müssen jetzt den anderen Server töten.

Beiträge organisieren

Wenn Sie nachsehen, wo Artikel gerade gespeichert werden, werden Sie schnell feststellen, dass diese Organisation direkt unter "/ source" sehr schnell langweilig wird. Veröffentlichen Sie ein paar Artikel und Sie ertrinken in Beiträgen. Es ist nicht nötig, so chaotisch zu sein. Stattdessen erstellen wir unter "/ source" ein Verzeichnis für alle unsere Beiträge. Bewegen Sie Ihre Artikel und lassen Sie Middleman wissen, wo er sie finden kann.

bash mkdir source / posts mv source / 2012-01-01-example-article.html.markdown source / posts / Dann fügen wir "/ posts" als Quelle für die Blogartikel hinzu. In config.rb:

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

Dann unsere Git-Befehle:

"bash git rm source / 2012-01-01-example-article.html.markdown # Entfernt die verschobene Datei aus dem Repo

git add -all gco -m 'Fügt einen neuen Ordner für Beiträge hinzu und fügt Quelle in config.rb hinzu. "

Und das ist es. Nichts sollte sich geändert haben und Sie sollten den Beispielartikel wie zuvor sehen. Die Lagerung von Posts ist jedoch viel vernünftiger. Cool ist auch, dass wenn Sie neue Artikel über die Befehlszeile erstellen, Ihre neuen Beiträge automatisch in "/ post" gespeichert werden:

bash middleman-artikel 'My awesome 3rd article' # => source / posts / 2015-my-awesome-3rd-article.html.markdown erstellen

GitHub Pages-Bereitstellung

Für mich ist das Übertragen statischer Sites auf GitHub Pages eine so bequeme Lösung, dass ich Sie nicht mit der Bereitstellung über Heroku oder den S3-Service von Amazon beauftragen möchte. Lass es uns einfach halten!

Im Gemfile:

Rubin Edelstein "Mittelsmann-Einsatz"

Dann im Terminal:

Bash-Bündel

Wir müssen einen Implementierungsblock zu "config.rb" hinzufügen:

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

Damit GitHub Pages Ihre CSS- und JS-Assets finden kann, müssen Sie Folgendes in config.rb aktivieren:

ruby configure: build aktiviert: relative_assets end

Dann erstellen Sie ein Repo auf GitHub, fügen Sie das Remote hinzu und stellen Sie Folgendes bereit:

"bash git remote fügt ursprung https://github.com/ihrusername/repositoryname.git hinzu

Zwischenhändler "

Boom! Ihre Site ist live unter "yourusername.github.io/projectname" und Ihre Assets sollten aussortiert werden. Ich liebe diesen Prozess - es könnte nicht einfacher und benutzerfreundlicher sein. Gute Arbeit GitHub!

bash git add --all gco -m 'Fügt Setup für die GitHub Pages-Bereitstellung hinzu'

Smarter Assets

Im letzten Schritt, bevor wir in das Bourbon-Setup einsteigen, möchte ich die Stile loswerden, die mit Middleman geliefert werden, und unsere Assets optimieren, um eine bessere Leistung bei der Minimierung und Verkettung von Browser-Assets zu erreichen. Gehen Sie zu „source / stylesheets / all.css“ und löschen Sie den Inhalt. Behalten Sie einfach die erste Zeile:

css @charset "utf-8";

Git-Befehle:

bash git add --all git commit -m 'Entfernt nicht mehr benötigte Middleman-Stile'

Als Nächstes möchten wir einige Optionen aktivieren, um die Leistung in "config.rb" zu optimieren:

Ruby Configure: Build aktivieren: Asset_hash aktivieren: Minify_javascript aktivieren: css aktivieren: gzip end

Dann wieder Git-Befehle:

bash git add --all git commit -m 'Aktiviert Leistungsoptimierungen'

Lassen Sie mich kurz erklären, was wir hier gemacht haben:

  • : gzip

Im Moment ist gzip die populärste und effektivste Kompressionsmethode. Der Kompressionsalgorithmus findet ähnliche Zeichenfolgen in einer Datei und komprimiert sie. Für HTML, das voller Leerzeichen und übereinstimmenden Tags ist, ist dies sehr effektiv und reduziert die HTTP-Antwortgröße normalerweise um satte 70%. Durch die Aktivierung werden nicht nur HTML, sondern auch CSS- und JS-Dateien geladen. Während eines Builds erstellt Middleman Ihre Dateien wie üblich, dupliziert sie jedoch auch mit einer ".gz" -Version. Wenn ein Browser mit Ihren Dateien in Kontakt kommt, kann er auswählen, ob er komprimierte GZIP-Dateien oder reguläre Dateien bereitstellt. gzipping wird stark von Web- und mobilen Browsern unterstützt.

  • : minify_css

Bei diesem Vorgang werden alle nicht mehr benötigten Junk-Dateien aus Ihren Styles entfernt und deren Dateigröße erheblich reduziert. Kurz gesagt, Ihr CSS wird zu einem großen Blob, der für das Lesen durch eine Maschine optimiert ist. Auf jeden Fall nicht freundlich zu den Augen.

  • : minify_javascript

Das ist das Gleiche wie minify_css, aber ein bisschen mehr und anspruchsvoller.

  • : asset_hash

Dies aktiviert das Hashing Ihrer Assets. Dies bedeutet, dass sich die Dateinamen Ihrer Assets ändern und während des Erstellungsprozesses zusätzliche Informationen erhalten, die den Browser darüber informieren, ob er Assets erneut herunterladen muss oder nicht. Nun hängt der Name einer Datei vom Inhalt dieser Datei ab. Hash-Assets werden von Browsern zwischengespeichert und Ihre Websites werden schneller gerendert. Ein anderes Wort dafür ist "Fingerprinting", da es eine einfache Lösung darstellt, um Browser darüber zu informieren, ob zwei Versionen einer Datei identisch sind. Das Bereitstellungsdatum ist nur für den Inhalt von Belang. Schauen Sie sich unten an, wie die Dateien von Hash-Assets aussehen:

Screenshots

Das sieht unangenehm aus, aber jetzt erhalten Ihre Bilder, Stylesheets und JavaScript-Dateien durch diesen hinzugefügten zufälligen Code einen eindeutigen Namen: einen (eindeutigen) Hash. Jedes Mal, wenn Sie ein Asset ändern und den Erstellungsprozess erneut durchlaufen, ändert sich dieser Hash, der wiederum den Browsern signalisiert, dass sie dann und nur dann diese bestimmte Datei erneut herunterladen müssen. Die Datei ist dann effektiv abgelaufen, ein Vorgang, der als "Cache Busting" bezeichnet wird..

Erwähnenswert: Sie können auf Ihre Dateien genauso verweisen wie zuvor, aber während des Builds werden die Verweise in Ihrem HTML-Code aktualisiert, um diese Hash-Namen zu verwenden. Schau mal:

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

"html

Blog Titel … "In Ihrem" / build "-Ordner werden JS- und CSS-Dateien automatisch mit den Hash-Asset-Namen referenziert. Als Folge dieses Hash-Geschäfts müssen Sie verschiedene Seiten in derselben Sitzung durchgehen oder eine Seite später erneut aufrufen Assets wurden zwischengespeichert und müssen nicht erneut angefordert werden - bis Sie etwas ändern. Durch diesen Prozess wird die Anzahl der Anforderungen um einen erstaunlichen Betrag reduziert. Ist das nicht cool? All dies mit einer Zeile Code in „config. rb ”und einige * Sprockets * -Zauberer. Booyakasha! Der Schlüssel bei all diesen Asset-Optimierungstechniken ist die Minimierung der Anzahl von Anforderungen und der Anforderungsgröße Ihrer Dateien und Assets. Middleman bietet große Leistungssteigerungen, die sofort einsatzbereit sind und wenig Arbeit erfordern ** Hinweis: ** GitHub Pages hat alles aus der Box gezippt und minimiert, aber es tut nicht weh, sicherzustellen, dass alles vorhanden ist - vor allem, wenn Sie sich später dazu entschließen, Ihre App an einem anderen Ort zu hosten einen Blick auf unseren aktuellen Stand. Ihre Indexseite sollte Ich sehe jetzt ziemlich barebones aus:! [file] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990724725.png) ## Bourbon-Setup Für dieses Projekt möchte ich drei verwenden Edelsteine ​​aus Bourbon: + Bourbon + Neat + Bitters Lassen Sie uns sie zu unserem Gemfile hinzufügen und das Bündel hinzufügen: "Ruby-Edelstein" Bourbon-Edelstein "ordentlich" Edelstein-Bitters "Im Terminal:" bash bundle "Bourbon und Neat sind jetzt gut zu gehen ( fast). Bitters muss zuerst ein paar Dinge installieren. Wir müssen in das Stylesheets-Verzeichnis wechseln und einen Generator aktivieren, der eine Reihe von Bitters-Dateien in einem "/ base" -Ordner ablegt. "Bash cd source / styleheets bitters install" Schauen Sie nach, was wir danach haben: ** Screenshot ** ! [Datei] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990749549.png) Bitters ist eine Grundvoraussetzung für Ihre Entwürfe. Sie erhalten ein paar vernünftige Designs für UI-Elemente wie Schaltflächen, Typ, Formulare, Fehlermeldungen usw. Bitters bereitet auch eine "Grid-Settings" -Datei für Ihr * Neat *-Grid vor, die wir auch einrichten müssen, indem Sie die folgende Zeile in "source / stylesheets / base / _base.scss" auskommentieren: "scss @import" grid-settings " ; "Um unsere Bourbon-Einstellungen vorerst abzuschließen, möchte ich die folgenden Variablen zu unseren Rastereinstellungen hinzufügen. Sie bilden die Grundlage für die Bemessung unseres Rasters und aktivieren ein _visuales-Raster, das uns hilft, unser Design besser auszurichten. In "/source/stylesheets/base/_grid-settings.scss":"scss $ column: 90px; $ Rinne: 30px; $ Rasterspalten: 12; $ max-width: 1200px; $ visual-grid: true; $ visual-grid-index: back; $ visual-grid-opacity: 0,15; $ visual-grid-color: red; "Der letzte Schritt für diese Arbeit besteht darin," /stylesheets/all.css "in" / stylesheets "umzubenennen. all.sass ”und importieren Sie unsere Bourbon-Dateien. ** Hinweis: ** Da wir zur eingerückten Sass-Syntax gewechselt haben, müssen Sie auch das Semikolon am Ende der '@charset'-Zeile abbrechen. "All.css.scss": "sass @charset" utf-8 "@import 'bourbon' @import 'base / base' @import 'neat" Wir importieren die Bitters-Basisdatei hier direkt nach Bourbon, da wir auf Neat's zugreifen müssen Grid-Settings-Datei (die sich im Ordner „/ base“ befindet), bevor wir Neat importieren. Git: "bash git add --all git commit -m 'Richtet Bourbon ein und aktiviert die Rastereinstellungen" Schauen wir uns das an! Sie sehen das rote Sichtgitter und dank Bitters hat sich unsere Typografie etwas über die Browser-Vorgaben hinaus verbessert. Schauen Sie sich einen Screenshot an:! [File] (https://cms-assets.tutsplus.com/uploads%2Fusers%2F851%2Fposts%2F25429%2Fimage-1448990771265.png) ## Normalize und jQuery Middleman kommt mit einem [ Normalize] (https://necolas.github.io/normalize.css/), die standardmäßig in "all.css" importiert wird. Dies ist eine nicht mehr benötigte Asset-Anfrage, die wir einfach loswerden können. Benennen Sie daher "source / stylesheets / normalize.css" zuerst in "source / stylesheets / _normalize.css.scss" um. Jetzt haben wir ein Partial, das wir direkt nach '@charset' in 'source / stylesheets / all.sass' importieren müssen: "css @charset" utf-8 "@import 'normalize' @import 'bourbon' @ import 'base / base' @import 'ordentlich' @import 'normalisieren "Eine Sache, die wir nicht übersehen sollten, ist der Link zu unseren Stylesheets in unserem Layout. Da wir Sass-Partials verwenden, die alle in ein finales "globales" Stylesheet importiert werden, benötigen wir keinen Link zu normalize.css mehr - ein Link zu all.sass reicht aus. In "source / layouts / layout.erb": "html <%= stylesheet_link_tag "all" %>