Ich habe in letzter Zeit so ziemlich alles, was ich mache, mit Sass erstellt. Hier sind ein paar Gedanken zu dieser Reise. Von Hindernissen über Stolpersteine bis hin zu Ablehnung. Von Apps und Teams bis hin zu Workflows und Syntax.
Du musst lokal arbeiten
Der wichtigste Grund, warum ich auf den Zug aufgesprungen bin, war, dass ich meine Angewohnheit, live per FTP zu bearbeiten, aufgegeben habe. Ja, Coda ist großartig, aber es führt zu schlechten Angewohnheiten. Es macht es viel zu einfach, live statt lokal zu arbeiten1.
Lokal zu arbeiten hat offensichtliche Vorteile. Nämlich: 1) Es ist schnell. 2) Du kannst nach Herzenslust Dinge bearbeiten, ohne dir Sorgen zu machen, dass du eine Live-Seite kaputt machst. 3) Es ermöglicht dir, effektiv in einem Team über Versionskontrolle zu arbeiten (dazu später mehr).
Also mach es einfach. Wenn du nur an statischen Seiten arbeitest, kannst du einfach damit anfangen. Arbeite von einem Ordner auf deinem Computer aus. Wenn du an PHP-Seiten arbeitest (z. B. WordPress, Joomla, PHP, Vanilla, CodeIgniter, CakePHP und eine Million weitere), ist die Verwendung von MAMP (mein Screencast) ideal. Natürlich gibt es Varianten von MAMP für alle Plattformen.
Wenn du etwas wie Ruby oder Python verwendest, weißt du wahrscheinlich sowieso, wie man so etwas einrichtet, also bist du auf der sicheren Seite.
Jetzt, da ich hauptsächlich an Projekten arbeite, die auf meinem lokalen Rechner laufen, ist die Verwendung von Präprozessoren einfach. Ich verwende ein paar fantastische Apps, auf die ich später eingehen werde.
Kommandozeile bla bla bla
Ich bin Designer! Ich weiß nicht, wie man die Kommandozeile benutzt, und ich sollte es auch nicht müssen.
Das hört man sehr oft in Bezug auf SASS. Hier ist die Sache: Ich bin ganz bei dir. Ich hasse die Kommandozeile. Du musst sie nicht benutzen. Ich tue es, fast nie, für nichts2.
Andere Ablehnungsgründe
So kindisch das auch erscheinen mag, ein weiterer Grund, warum ich so lange gebraucht habe, um auf den Präprozessor-Zug aufzuspringen, war die Community. Und ich bin nicht allein damit.
Mann, normalerweise atmet man nur über Präprozessoren und CSS, und die LESS/SASS-Leute stürzen sich mit Windhundgeschwindigkeit auf einen.
— Eric A. Meyer (@meyerweb) 26. Januar 2012
Es ist schwer, überhaupt etwas über Präprozessoren zu sagen, geschweige denn etwas vage Negatives, ohne angegriffen zu werden.
Lange Zeit dachte ich: Ich schreibe jeden Tag CSS. Ich kenne CSS ziemlich gut. Mein Workflow ist in Ordnung. Ich bin produktiv. Warum muss sich etwas ändern?
Die wahre Antwort ist, dass sich nichts ändern muss, wenn du es nicht willst. Wenn du mit dem, was du tust, vollkommen zufrieden bist: viel Erfolg.
Ich kann dir sagen, dass ich, nachdem ich den Sprung gewagt habe, tatsächlich produktiver bin. Und ich schreibe besseres CSS. Und die Projekte, an denen ich arbeite, sind dadurch in einem besseren, wartbareren Zustand. Und in manchen Fällen schneller3. Mein Rat ist: Lass dich nicht beirren. Mach einfach dein Ding. Wenn du Zeit hast, probiere es aus. Und probiere es an einem echten Projekt aus. Nur ein bisschen herumprobieren zählt nicht. Du musst es wirklich ausprobieren, um zu sehen, wie es mit deinem Alltag funktionieren könnte.
Die Apps
Ich habe nur Erfahrung mit Mac-Apps. Tut mir leid. Ich bin sicher, es gibt auch gute für andere Plattformen.
Die App, mit der ich all diese Präprozessor-Vorteile kennengelernt habe, war LiveReload (Screencast). Ich bin immer noch ein Fan. Es ist jetzt im App Store für 9,99 $ erhältlich. Es ist eine Menüleisten-App, bei der ein Klick auf das Symbol in der Menüleiste ein Fenster mit Optionen öffnet.

Du sagst LiveReload, dass es einen bestimmten Ordner überwachen soll. Wenn sich eine Datei in diesem Ordner ändert, wird die Vorverarbeitung ausgelöst. Es kann eine ganze Reihe von Präprozessoren verarbeiten. Für CSS: LESS, SASS (mit Compass) oder Stylus. Für JavaScript: CoffeeScript oder IcedCoffeeScript. Für HTML: HAML, Jade, Slim oder Eco.
Nachdem es vorverarbeitet wurde, wird die Seite in dem/den Browser(n) neu geladen, in dem/denen du die Browser-Erweiterungen installiert hast. Wenn du nur CSS geändert hast, fügt es die Stile ohne eine Seitenaktualisierung in die Seite ein. Das ist besonders nützlich, wenn du etwas auf einer Seite in einem bestimmten Zustand gestaltest. Nehmen wir an, ein Klick öffnet ein Dialogfeld, und du versuchst, dieses Dialogfeld zu gestalten. Mit LiveReload kannst du dieses Dialogfeld geöffnet lassen, und die neu eingefügten Stile wirken sich darauf aus, was bedeutet, dass du nicht viel Zeit mit Klicken und erneutem Klicken verschwendest.
Aber ich bin kürzlich zu CodeKit gewechselt. Die Benutzeroberfläche von CodeKit ist schöner, hat mehr Funktionen (z. B. Bildoptimierung, JS-Verkettung) und weniger seltsame Einschränkungen (du wählst, ob Dateien vorverarbeitet werden und wohin sie gehen, im Gegensatz zu LiveReload, wo du sie einmal importierst und sie dann nie wieder kompilieren kannst). Das Einzige, was ich vermisse, ist die Fähigkeit von LiveReload, CSS einzufügen, ohne die Seite neu zu laden, eine nützliche Funktion für Websites mit komplexen Zuständen, die mehrere Schritte erfordern, um die Seite nach einem Neuladen wieder in diesen Zustand zu versetzen. Update April 2012: CodeKit führt jetzt Live-Injektion von CSS durch.
Es gibt jedoch ein paar Dinge, die mir an LiveReload nicht gefallen. Eines ist der Bildschirm, auf dem man die Ausgabepfade für den kompilierten Quellcode festlegt.

Bemerke die ausgegrauten Felder? Es versucht, schlau zu sein und bemerkt, dass du diese Datei anderswo eingefügt hast. Daher wird sie nicht kompiliert. Aber was ist, wenn du sie aus einem anderen Grund kompilieren möchtest? Pech gehabt, keine Möglichkeit, das zu tun. Es ist einfach keine großartige Benutzeroberfläche und der Einstieg kann etwas schwierig sein.
Und hier kommt CodeKit ins Spiel. CodeKit hat eine wunderschöne Benutzeroberfläche.

Es ist sehr einfach, die Dateipfade zu ändern, wohin Dateien kompiliert werden. Und ich musste es nie anlernen, es scheint die Verzeichnisstruktur zu erkennen und auf Anhieb richtig zu verstehen. Es werden auch Dateien ausgegraut, die eingefügt sind, aber du kannst das einfach ein- und ausschalten.
CodeKit ist auf LESS, Sass, Stylus, CoffeeScript und HAML beschränkt. Das fand ich etwas einschränkend, da ich Jade verwendet habe, um HTML in einigen Projekten vorzuverarbeiten. Jade ist in der Lage, HTML-Includes zu verwenden, was enorm nützlich sein kann.
Die Fehlerberichterstattung in CodeKit ist sehr gut. Es ist klar, was los ist, und es fühlt sich gut an, wenn man es behoben hat.

Im Gegensatz dazu schiebt sich bei LiveReload ein kleines Fenster von oben rechts auf deinem Bildschirm herunter, mit schlecht abgeschnittenem Text und ohne Schließen-Button, und schiebt sich einfach wieder weg, sobald du den Fehler behoben hast.
CodeKit kann auch die Stileinfügung, die LiveReload kann, nicht durchführen. So denkt der Entwickler darüber
@chriscoyier Ich bin unschlüssig. Es hat etwas Beruhigendes, EINE Aktualisierung geschehen zu sehen.
— Bryan Jones (@bdkjones) 6. Februar 2012
Update: CodeKit führt jetzt Live-Injektion durch.
Letztendlich denke ich, dass CodeKit im Moment mein Favorit ist. Was es herausstechen lässt, sind all die zusätzlichen Funktionen. Es kann automatisch CSS segnen. Es kann JavaScript verketten und minifizieren. Es kann dir sagen, welche Dateien eine andere bestimmte Datei importieren. Und vielleicht mein Favorit: Es kann Bilder mit einem Klick optimieren.
Teams
Ein weiteres mögliches Hindernis beim Umstieg auf Präprozessoren: die Arbeit im Team. Insbesondere ein Team, in dem mehrere Personen dieselben CSS-Dateien bearbeiten wie du. In diesem Fall müssen all diese Personen mit derselben Präprozessor-App eingerichtet werden, die du verwendest (du könntest verschiedene verwenden, das ist in Ordnung. Am besten, sie verwenden alle dieselben Kernversionen des Präprozessors). Du kannst nicht zulassen, dass einige Leute die .css-Dateien bearbeiten und andere die .scss-Dateien. Diese Änderungen an den .css-Dateien werden einfach überschrieben, wenn jemand das nächste Mal kompiliert und committet. Präprozessoren sind in dieser Hinsicht unerbittlich. Sie sagen nicht: "Hey, es sieht so aus, als ob diese .css-Datei anders ist als beim letzten Kompilieren, möchtest du dir das zuerst ansehen?" Nein, sie schreiben einfach darüber.
Es ist jedoch machbar. Innerhalb kurzer Zeit haben wir Wufoo komplett auf SASS umgestellt. Genauer gesagt, wir haben einen Teil auf LESS umgestellt, dann einen Teil auf Stylus und dann alles auf SASS. Puh. Lob dafür an Kevin. Wir verwenden auch bei allen Neuentwicklungen von SurveyMonkey ein großes Set von Design Patterns, die alle SASS verwenden.
Wenn jemand Teamstrategien für Präprozessoren hat, wäre das wertvoll zu teilen!
Compass
Ich bin mir sicher, dass es Leute gibt, die verärgert sind, weil ich Compass nicht verwende. Ich weiß, ich weiß. Ich sollte es tun. Aber offensichtlich bin ich langsam bei diesen Dingen. Ich möchte Dinge so tief wie möglich verstehen, bevor ich weitermache, und Compass ist mir immer noch ein bisschen zu schick. Wenn jemand keine Ahnung hat, was Compass ist: Es ist ein großes Set von Add-Ons für SASS. Das bedeutet im Wesentlichen, dass du Dinge, die du wahrscheinlich Projekt für Projekt auf die gleiche Weise schreiben müsstest, nicht selbst schreiben musst. CSS3-Mixins, Grid-Helfer, Sprite-Helfer, Dateipfad-Helfer und vieles mehr.
Mein Problem ist, dass ich noch nicht bereit bin, all diese Dinge abzugeben. Ich möchte meine eigenen schreiben. Ich bin mir sicher, der Tag wird kommen, an dem ich das aufgebe, aber er ist noch nicht gekommen.
Kleine Dinge, die mich ins Stolpern gebracht haben
Dieser Artikel begann mit diesem Titel, bevor er sich zu all dem hier ausweitete. Aber was soll's, ich dachte, ich nehme diese kleinen Anekdoten trotzdem mit auf, die mir beim Lernen ein paar Momente der Verzweiflung beschert haben.
Da ich meine eigenen CSS3-Mixins schreibe, habe ich vielleicht ein Mixin für box-shadow wie dieses
@mixin drop-shadow ($x: 1px, $y: 1px, $blur: 2px, $spread: 0, $alpha: 0.25) {
-webkit-box-shadow: $x $y $blur $spread rgba(0, 0, 0, $alpha);
-moz-box-shadow: $x $y $blur $spread rgba(0, 0, 0, $alpha);
box-shadow: $x $y $blur $spread rgba(0, 0, 0, $alpha);
}
Es ist voll von sinnvollen Standardeinstellungen, sodass die Standardverwendung einfach so aussehen kann
.module {
@include drop-shadow();
}
Oder wenn ich spezifischer werden möchte, kann ich jeden Teil angeben
.module {
@include drop-shadow(5px, 5px, 2px, -2px, 0.5);
}
Aber was, wenn ich mehrere box-shadows machen möchte? Dieses Mixin ist dafür nicht bereit. Für diese Fälle bereite ich auch super generische Mixins vor, die den Spezifikationsnamen haben
@mixin box-shadow ($string) {
-webkit-box-shadow: $string;
-moz-box-shadow: $string;
box-shadow: $string;
}
Dieses nimmt nur einen einzigen Parameter, alles, was ich ihm geben möchte. Die Verwendung könnte also so aussehen
/* Bad! doesn't work! */
.stack {
@include box-shadow(
1px 1px 0 rgba(0, 0, 0, 0.100),
3px 3px 0 rgba(255, 255, 255, 1.0),
4px 4px 0 rgba(0, 0, 0, 0.125)
);
}
Aber das funktioniert nicht. All diese Kommas darin verwirren SASS. Es wird denken, dass du versuchst, mehrere Parameter an ein Mixin zu übergeben, das nur für einen eingerichtet ist. Du kannst auch nicht einfach Anführungszeichen um den Wert setzen, den du übergeben möchtest, das funktioniert nicht. Die Antwort ist, die Technik mit den doppelten Klammern zu verwenden
@include box-shadow(( whatever, you, want, just, one, param ));
Eine weitere Sache, die mich durcheinander gebracht hat, war der Versuch, Variablen innerhalb von Werten zu verwenden, wobei die Variable nur ein Teil des Wertes war. Im Grunde sind Variablen super einfach
$red: #F00;
.red {
color: $red;
}
Aber ich habe versucht, dies zu tun
$path: "/images/";
body { /* Bad! No! */
background: url($path + texture.jpg);
}
Damit das funktioniert, musst du die Hash-/Klammer-Methode verwenden
$path: "/images/";
body {
background: url(#{$path}texture.jpg);
}
// or
body {
background: url($path + "texture.jpg");
}
Und noch eine letzte Kleinigkeit, die verwirrend sein könnte. Das Zeichen & hat eine besondere Bedeutung beim Verschachteln. Es entspricht dem Selektor bis zu diesem Punkt. Zum Beispiel
a {
color: red;
&:hover {
color: pink;
}
}
wird zu
a {
color: red;
}
a:hover {
color: pink;
}
Du hast wahrscheinlich schon Beispiele wie dieses gesehen. Bei einfachen Beispielen wie diesem kommt es nicht ganz zur Geltung, aber ob du es glaubst oder nicht, Verschachtelung fühlt sich sehr schnell natürlich an und du wirst es lieben.
Aber zurück zu diesem &-Zeichen.
Du musst nicht dies tun
.module {
& h3 {
}
& p {
}
}
Das ist durch die Verschachtelung impliziert, du brauchst das & dort nicht zu verwenden. Du brauchst es nur, wenn es kein Nachfahren-Selektor (Leerstelle) sein soll. Es kann besonders sexy werden, wenn du das & später im Selektor verwendest. Zum Beispiel, wenn du Modernizr verwendest, um nach mehreren Hintergründen zu suchen
body {
.multiplebgs & {
}
.no-multiplebgs & {
}
}
Das gibt dir eine wirklich saubere Verzweigung, wie du mit der Situation der Unterstützung und Nicht-Unterstützung umgehen möchtest, während der Code logisch innerhalb der body { } Anweisung verschachtelt bleibt.
Dieser verdammte FTP-Workflow
Selbst wenn ich dich davon überzeugt habe, lokal zu arbeiten, Versionskontrolle zu verwenden und Präprozessoren zu nutzen, bleibt immer noch das Problem der Bereitstellung. Dein Workflow könnte tatsächlich einen Schritt zurück in der Effizienz machen, wenn du vom Live-Bearbeiten zum lokalen Arbeiten übergehst, und wenn du live gehen möchtest, musst du geänderte Dateien manuell auf den Server hochladen. Ich fürchte, ich habe keine großartige Antwort für dich.
Nettuts hat es mit „The Perfect Workflow“ behandelt, aber das basiert auf einem GitHub Post-Commit Hook, der eine PHP-Datei trifft, die `git pull`s, was auf keinem Server funktioniert, auf den ich Zugriff habe, und es ist selten, dass ein Shared Host das überhaupt zulässt, wie ich das verstehe.
Hier glänzt App-basiertes Cloud-Hosting wirklich. Apps wie Heroku für Ruby oder PHPFog für PHP fügen sich nahtlos in deinen Git-basierten Versionskontroll-Workflow ein. Du kannst einen Befehl für das Pushen in das Repository und einen weiteren für die Live-Bereitstellung haben, oder du kannst es so einstellen, dass beim Pushen in das Repository automatisch live geschaltet wird.
Diese Cloud-Hosts funktionieren jedoch nicht für jeden. Als ich noch Agenturarbeit geleistet habe, lief die überwiegende Mehrheit auf irgendeinem generischen Shared Hosting. Du könntest immer Git auf diesen Servern installieren, dann, nachdem du Dinge in dein Repository gepusht hast, per SSH auf den Server zugreifen und von dort aus git pullen. Das ist besser, aber immer noch irgendwie umständlich und erfordert die Verwendung der Kommandozeile.
Idealerweise könnten Apps wie Git Tower deine Git Repos verwalten und auch FTP handhaben, indem sie Dateien auf Befehl hochladen, von denen sie wissen, dass sie veraltet sind.
Für diejenigen, die am FTP4-Workflow festhalten und keine Angst vor Kommandozeilen-Kram haben, sieht dieses vielversprechend aus.
Die anderen CSS-Präprozessoren
Wie ich bereits klargestellt habe, habe ich mich vorerst für SASS als meinen CSS-Präprozessor entschieden. Aber was ist mit LESS und Stylus?
LESS war der erste, den ich ausprobiert habe, und ehrlich gesagt mag ich ihn immer noch. Mir gefällt sehr gut, wie alle Klassen, die du schreibst, automatisch als Mixins wiederverwendbar sind. Zum Beispiel
.screen-reader-text {
position: absolute;
top: -9999px;
left: -9999px;
}
label {
.screen-reader-text;
}
Das ist verdammt nützlich und prägnanter als SASS es wäre. Mir wurde jedoch gesagt, dass das Vermischen von Klassen und dem Konzept von Mixins grundlegend fehlerhaft sei. Ich bin mir nicht sicher, warum, aber so ist es nun mal. Wenn jemand das erklären möchte, bin ich gespannt.
Ein großer Ablehnungsgrund, den ich bei LESS hatte, war, dass ich Fehler bekam, nur weil ich die standardmäßige @keyframe Animationssyntax verwendete. Letztendlich musste ich diese Dinge in eine andere Datei auslagern, aber diese Dateien mussten .css sein, um den Fehler nicht auszulösen, und dann konnte ich sie auch nicht @importieren (Inhalt wörtlich einschließen), weil die Dateiendung nicht stimmte. Vielleicht haben sie das behoben, ich bin mir nicht sicher.
Stylus ist auch nett, hauptsächlich wegen seiner Flexibilität. Es wird dich bei weitem nicht so sehr anmeckern wie die anderen. Dinge wie geschweifte Klammern und Semikolons sind optional, nicht zwingend erforderlich. Obwohl Stylus nett und mächtig und robust ist, denke ich letztendlich, dass die Entwicklung dahinter nicht stark genug ist, um mir Vertrauen einzuflößen. Es ist hauptsächlich ein Typ (TJ Holowaychuk).
SASS hat sich letztendlich durchgesetzt, weil es am ausgereiftesten ist, am einfachsten Informationen und Hilfe dazu zu finden sind, die aktivste und robusteste Entwicklung zu haben scheint und die wenigsten Fehler aufweist.
Tutorials hier und abschließende Worte
Nur um es klarzustellen: Ich werde SASS hier nicht in grundlegende CSS-Tutorials aufnehmen. CSS wird sehr wahrscheinlich SASS überleben. Und außerdem denke ich, dass das Verständnis von CSS weitaus wichtiger ist als eine spezifische Präprozessor-Art, Dinge zu tun. Wenn mich ein CSS-Neuling fragen würde, ob er SASS lernen sollte, während er CSS lernt, würde ich wahrscheinlich nein sagen. Lerne, wie CSS funktioniert, und schaue dir dann später an, wie Präprozessoren dir helfen können. Das ist das Gegenteil von dem, was ich über JavaScript und jQuery denke, wo ich finde, dass es in Ordnung ist, zuerst jQuery zu lernen. Komisch.
Im Wesentlichen denke ich, dass du wissen solltest, wie es ist, wirklich gutes CSS zu schreiben. Wie diese endgültige CSS-Datei aussieht. Die Datei, die der Browser liest und verarbeitet, um Websites zu gestalten. Verwende dann einen Präprozessor, um diese endgültige, fabelhafte CSS-Datei einfacher zu schreiben und zu warten.
Der Punkt ist: Schreibe dein Sass/Less so, dass die Ausgabe genau so ist, wie du dein CSS ohne es geschrieben hättest.
— Chris Coyier (@chriscoyier) 2. Februar 2012
1 Ja, es hat Subversion eingebaut, aber es fühlt sich ein bisschen angeflanscht an. Wenn du auf Subversion stehst (und das ist in Ordnung, es ist einfach), denke ich, dass du mit Versions besser dran bist.
2 Abgesehen von solchen Kleinigkeiten oder bei der Arbeit, wo ich lokale Server starten muss, die Python und so etwas ausführen. Aber selbst dann nur widerwillig.
3 Bei Wufoo sind wir vom On-the-fly-Kombinieren und Minifizieren von Skripten mit PHP zum Kombinieren und Minifizieren über Präprozessoren übergegangen, was die Serverlast verringert und zu noch effizienter komprimiertem CSS geführt hat.
4 Mit FTP meine ich offensichtlich SFTP.
Ich bin noch ziemlich neu bei SASS und LiveReload, aber bisher ist mein einziger Kritikpunkt, dass ich das verarbeitete CSS nicht wirklich so anordnen kann, wie ich es gerne hätte. Ich bin ein bisschen OCD, wenn es um die Tabulatorstruktur und das Layout von CSS geht, und das Endergebnis ist nicht wirklich das, wonach ich suche.
Die Datei, die du erstellst, sollte nicht die sein, die du bereitstellst. Das Produktions-CSS sollte verkettet und durch einen Minifier gejagt werden und ziemlich hässlich aussehen.
Währenddessen sind deine ursprünglichen .sass- oder .css-Dateien so formatiert, wie du es magst. Sei stolz auf ihr Layout, aber sei rücksichtslos, wenn es darum geht, hässliche Dateien zu erstellen, die in die Produktion gehen. :)
Zum Beispiel: Hier ist die Haupt-CSS-Datei für diese Website: https://css-tricks.de/wp-content/themes/CSS-Tricks-9/style.css
Danke für die Tipps! Könnt ihr Jungs spezifische Tools empfehlen, um mein CSS zu verketten und zu minifizieren? Google hat mir eine Reihe von Optionen gegeben, aber keine stach wirklich hervor – zumindest aus UI-Sicht.
Josh, du kannst das HTML5 Boilerplate Build Script verwenden, um deine gesamte Website zu minifizieren und zu optimieren.
Aber wenn du nur dein CSS minifizieren möchtest, kannst du den YUI-Kompressor für CSS verwenden: http://developer.yahoo.com/yui/compressor/css.html
PS: H5Bp Build Script verwendet auch den YUI-Kompressor.
Wenn du SASS in Verbindung mit Compass verwendest, hat Compass eine Option, deinen Code beim Verarbeiten zu komprimieren. Sehr praktisch.
Tolles Review! Ich bin neu in der CSS-Vorverarbeitung, aber ich bevorzuge an manchen Stellen immer noch den „Oldskool-Weg“ (für kleine Demos usw.).
Außerdem muss ich darauf hinweisen, dass dir hier „Closure Stylesheets
“ fehlt (wird auch von Google verwendet). Es macht fast dasselbe wie LESS/SASS, aber mit der Hinzufügung einiger anderer Funktionen.
„Der Punkt ist: Schreibe dein Sass/Less so, dass die Ausgabe genau so ist, wie du dein CSS ohne es geschrieben hättest.“
CSS-Präprozessoren helfen sicherlich, CSS wartbarer zu machen. Der Hauptgrund dafür ist nicht die Großartigkeit der Ausgabe, die sie erzeugen, sondern die Tools (Mixins, Variablen), die sie bieten. Wenn ich mit einem großen Projekt zu tun habe und die LESS/SASS-Funktionen nicht verwenden kann, würde ich lieber versuchen, einen ähnlichen Effekt mit anderen Techniken (wie oocss) zu erzielen, was die Ausgabe letztendlich anders aussehen lassen würde. Der Punkt, den ich machen möchte, ist, dass das Schreiben deines CSS auf die Art und Weise, wie LESS/SASS es tun würde, es nicht besser macht.
Toller Artikel. Ich fange gerade erst mit der Vorverarbeitung von CSS an, daher ist es schön, deine Erfahrungen zu hören.
Wenn man so lange auf die Standardweise CSS codiert hat, ist es schwierig, sich zu ändern. Das hat mich jedoch ermutigt – zu hören, dass du produktiver bist.
Und zum FTP-Punkt – wenn du im 21. Jahrhundert immer noch FTP für die Bereitstellung von Live-Sites verwendest, machst du vielleicht etwas falsch.
Inwiefern? Ich persönlich kann nicht darauf verzichten, auf dem FTP zu arbeiten. Ich habe fast alles ausprobiert. Wie würdest du Änderungen an einer CMS-Website in Bezug auf PHP-Code, JS-Code und CSS-Code vornehmen? Wie sieht dein Arbeitsprozess aus?
Ich suche nach einer Lösung, die es mir ermöglicht, von mehreren Standorten aus am selben per FTP verbundenen Projekt zu arbeiten. Irgendwelche Ideen?
Danke
Wenn du Shell-Zugriff auf einen Server hast, kannst du Folgendes tun:
1) Wirf deine Website auf Github, sodass jeder Computer Zugriff darauf hat.
2) Lege den Ordner deiner Websites (der ein Git-Repo
git initist) so fest, dass er auf dasselbe Remote-Repo verweist, mit dem du lokal entwickelst.3) Pushe Änderungen von deinem lokalen Rechner oder von überall sonst, wo eine Kopie des Repositorys vorhanden ist, in das Remote Github Repo.
4) Hole diese Änderungen auf deinen Server mit
git pull.Fertig.
Bitte erkläre einige konstruktive Alternativen. Ich habe so viele Kunden, die auf Shared-Servern (nur FTP) sind... Ich sehe keinen anderen Weg. Selbst wenn sie SFTP hätten, würden sie mich immer noch nicht Git installieren lassen. Das Wichtigste, was mich bei einigen Projekten zurückhält, ist auch die einfache Bereitstellung.
Wirklich toller Artikel Chris. Vielen Dank für deine Sichtweise. Es ist auch toll, Paul Irish hier zu sehen. Lese seine Arbeit auch zu Chrome Dev tools weiter, absolut hochwertige Sachen Jungs, danke.
Ich stimme Jason zu
Kleine Kunden haben kein Git auf ihrem Server oder der Host unterstützt es nicht. Wenn du keinen Kunden hast, der einen eigenen dedizierten Server hat, ist es schwierig, einen Weg zu finden, nicht auf dem FTP zu codieren.
Ich schlage vor, sich Beanstalkapp.com anzusehen. Wir verwenden es für die meisten Website-Projekte. Es ist im Grunde ein gehosteter Git/Svn-Dienst, ähnlich wie Github, aber mit automatischen Bereitstellungen über S/FTP.
Ich verwende Sass jetzt schon eine Weile, nachdem ich viele Jahre lang CSS geschrieben habe, und ich muss sagen, dass ich fast jedem Punkt zustimme. Ich kann nichts über die kleinen App-Tools sagen, da ich die Kommandozeile mag. Der wichtigste Teil ist, dass Entwickler zuerst CSS verstehen müssen und dann genau verstehen, was die Präprozessoren tun und wie sie es tun.
Kennt jemand anständige Apps für den PC? Ich bin kein Mac-Typ.
Verwende LiveReload für Windows (XP+) oder Linux
Scout ist eine weitere plattformübergreifende App: http://mhs.github.com/scout-app/
Probiere Simpless aus, ein nettes Tool, aber ich glaube, es ist nur für LESS-Stylesheets.
http://wearekiss.com/simpless
Hast du jemals CSS Crush ausprobiert? Es hat eine etwas andere Herangehensweise an die Vorverarbeitung, allerdings nur PHP.
Das wollte ich auch fragen. Ich habe das Projekt verfolgt, aber noch nicht ausprobiert.
Ihr Ansatz fasziniert mich wirklich. Du schreibst native CSS-Dateien, was cool ist, und der Entwickler versucht wirklich, seine Syntax so nah wie möglich an offizielle Vorschläge zu halten, wo anwendbar (d. h. das :any Pseudo). Ich denke, es ist ein großartiges Mittelding zwischen reinem CSS und LESS/SASS. Wenn du CSS lernst oder ein neues Teammitglied einführst, sieht das CSS nicht so fremd aus, während es immer noch viele Vorteile eines Präprozessors bietet.
Mir gefällt auch, dass es PHP-basiert ist und serverseitig on the fly kombiniert, verarbeitet und cached.
Allerdings hat mich davon abgehalten, einzusteigen, dass 1 oder 2 Dinge, die ich wirklich in einem Präprozessor haben möchte, aufgrund seines Ansatzes der "Reinheit der Syntax" fehlen. Ich kann auf Mixins verzichten (obwohl Aliase im Grunde dasselbe können), aber ich hätte wirklich gerne verschachtelte Selektoren, an allererster Stelle (:any scheint nicht ganz dieselben Vorteile zu bieten).
Unabhängig davon ist dies wahrscheinlich derjenige, den ich irgendwann zuerst ausprobieren werde.
Was hältst du davon?
Ich höre immer wieder von SASS und LESS, habe es aber geschafft, sie für meinen klobigen BBEdit-Ansatz zu vermeiden, obwohl ich etwas neugierig bin, die Vorverarbeitung bei einem aktuellen Projekt auszuprobieren.
Aus einem Grund wird es wahrscheinlich nicht SASS sein. Ich finde ihr Logo der „heißen Sekretärin am Telefon“ und den Slogan „style with attitude“ langweilig sexistisch und abstoßend. Es ist eine Kleinigkeit, nur ein Logo und ein Slogan, aber es war das erste, was ich sah, aber es gibt sowieso schon viel zu viel Sexismus in der Technik.
Zu einem völlig anderen Thema: Wenn du einen Mac hast, ist es nicht weit hergeholt, MAMP wegzulassen. OSX hat bereits Apache installiert, MySQL kann mit einem Paket installiert werden und Sequel Pro ist ein feiner Ersatz für phpMyAdmin – selbst das Upgrade von PHP ist nicht allzu traumatisch, und für diejenigen, die keine Kommandozeile wollen, macht VirtualHostX oder Ähnliches das Einrichten mehrerer Domains peinlich einfach.
lol, hast du jemals einen winzigen, 3-Absatz-Kommentar im Internet gelesen und sofort gemerkt, dass du dein ganzes Leben verbringen könntest, ohne diese Person im wirklichen Leben zu treffen. Wenn du ein möglicherweise großartiges Produkt/Dienstleistung/Tool ablehnst, weil dir das Logo nicht gefällt, wette ich, dass du im wirklichen Leben nicht sehr lustig bist.
@tommy, hast du jemals diese Ein-Absatz-Kommentare gelesen, die nichts Konstruktives zur Konversation beitragen, sondern nur jemanden herabwürdigen, der tatsächlich eine Meinung hat? Das ist eine Verschwendung kostbarer Elektronen.
Nur ein Hinweis zu „Du musst lokal arbeiten“.
50 % der Zeit arbeite ich auf Remote-Servern, aber ich kann LESS trotzdem kompilieren (ich weiß, dieser Artikel handelt von Sass, aber die Theorie sollte dieselbe sein), während ich daran arbeite. Ich habe auf meinem Mac ein Volume mit Macfuse/Macfusion eingerichtet, aber du kannst es auch mit der neuesten Version von Transmit tun. Es ist, als würdest du lokal auf deinem Computer mit der Site arbeiten, nur dass sie remote ist.
Ich habe also ein Remote-Laufwerk auf meinem Mac gemountet, dessen Ordner überwacht werden, als ob sie lokal wären; so werden alle Änderungen erfasst und verarbeitet.
Nun, ich muss den Artikel zu Ende lesen! :)
Ich fange auch gerade erst mit SASS an, toller Artikel.
Es wäre cool, wenn jemand ein Tutorial nur darüber machen würde, wie man eine Workstation ausrüstet und wie man seine erste Datei erstellt. Ich bin etwas überfordert damit, Ruby, Git, Kommandozeile auf einmal zu lernen.
Leider arbeite ich beruflich in einer Windows-Umgebung. CodeKit sieht fantastisch aus, ich verwende jedoch Aptana.
Gibt es eine Option ohne Rudy ODER Python????
Wenn du die Augenbrauen hochziehst und scheinheilige Kommentare von dir gibst, wenn jemand im 21. Jahrhundert FTP zum Bearbeiten einer Website verwendet, machst du vielleicht etwas falsch? Sei nicht dieser Typ.
Erkläre, erläutere und bilde bitte weiter! Das klingt nach einem interessanten Punkt/einer interessanten Technik, von der jemand vielleicht noch nichts gehört hat?
[...genau wie du nichts davon gehört hattest... bis du es irgendwo gelesen hast oder dir eine großzügige Seele es erklärt hat?]
Ich bin froh, dass du das Thema Bereitstellung angesprochen hast. Meiner Meinung nach ist die Bereitstellung von WordPress-Sites, die versionskontrolliert sind, viel zu komplex.
Es gibt ein paar Tutorials, wenn du abenteuerlustig bist
http://theme.fm/2011/08/tutorial-deploying-wordpress-with-capistrano-2082/
http://markjaquith.wordpress.com/2011/06/24/wordpress-local-dev-tips/
http://devpress.com/blog/a-really-sweet-wordpress-development-environment/
Ich habe es fast geschafft, es für eine Website zum Laufen zu bringen, aber es hat so lange gedauert, dass es sich so teuer anfühlt, es für jede Kundenwebsite einzurichten, die auf einem Shared Host liegt. Ich habe es auf Hostgator mit Hilfe des hilfsbereiten Support-Teams gemacht.
Du hast Beanstalk nicht erwähnt, das könnte eine gute Alternative für einfachere Bereitstellungen sein: http://beanstalkapp.com
Für diejenigen, die über Vorverarbeitung nachdenken: Schaut euch das DevTools Autosave Plugin für Chrome an, das CSS automatisch in eure Dateien zurückschreibt, während ihr es im Web Inspector bearbeitet. Das ist eine sehr schnelle Arbeitsweise.
Das kann man nicht tun, wenn eine Präprozessor-Abstraktionsschicht im Weg ist.
Chris,
LESS
SASS
W00t Methemer – das war GENAU mein Gedanke zu wiederverwendbaren Klassennamen, besonders weil ich mich gerade erst mit dem @extend-Feature von SASS vertraut gemacht habe.
Nur zur Information – jeder sollte sich @extend ein zweites Mal ansehen. Schnell zu den Googlies für einige Erklärungen ->
Sass Extend Introduction.
Fühlt euch frei, den Less vs. Sass Quatsch in diesem Beitrag zu überspringen, aber ein großartiger Überblick über @extend
@extend your Sass off
Das sollte reichen, um den Appetit anzuregen. :)
-Adc
Dies ist immer noch eine wirklich fehlerhafte Vorgehensweise. Du wirst CSS-Ausgaben wie diese erhalten
Was eindeutig schlechter Code ist.
Zur Kommandozeile: Ich verwende die Kommandozeile ständig für verschiedene Dinge, aber ich mag es immer noch nicht, sie zum „Kompilieren“ von CSS/JS zu verwenden. Man muss im Allgemeinen hässliche, schwer zu merkende Syntax verwenden, anstatt dass ein einfacher „Rechtsklick > [some app]“ oder die Integration in meinen Texteditor besser wäre. SimpLESS ist allerdings ziemlich gut, ich verwende es für mein reines CSS.
@Scott –
Im Gegensatz zu Mixins wird @extend den Selektor tatsächlich mit Kommas vom ursprünglichen Selektor trennen. Das kann jedoch neue Probleme verursachen, wenn die Kette zu lang wird – aber das scheint kein häufiges Problem zu sein.
Ich liebe SASS, aber das ist eines der Features, von denen ich mich fernhalte, nur weil es zu einem etwas eng gekoppelten Code führt...
Was, wenn jemand anderes später kommt und dem screen-reader-text class Regeln hinzufügt, ohne zu wissen, dass es anderswo als @extend verwendet wird.
Zumindest bei Mixins weiß man, dass es ein wiederverwendbarer Codeblock ist..... Bei der Verwendung von Klassen mit @extend, nicht so sehr.....
Übrigens toller Artikel, Chris...
@Scott –
Dieses Problem lässt sich leicht lösen, indem man
screen-reader-textzu einem Mixin ohne Argumente macht (füge einfach Klammern hinzu)Indem du
screen-reader-textauf diese Weise definierst, wird es nur im Stylesheet angezeigt, wenn du es verwendest (oder gar nicht, wenn du es nicht tust).Ich wollte schon immer ein CSS-Framework verwenden, hatte aber Angst, dass es mich mit der kürzlich gelernten jQuery-Syntax verwechseln würde. Cris, deine Beiträge zwingen mich immer dazu, etwas Neues zu lernen. Ich habe jQuery nur durch deine Screencasts gelernt :)
Du solltest einen Obernerd bitten, ein Makefile für deine Projekte zu schreiben.
Unsere Frontend-Entwickler tippen einfach „make static“ oder „make static-auto“ in ein Terminal (es ist nicht beängstigend, versprochen), um das gesamte CSS und JavaScript zu kompilieren. Die Auto-Option startet einen Watcher, der kompiliert, sobald eine Datei geändert wurde.
Du musst deine CSS-Dateien nicht (und solltest es wahrscheinlich nicht) in deinem Repository aufbewahren, du führst einfach den Befehl aus, um den Code entweder vor oder nachdem du ihn auf den Server legst, zu kompilieren und zu minifizieren. Es könnte so einfach sein wie ein „make static-minified“ Befehl.
@Chris Coyier – bezüglich Teamstrategien
Ich bin vor einigen Tagen auf SASS umgestiegen und bin wirklich beeindruckt – es gefällt mir. Da ich so etwas wie ein Workflow-Perfektionist bin und vorsichtig bin, wenn ich neue Komplexitätsebenen einführe, habe ich die Wochen und Monate zuvor mögliche Workflow-Bremser und einige andere Dinge untersucht.
Insbesondere, was bei der Verwendung von Funktionen wie @include und @extend in Bezug auf eine bestimmte erwartete Ausgabe nach dem Kompilierschritt zu beachten ist.
z.B. @extend hat mich auf das Problem aufmerksam gemacht, das du bereits erwähnt hast. Solange du nur lokal arbeitest, ist alles einfach. Wenn du in einem (Frontend-)Team arbeitest, nicht unbedingt an denselben .scss-Dateien, sondern an verschiedenen Modulen usw., aber nur an einem Entwicklungsserver, bekommst du ein Problem.
Jedes Mal, wenn ein Entwickler seine kompilierte .css hochlädt, werden die Änderungen der anderen Jungs überschrieben. Versionskontrolle hilft in dieser Sache nicht.
Um das Beste aus beiden Welten zu erhalten, a) die Unabhängigkeit einzelner .css-Dateien pro Modul bei der Arbeit im Team – und b) die bessere Wartbarkeit (z. B. Variablen, die als Konstanten für Farben, Schriftarten usw. verwendet werden) und all die anderen Dinge, die SASS bietet, haben wir beschlossen, dass die einzig bequeme und vielversprechendste Lösung wäre, ruby + einen watchfolder-Setup nicht nur lokal, sondern auch auf dem Entwicklungsserver zu haben.
Anstatt kompilierte .css-Dateien hochzuladen, laden wir einfach unsere .scss-Dateien hoch und die Kompilierung erfolgt jetzt serverseitig. So kann jeder Entwickler seine Änderungen sehen und stört die Änderungen / Updates der anderen nicht.
Vielleicht ist dieser Workflow für die meisten offensichtlich, aber vielleicht hilft er einigen von euch.
Das ähnelt sehr unserem Workflow. Wir verwenden SASS/Compass mit Git, und wir haben alle .css-Dateien von Git ignoriert, sodass nur die .scss-Dateien in der Versionskontrolle gespeichert werden (schließlich werden die .scss-Dateien zu deinen kritischen Quelldateien, wenn du zu SASS wechselst).
Dadurch wird das Problem von Konflikten beim Committen von .css-Dateien in einem SASS-Projekt umgangen, ein Problem, das besonders unangenehm wird, wenn du die Debug-Ausgabe in deiner SASS-Konfiguration aktiviert hast.
Und Chris, dein ganzes Ding, dass du mit deinem box-shadow Mixin gestolpert bist und es an Flexibilität für mehrere Schatten mangelt... dafür ist Compass da. Mach den Sprung! Wie bei SASS musst du nicht mehr davon verwenden, als dir angenehm ist.
Ich bin mir nicht sicher bei SASS, aber LESS erlaubt es dir, dasselbe Mixin mit einer unterschiedlichen Anzahl von Parametern zu definieren, sodass du Folgendes tun kannst:
Dann kannst du das Mixin einfach mit einem oder vier Parametern aufrufen und es wählt das passende aus. Das könnte eine Lösung für dein .dropshadow-Problem sein, obwohl du immer noch .mixins für alle verschiedenen Optionen bereitstellen musst, die du verwenden möchtest.
Ich verwende SASS seit etwa 4 Monaten in einer Produktionsumgebung und habe festgestellt, dass es eine unglaubliche Zeitersparnis ist. Es hat mich auch dazu gebracht, mehr über OOCSS und SMACSS zu lernen und lässt mich insgesamt besseres CSS schreiben wollen. Mixins sind unverzichtbar.
Fast alle „kleinen Dinge, die dich ins Stolpern gebracht haben“ wurden durch Compass gelöst. Ich empfehle dir dringend, die Dokumentation durchzugehen und loszulegen. Chris' Lösungen für viele der css3 Mixins, Browser-Fixes (inline-block, floats) sind clever und nützlich, und ich verlasse mich auf sie. Probier es aus!
Das Team-Workflow-Problem war für mich ein Hindernis, um mit SASS voranzukommen. Ich mag jedoch, was es kann.
Generell bevorzuge ich keine Präprozessoren, insbesondere haml & coffeeScript, weil sie die Sprache so sehr verstecken. Aber SASS fühlt sich etwas anders an, da du die Funktionalität in CSS nur erweiterst.
Ich bin immer vorsichtig bei „Zeug, das das Zeug produziert, das du willst“ (Codegenerierung), weil sie in der Vergangenheit immer zu schlechten Dingen geführt haben und du der Gnade eines Skripts ausgeliefert bist, das deinen Code für dich schreibt. Scheint fast Dreamweaver-esk zu sein.
Hallo!
Nun, ich stimme zu, dass die Verwendung von Präprozessoren *eine große Zeitersparnis* sein kann, und Mixins und dergleichen haben ihre Momente, ABER sie sind weit davon entfernt, im großen Maßstab produktionsreif zu sein.
Erstens, sobald sie aufgetaucht sind, ist die Szene bereits fragmentiert geworden
SASS, LESS, Stylus, COMPASS, WTF?!, um nur die prominentesten zu nennen...
(CSS ist erfolgreich geworden, weil es ein Standard ist, auf den sich alle geeinigt haben.)
Und hier ist, wie sie alle in einer Produktionsumgebung scheitern werden:
In jedem Projekt wird immer der Moment kommen, in dem ein Hotfix durchgeführt werden muss, und zwar *jetzt*, und der verantwortliche Entwickler ist nicht erreichbar, also wird jemand anderes ein bisschen Code direkt in das CSS hacken, weil das die Datei ist, die er beim Inspizieren des Codes gesehen hat...
es sei denn, es gibt eine vollständige Dokumentation darüber, wie man seine Korrekturen einreicht (und die Person weiß rechtzeitig von dieser Doku).
Wenn es eine regelmäßige Überarbeitung gibt, könnten diese Hotfixes von den kompilierten SASS-Dateien überschrieben werden usw. usw.
Nun, was mich zu dem Punkt bringt, Präprozessoren in Teams zu verwenden.
Jeder Beteiligte muss sich auf die Verwendung dieser bestimmten Technologie festlegen und wissen, wie man sie in vollem Umfang nutzt. Hast du jemals versucht, das in einem verteilten Team zu tun? Nein? Ok, viel Spaß.
In verteilten Teams ist die oben beschriebene Situation weitaus wahrscheinlicher, wie ich sagen kann.
Ich selbst bewältige die Situation, indem ich Zen Coding [http://code.google.com/p/zen-coding/] verwende und immer noch normale CSS-Dateien einreiche.
Auf dem Weg zur Perfektion,
mtness.
Dieses ganze Argument basiert auf falschen Annahmen. Sass und LESS sind nicht nur „produktionsreif im großen Maßstab“, sie sind „bereits in Produktion im großen Maßstab“. Schau dir die Liste der Websites/Unternehmen an, die Sass mit Compass auf der Compass-Homepage verwenden, für eine kleine Auswahl http://compass-style.org/ Es gibt auch einen kleinen Dienst namens Twitter, der LESS verwendet
Hast du WebPutty.net in Betracht gezogen/ausprobiert? Es ist keineswegs perfekt, aber ich denke, es erfüllt viele deiner Lieblingsfunktionen dieser anderen Tools (und möglicherweise einige andere, die nicht erwähnt wurden)...
– es ist browserbasiert (IE8+, Chrome, FF)
– beinhaltet Hosting, wenn du es möchtest (unterstützt von Google Cloud Storage)
– du erhältst ein Live-Vorschaufenster, das Stile einfügt, während du dein Stylesheet änderst (genau wie LiveReload)
– bietet einen Syntax-Highlighting-Editor mit Auto-Vervollständigung
– SASS-Unterstützung (mit Compass, wenn du es verwenden möchtest)
– automatische Minifizierung deines generierten CSS (und die Möglichkeit, hübsch formatiertes CSS zu exportieren)
– Bereitstellung mit einem Klick
– einfach in deiner lokalen Entwicklungsumgebung zu verwenden
Der größte Mangel im Vergleich zu diesen anderen Tools ist wahrscheinlich die Versionskontrolle. Im Moment handhabt WebPutty nur eine Vorschauversion, in der du herumspielen und neue Ideen ausprobieren kannst, und die veröffentlichte Version, die aktiv auf deiner Website(s) bereitgestellt wird. Die gute Nachricht ist, dass geplant ist, in Zukunft robustere Versionierung und Versionskontrollintegration hinzuzufügen.
Volle Offenlegung: Ich bin einer der Entwickler, die WebPutty geschrieben haben :)
+1 für WebPutty. Ich verwende es nur für SASS, jetzt werde ich anfangen, Compass/Blueprint zu studieren – ich möchte alten Code, der für 960.gs geschrieben wurde, aktualisieren.
Toller Artikel. Für alle, die entscheiden müssen, ob sich der Mehraufwand eines CSS-Präprozessors lohnt, würde ich nur den möglicherweise offensichtlichen Punkt hinzufügen, dass die Vorteile direkt proportional zur Komplexität des CSS sind, das du schreibst. Wenn du viel CSS3 verwendest und an großen Sites oder Multi-Site-Architekturen mit mehreren Vererbungsebenen arbeitest, werden die Vorteile eines Präprozessors schnell realisiert.
Wenn du ein Ein-Personen-Betrieb bist und mit einfacheren Site-Strukturen arbeitest, ist dein „Das ist unnötig“-Instinkt möglicherweise richtig. Aber natürlich ist es immer eine gute Idee, neugierig zu sein und sich über neue Technologien zu informieren, also solltest du trotzdem mit diesem Zeug experimentieren. :)
Ich hasse es, parallele Versionen von lokalen und Live-Sites zu pflegen. Ich fange immer lokal an, um die Geschwindigkeitsvorteile zu nutzen, aber sobald der Kunde etwas sehen muss, lade ich es auf den Server hoch, wo die Site live bleibt – ich rühre die lokale Kopie danach nicht mehr an.
Ich habe .LESS bei jedem Projekt verwendet (und das seit etwa 6 Monaten) und werde dies auch weiterhin tun. (Obwohl dein Artikel mein Interesse an SASS geweckt hat). Ich habe angefangen, die .LESS-Vorverarbeitungs-App für Mac zu verwenden, was beim lokalen Arbeiten sehr praktisch war, aber meinen Workflow ruinierte, wenn ich live ging: jedes Mal eine lokale .LESS-Datei bearbeiten, dann die ausgegebene lokale .CSS-Datei hochladen, um Änderungen an einer Live-Site vorzunehmen, ist absurd.
Was meinen Workflow gerettet hat, ist LessPHP (siehe http://leafo.net/lessphp/ und https://github.com/leafo/lessphp). Es befindet sich noch in der Entwicklung, aber die einzigen wirklichen Fehler, die ich gefunden habe, haben mit der Verarbeitung berechneter Prozentsätze zu tun, was nicht so schwer zu umgehen ist. Das Hinzufügen einiger Zeilen in meiner header.php-Datei überprüft automatisch, ob eine neue Version der .LESS-Datei vorhanden ist, und gibt, falls ja, die CSS-Datei aus, wenn die Seite geladen wird. Keine Notwendigkeit für Vorverarbeitungs-Apps oder das Bearbeiten oder Hochladen von CSS-Dateien.
Ich bin mir nicht sicher, ob es signifikante Geschwindigkeits-/Performance-Bedenken bei der Verwendung eines PHP-basierten Präprozessors gibt, wäre aber daran interessiert zu erfahren, ob jemand etwas darüber weiß.
Definitiv mit leafo in ein PHP-Framework integriert ist ein großer Zeitgewinn! Die letzte Optimierung ist die Verwendung von dresscss oder bearcss, um das weniger Skelett aus einer HTML-Datei zu erstellen. Das impliziert, dass du zuerst dein Markup erstellst und dann das Tool verwendest. Eine Möglichkeit unter anderen...
Wir entwickeln lokal (mit Hilfe von GitHub). Wir verwenden Capistrano, um von GitHub auf den Entwicklungsrechner zu pullen, und dann verwenden wir Capistrano erneut, um auf den Live-Server bereitzustellen. Wir haben es so eingerichtet, dass gemeinsame Dateien (Symbole, Bilder) über alle Entwicklungsumgebungen hinweg geteilt werden.
Ich habe einen benutzerdefinierten PHP-Präprozessor verwendet, aber da die Community-Unterstützung für SASS usw. wächst, klingt das nach meinem nächsten Weg zur Prozessverbesserung!
Ich habe Coda jahrelang benutzt und versucht, SASS zu verstehen, aber die Ruby-Gem-Sache und die Kommandozeilen-Sachen haben mich abgeschreckt. Bryan Jones' Less.app erwies sich als perfekt. Jetzt verwende ich sein neuestes, CodeKit – und bin äußerst zufrieden. Und ich stimme dir zu, Chris – die Bildoptimierung ist süß.
Ein weiterer erwähnenswerter Punkt ist, dass einige leistungsstarke Rapid-Prototyping-Frameworks die Vorverarbeitung nutzen: Twitter Bootstrap (LESS), Foundation hat einen LESS-Fork auf GitHub und Perkins (LESS).
Der Umstieg auf LESS+LiveReload war fantastisch für mich. Es würde sich jetzt rückwärts anfühlen, sie nicht zu verwenden. Für diejenigen, die gerade darüber nachdenken, sich in die Materie einzuarbeiten, mach es einfach. SASS hat einen gewissen Overhead, aber du kannst LESS in einer Minute zum Laufen bringen.
Für diejenigen, die sich fragen, ob/warum sie LESS verwenden sollten: Hast du jemals dieselbe Hex-Farbe in einer Datei neu geschrieben? Das ist Grund genug.
Richtig! Für diejenigen, die immer noch über FTP von Remote-Servern arbeiten, solltet ihr wirklich einen Tag investieren, um Git zu lernen und Github in euren Workflow zu integrieren.
Ich entwickle alles lokal, committe ein paar Änderungen, pushe zu Github und pulle dann auf meinen Live-Server. Tatsächlich habe ich diesen Pull automatisiert – jetzt muss ich wirklich nur noch Änderungen vornehmen, committen und pushen.
Wenn du immer noch FTP verwendest und Dinge auf dem Live-Server erledigst, würdest du dir einen Riesengefallen tun, wenn du ein kleines bisschen Git lernst.
Ich genieße die Möglichkeit, Variablen und Mixins zu verwenden, und ich sehe den Wert der Verwendung solcher Systeme in deinem Workflow. Du musst jedoch vorsichtig sein, wie du sie deinen Codierungsstil beeinflussen lässt. Ich habe zu viele großartige Designer gesehen, die anfangen, alles zu verschachteln, weil sie es können, und du endest mit unnötig langen Selektoren, extremen Schwierigkeiten beim Überschreiben von Stilen aufgrund von Spezifitätsproblemen usw.
Es ist auch weniger angenehm, dein gesamtes Team davon zu überzeugen, die notwendigen Sass-Syntax-Highlighting-Plugins für ihre bevorzugten Editoren zu installieren, und zu versuchen, die Entwicklertools jedes Browsers dazu zu bringen, die Quell-CSS-Datei als Sass-Datei und nicht als generierte CSS-Datei richtig zu identifizieren.
Wenn du ein Projekt so beginnen kannst, dass viele dieser Komplikationen vermieden werden, ist es eine großartige Möglichkeit, Sass/Less usw. zu verwenden.
Danke, Chris. Viele gute Ressourcen hier.
Ich habe mein eigenes persönliches Framework mit SASS und Coda-Snippets eingerichtet, aber jetzt werde ich mir auch einige dieser Tools ansehen.
Mir ist aufgefallen, dass CodeKit einen Bereich zur Anzeige installierter Frameworks hat, und ich habe mich gefragt, ob du wusstest, ob das Erstellen benutzerdefinierter Frameworks auch möglich ist?
Außerdem können Mixins mit einem oder mehreren Argumenten in SASS basierend auf der Lockerheit von SASS-Listen erstellt werden. SASS-Listen können entweder durch Kommas oder Leerzeichen getrennt sein, und du kannst Listen von Listen haben, solange die Trennzeichen unterschiedlich sind.
Dann sollten alle drei funktionieren (muss wahrscheinlich noch etwas optimiert werden, da es nur aus dem Kopf heraus war)
Für die Bereitstellung habe ich Beanstalk (http://beanstalkapp.com/) ausprobiert. Es bietet private Git- (und Subversion-) Repositorys und verfügt über einen Mechanismus, um Änderungen im Repository auf einen Server zu pushen. Ich habe nur das grundlegende kostenlose Konto, daher ist der Bereitstellungsmechanismus etwas eingeschränkt, aber ich glaube, für die bezahlten Konten kannst du sowohl auf einen Staging-Server (automatisch, wenn das Repository aktualisiert wird) als auch manuell auf einen Live-Server bereitstellen. Es ist ziemlich süß und einfach zu bedienen (wenn du GIT verstehst, natürlich).
Ich stimme dem zu, Dave. Beanstalk ist meiner Erfahrung nach bei weitem der beste Weg, wenn du eine Agentur bist und das Hosting-Setup jedes Kunden etwas anders ist.
Es hat den enormen Vorteil, den Bereitstellungsprozess zu standardisieren, sodass dein gesamtes Team über einen einzigen Punkt bereitstellt. Und es kann dir einen Bericht über alles zeigen, was an dieser Bereitstellung beteiligt ist, z. B. welche Dateien geändert wurden, welche Tickets geschlossen wurden und welche Git/Svn-Commits stattgefunden haben.
Ich habe viele andere Optionen ausprobiert, aber das ist der Gewinner.
Wie schneidet beanstalkapp im Vergleich zu bitbucket ab?
Bitbucket ist kostenlos für private Repositorys.
Danke
@cipa Es sieht nicht so aus, als hätte Bitbucket eine Bereitstellung – mit anderen Worten, es bietet kostenlose PRIVATE Git-Repositorys (cool!), aber sie haben keinen Mechanismus, um diese Dateien auf einen Webserver für Staging oder Live-Bereitstellung zu pushen. Das ist es, was mich an Beanstalk reizt.
Für alle, die nach automatisiertem Hochladen ohne Git suchen, schaut euch das Befehlszeilentool rsync an
http://www.manpagez.com/man/1/rsync/
Es kann differenzielle Dateiübertragungen von lokal nach remote (ssh) durchführen
Ich bin in der Phase, in der ich WordPress-Themes lokal entwickle und sie auf einem Git-Repository hoste (nur das Theme, nicht die ganze Site), als Backup.
Du kannst kostenlose private Repositorys auf assembla.com erhalten. Für öffentliche Projekte bevorzuge ich Github, aber für Kunden-Sites verwende ich private Repos bei Assembla.
Ich bin anderer Meinung, was die lokale Entwicklung angeht. Die beste Methode ist, dein Projekt zu versionieren und mehrere Arbeitskopien auf mehreren Subdomains zu haben.
Coolness. Ich wusste nichts über MAMP (das habe ich also in diesem Beitrag als nützlich empfunden). Ich liebe es, lokal zu arbeiten – eine der Websites, an denen ich arbeite, verwendet einen Rails-Server (und ich code in HAML und CSS... noch nicht SASS, sorry). Aber ich arbeite auch an vielen WordPress-Sites und habe mich nicht einmal die Mühe gemacht, mir die lokalen Optionen anzusehen.
@Scott Vivian, @Methemer: Wenn du () hinter das Mixin setzt, gibt Less das CSS nicht aus
Ich liebe Sass und Less. Das Lesen der Dokumentation hat mir wirklich sehr geholfen. Zum Beispiel hat Sass eine mix()-Methode, mit der man zwei Farben mit einer Gewichtung mischen kann. Warum?
Sehr interessant. Als Neuling hat mich die Idee, zuerst CSS vollständig zu lernen und dann Präprozessoren später, wirklich angesprochen. Danke!
Es überrascht mich, dass niemand erwähnt, dass SASS tatsächlich 2 verschiedene mögliche Syntaxen hat.
.scss
.sass
Ich persönlich bevorzuge .sass
Ich bevorzuge auch die .sass-Syntax. Keine geschweiften Klammern und Semikolons überall = weniger Tippen, besser lesbar, meiner Meinung nach mehr Spaß. Aber ich bin auch ein alter Pythonista ;)
Viele Leute fühlen sich mit der ganzen Einrückungs-Sache jedoch nicht wohl, oder haben das Gefühl, dass es zu weit von dem entfernt ist, wie reines CSS aussieht. Die gute Nachricht ist, dass beide Syntaxen austauschbar sind, d.h. man kann .sass in .scss importieren (und umgekehrt) und es wird ohne Konflikte kompiliert. SASS wird sogar mit einem Befehlszeilentool geliefert, um Quelldateien zwischen den beiden Varianten zu konvertieren, falls sich Ihr Geschmack ändert.
Wenn Sie CSS ohne das andere Tool in eine Live-Seite neu laden möchten, ist dies in Javascript ziemlich einfach. Ich habe Folgendes in meinem Javascript und rufe es bei Bedarf auf (Sie könnten es auf einen Timer legen, oder ich habe gesehen, dass auch ein Bookmarklet dies tut). Dies verwendet Ext, um die DOM-Knoten zu finden, und ich erzwinge eine andere URL, damit mein Webserver die Datei cachen kann, dies aber umgeht, und es verwendet underscore.js, um die Schleife zu durchlaufen, aber es ist ziemlich einfaches Zeug
Und ja, make bietet Ihnen eine einfache Möglichkeit, „alles, was sich geändert hat, neu zu kompilieren und irgendwo abzulegen“ zu skripten – ich persönlich übertrage Dateien auf meinen Dev-Server, indem ich den Dev-Server einfach meinen Arbeitsordner mounten lasse, damit ich testen kann, ohne Änderungen an der Quellcodeverwaltung festschreiben zu müssen usw., und ich verwende Emacs, sodass es ziemlich einfach ist, Emacs dazu zu bringen, SASS-Dateien immer neu zu kompilieren, wenn Sie sie speichern ... aber das passiert, wenn Sie alte C++-Entwickler an Ihren Webprojekten arbeiten lassen :)
Chris: Wunderbarer, informativer Beitrag. Lösen Dienste wie deployhq.com die Probleme, die Sie mit dem FTP-Workflow hatten? Das ist so ziemlich mein M.O. jetzt, wenn ich alleine oder mit meinem Team arbeite.
Vielen Dank,
Mark
Wenn Sie ein SCSS-Benutzer sind, müssen Sie sich Bourbon ansehen.
Von der Website
„Der Zweck von Bourbon Sass Mixins ist es, eine umfassende Bibliothek von Sass-Mixins bereitzustellen, die so „Vanilla“ wie möglich gestaltet sind, d.h. sie sollen nicht von der ursprünglichen CSS-Syntax abweichen. Die Mixins enthalten anbieterspezifische Präfixe für alle CSS3-Eigenschaften zur Unterstützung in modernen Browsern. Die Präfixe gewährleisten auch ein fehlerfreies Verhalten in älteren Browsern, die nur CSS3-präfixierte Eigenschaften unterstützen. Bourbon verwendet SCSS-Syntax.“
Coda hat ein großartiges integriertes FTP, das löst Ihr FTP-Dilemma. Außerdem mag ich Cornerstone für SVN sehr gerne
Für LESS gibt es eine alternative Anwendung für Multiplattform, SimpleLESS (die Benutzeroberfläche sieht aus wie LiveReload). SimpleLESS
Schöner Beitrag.
Ich bin ehrlich, ich mag den Hass auf die Kommandozeile nicht wirklich. Es ist wirklich nicht beängstigend und meiner Meinung nach sollten Designer & Frontend-Entwickler nicht davon abgehalten werden, es zu benutzen. Ein Großteil dessen, was wir als Frontend-Entwickler täglich tun, ist viel komplizierter.
Ich verstehe nicht, wie jemand mit JS, CoffeeScript + jQuery, Box-Modell, Versionskontrolle und Browser-Eigenheiten zurechtkommt, aber dann die Verwendung der Kommandozeile hasst. Am Ende des Tages tippt man nur die richtigen Dinge in ein Textfeld, um das zu erreichen, was man tun möchte.
Ich lerne immer noch viel über das, was die Kommandozeile zu bieten hat, aber alles, was ich bisher gelernt habe, hat dazu beigetragen, mein Leben im Alltag einfacher zu machen. GUIs machen viele Dinge einfacher, aber in ihrer „Vereinfachung“ können sie manchmal einige wirklich coole Kommandozeilenfunktionen verschleiern oder weglassen (siehe: GitHub App).
Es macht mich irgendwie fertig, so viele wirklich kluge Leute zu sehen, die die Kommandozeile als lahm/frustrierend/kompliziert abtun oder abschreiben, obwohl es offensichtlich ist, dass ihnen einfach nicht einige coole Dinge gezeigt wurden, die sie tun kann, oder sie sich nicht die Zeit genommen haben, sich hinzusetzen und es zu lernen.
Ich kann dazu als ehemaliger Designer, der zum Entwickler wurde und gerade erst mit der Kommandozeile anfängt, etwas sagen. Für mich drehte es sich um die Sorge, dass die Kommandozeile ein direkter Zugriff auf meinen Computer ist, und im Gegensatz zum Betriebssystem und seiner freundlichen Benutzeroberfläche sind Kommandozeilenoperationen vor mir nicht sicher – dem schlimmsten Teil des Computerzyklus. Die Gefühle, die ich von anderen Designern höre, sind ähnlich: „Ich möchte meinen Computer nicht versehentlich zerstören.“
Ich denke, es wird besser und Sie haben den Nagel auf den Kopf getroffen. Designer und Front-End-Entwickler müssen einfach gezeigt bekommen, dass alles in Ordnung sein wird.
Hallo Chris,
Toller Artikel, ich bin ein großer Fan! Ich dachte, ich teile meine Meinung darüber, wie wir Präprozessoren als Team bei Art.sy verwenden
Wir haben ein Haupt-Ruby-on-Rails-Projekt, bei dem wir Sass, Haml und Coffeescript verwenden. Wir haben das Projekt vor der Asset Pipeline von 3.1 gestartet, daher verwenden wir ein Set Gems, um diese Dateien beim Neuladen der Seite zu kompilieren.
Um die von Ihnen erwähnten Probleme der Verwirrung anderer Mitglieder zu vermeiden, die in die kompilierten Assets schreiben möchten, nehmen wir die Diktaturposition ein und schreiben in unsere .gitignore-Datei, um alle javascripts/css-Dateien außer denen in „vendor“-Ordnern zu ignorieren. Selbst wenn jemand in die kompilierten Assets schreiben möchte, wird es nicht in die Versionskontrolle aufgenommen.
Schließlich verpackt/minifiziert/gzips Jammit alles für eine schnelle Produktionsnutzung.
Dies ist alles sehr Ruby- & Rails-spezifisch, aber wir haben auch einige Projekte, die auf node.js basieren, und dafür habe ich ein kleines Modul geschrieben.
Das hat bisher wunderbar für uns funktioniert und unser Team insgesamt viel produktiver gemacht.
Ich finde den zusätzlichen Boilerplate-Aufwand für die Einrichtung eines Systems, um Präprozessoren nahtlos zu kompilieren, es wert, besonders für große Projekte. Wir verbringen viel Zeit damit, mit verschiedenen Benutzeroberflächen zu experimentieren und viel JS/HTML/CSS zu schreiben, daher macht es das Leben viel angenehmer, robuste, funktionsreiche Tools wie diese zu haben.
Prost!
git-ftp (das hier in „das sieht vielversprechend aus“ unter Diesem verdammten FTP-Workflow) ist großartig.
Wenn Sie Git verwenden (von der Kommandozeile) und es aufgrund des Servers nicht für ein Projekt verwenden können, probieren Sie es aus.
Danke fürs Teilen, Chris, du scheinst es immer auf den Punkt zu bringen.
Es gab und gibt immer noch Zeiten, in denen ich mich entschieden habe, rein in FTP zu arbeiten. Für ein Projekt mit schneller Bearbeitungszeit (ein Tag oder so) würde dies keinen neuen Eintrag in eine Vhost-Datei rechtfertigen, und es wäre nervig, pingelig zu sein und sich etwas anderes als domain.com/project als URL anzusehen.
Less hat meine Welt komplett auf den Kopf gestellt, für Windows-Benutzer ist (WinLess) ein nettes kleines Programm. Es ist so ziemlich ein grundlegender Compiler, man zeigt auf ein Verzeichnis, das überwacht werden soll, wenn man Less- und CSS-Unterverzeichnisse hat, und es zieht und pusht schön in diese hinein. Gibt Benachrichtigungen (Growl-ähnlich?), wenn Syntaxfehler mit Zeilennummern vorliegen. Das ist eigentlich alles.
Die Verwendung der richtigen Tools hat tonnenweise Vorteile, die Betrachtung von CSS mit einer „Präprozessor“-Schrägstellung bewirkt viel mehr, als eine Seite herunterzukaskadieren. Das ist sicher.
Muss mich immer noch an Git gewöhnen, ich habe Mühe, mich an den Wochentag zu erinnern, geschweige denn an mehr Syntax. *weinendes Gesicht*
Nochmals vielen Dank
Vielleicht probieren Sie auch unser Compass.app? :)
Ich bin wirklich schlecht in CSS, aber dieser Blog hilft mir immer ;)
Zum (S)FTP-Git-Deployment-Problem: Ich habe dandelion (https://github.com/scttnlsn/dandelion) für einige kleinere Projekte verwendet und es funktioniert einwandfrei. Und nach dem Erstellen einer einfachen Konfigurationsdatei ist nur eine Zeile Kommandozeilenverwendung erforderlich:
dandelion deploy– das kann jeder Designer handhaben ;-)Vielen Dank für den ausführlichen Artikel. Ich habe das Gefühl, in einem Loch gelebt zu haben, denn dies ist meine erste Lektüre über SASS. Jetzt muss ich mehr recherchieren…
@extendkann ab Sass 3.2 (gem install sass --pre) mit Platzhalter-Selektoren mehr wie Ihr Less-Beispiel funktionieren.Ich habe bereits alle meine wiederverwendbaren Klassen in ein
_placeholders.scssStylesheet konvertiert.Ich habe einen kleinen Beitrag zum FTP-Deployment und SVN. Ein Kunde, mit dem ich zusammenarbeite, hat eine traditionelle Anwendungsentwicklungsumgebung mit 3 Zonen
– Entwicklung (localhost.?????)
– Staging (stage.?????.com)
– Live (www.?????.com)
Ich verwende seit 6 Monaten Beanstalk für das Deployment (Beanstalkapp.com) und es ist erstaunlich. Falls Sie es noch nicht gesehen, gehört oder verwendet haben: Mit Beanstalk können Sie mithilfe von FTP/SFTP-Details auf einfache Weise „Deployment“-Zonen in ihrer App erstellen (http://support.beanstalkapp.com/customer/portal/articles/68162-deployment-and-releases)
Ich habe ein automatisches Deployment in der Staging-Umgebung eingerichtet, sodass, wenn ich eine Gruppe von Änderungen committe, diese automatisch per FTP an stage.?????.com gesendet werden. Wenn auf Staging alles funktioniert, melde ich mich normalerweise bei Beanstalk an und klicke auf den Deployment-Button, um alles auf Live zu pushen (auch wenn es eine Reihe von mehreren Commits ist).
Ich habe auch die Option, mich in eine bestimmte Umgebung festzulegen, indem ich dem Ende einer Commit-Nachricht „[deploy:environment]“ hinzufüge. Ich verwende dies die ganze Zeit, um schnell eine Änderung an der Live-Site mit [deploy:Live] vorzunehmen.
Der Kunde hat ein Konto bei Beanstalk und wird automatisch über neue Deployments benachrichtigt. Ich habe festgestellt, dass dies gut für Kunden funktioniert, die in der Regel technischer sind.
Der einzige Nachteil, den ich gefunden habe, ist, dass ein SVN-Entfernungs- und Löschbefehl die Dateien nicht über FTP entfernt. Mit einem fortgeschritteneren Branching-Setup kann dies jedoch behoben werden, Beanstalk entfernt Dateien und Verzeichnisse von Ihrem Server, die im bereitgestellten Branch nicht mehr existieren.
Als Disclaimer: Ich habe keine Zugehörigkeit oder Verbindung zu Beanstalk. Diese Informationen basieren ausschließlich auf meinen Erfahrungen mit der Arbeit damit.
Hey Chris, danke für den Beitrag. Ich habe mit dem Gedanken gespielt, einen Präprozessor für CSS zu verwenden, war aber (und bin es immer noch) aus vielen der von Ihnen genannten Gründe zögerlich. Ich bin sehr an den Vorteilen der Verwendung interessiert (am bemerkenswertesten – weniger Tippen)
Es ist gut zu sehen, dass Sie sich mit SASS produktiver fühlen als ohne es. Ich denke, das ist das wichtigste Zeugnis. Vielen Dank auch, dass Sie über den Workflow gesprochen haben, das ist der Hauptgrund für mein Zögern. Es ist eine Frage der Entscheidung, es zu verwenden und es auch zum Standardverfahren für das Team zu machen.
Auch zur FTP-Anmerkung. Ich bearbeite Dateien normalerweise lokal und lade sie dann per FTP auf einen Live-Beta-Server hoch, wo ich meine Änderungen in der Vorschau ansehe. Ich mache das, weil ich überall arbeite und daher nicht an einen Arbeitsplatz gebunden sein möchte. Währenddessen verwende ich Versionskontrolle.
Ich bin hauptsächlich daran interessiert, ob es so etwas wie phpless oder lessjs gibt, das serverseitig live läuft und dann das CSS beim Hochladen kompiliert. Dann muss ich mich nicht darum kümmern, Dateien zu speichern und dann die aktualisierte zu finden, um sie auf den Server hochzuladen. Dies würde die CSS-Datei komplett aus meinem Workflow entfernen, ich würde mich nur um die eigentlichen Quelldateien kümmern. Irgendwelche Hinweise, wohin ich gehen soll (von jemandem, der sich mit Node oder Kommandozeile nicht auskennt)?
Habe LESS gerade zum ersten Mal ausprobiert und bin auf ein paar Hindernisse mit Chrome gestoßen. Kompilierungsfehler kamen und gingen, aber das Hauptproblem war, dass der Web-Inspektor von Chrome aufhörte, den Dateinamen und die Zeilennummer von CSS-Stilen anzuzeigen. Ist jemand anderem das passiert? Irgendwelche Lösungen? Oder einfach noch einmal versuchen?
Ich bin vom Team bei Beanstalk hier – ich wollte mich nur bei allen treuen Fans dafür bedanken, dass sie uns hier erwähnt haben. Es macht unser Team wirklich glücklich zu wissen, dass die Leute uns als einen besseren Weg finden, ihre Änderungen bereitzustellen. Erst vor ein paar Wochen haben wir eine brandneue Version unserer Deployment-Engine veröffentlicht und sie ist noch besser als zuvor. Benachrichtigungen über Team-Deployments & automatische Release Notes gehören zu meinen persönlichen Favoriten.
Wenn jemand Fragen zu unseren Deployment-Tools hat, lassen Sie es mich bitte hier wissen oder senden Sie mir eine E-Mail [email protected]
Warum sehe ich die Zukunft dieser Website als sass-tricks.com. Es war ziemlich fantastisch zu beobachten, wie Sie all die Jahre neue Technologien erkundet haben und uns erlaubt haben, in der ersten Reihe zu sitzen.
Als Benutzer von SASS und Git in den letzten drei Jahren ist es großartig, dass Sie diese leistungsstarken Tools auch in Ihren Workflow aufgenommen haben.
Ein großer Vorteil der Verwendung von LiveReload mit seiner neuen Skriptmethode ist das automatische Aktualisieren auf iOS-Simulatoren (einschließlich Soft-Refresh von CSS). Das ist so ziemlich der beste Grund, es zu verwenden.
Ich bin mir nicht sicher, ob Sie lokal arbeiten müssen. Mein Workflow besteht aus LESS + lessphp, das meine LESS-Dateien dynamisch neu kompiliert, minifiziert und gzippt, wann immer ich das Stylesheet aufrufe (das sich unter url.com/style.php anstelle von url.com/style.css befindet). Es gibt einen kleinen Overhead bei dieser Verarbeitung, aber in Kombination mit dem Caching des ausgegebenen CSS (wenn sich die LESS-Dateien nicht geändert haben) ist dieser minimal.
Funktioniert für mich!
Ich liebe die Idee, LESS / SASS zu verwenden, aber ich verwende Beanstalk, um mein Haupt-Repo während der Entwicklung zu speichern. Wenn ich über Codekit kompiliere und dann auf den Server pushe, kann mein Team die LESS/SCSS-Dateien nicht abrufen, sie sehen den kompilierten Code. Gibt es eine Möglichkeit, beim Deployment auf die Hauptserver mit Beanstalk zu kompilieren?
Ich habe gerade erst mit SASS angefangen und meine ersten Eindrücke sind ziemlich gut, ich liebe die Verwendung von Mixins und @if’s sind ziemlich cool. Ich bin eine Ein-Mann-Band und brauche keinen echten Workflow, der es mehreren Benutzern ermöglicht, Änderungen an Dateien vorzunehmen. Da ich dies gelesen habe, sehe ich jedoch die Vorteile und werde mich mit der Einrichtung eines ordnungsgemäßen Workflows befassen. Wie immer erstaunliche Ressource Chris danke.
@chriscoyier – Sieht so aus, als hätte Bryan Jade vor ein paar Builds hinzugefügt – war selbst frustriert über HAMLs Mangel an HTML-Includes – https://github.com/bdkjones/CodeKit/issues/98
Ich wollte nur meine Arbeitsstrategie im Lichte dieses Beitrags teilen. Ich verwende Codekit, um meinen SASS-Code zu verarbeiten, während ich an Dateien arbeite, die sich lokal auf meiner Dropbox befinden. Nachdem CSS vorverarbeitet wurde, was etwa eine Sekunde dauert, verwende ich Transmit FTP, um mein Theme (WordPress-Dateien) online zu synchronisieren.
Lokal zu arbeiten mag schneller sein, aber ich schätze, es hängt davon ab, woran Sie arbeiten. Ich ziehe es vor, immer online auf meine Dateien zugreifen zu können, und Dropbox ermöglicht es mir, einen einzigen Speicherort zu haben, auf den von jedem Computer aus zugegriffen werden kann. Dies ermöglicht es mir, sowohl PC aus Bequemlichkeit als auch MAC für die Vorverarbeitung meines Codes zu verwenden.
Hallo zusammen, meine Präprozessor-Reise begann mit LESS. Sehr bald fuhr ich mit SASS fort. Alles war wirklich cool, aber als ich mich entschied, mein eigenes Framework zu schreiben, entdeckte ich mehrere Probleme. Es gab in SASS keine Syntax, die es mir erlaubte, das zu tun, was ich wollte. Ich hatte einige Probleme mit der Interpolation und am Ende beschloss ich, meinen eigenen CSS-Präprozessor zu schreiben. Er heißt AbsurdJS http://krasimir.github.io/absurd/. Ich bin wirklich daran interessiert, Feedback zu erhalten. Hier ist so etwas wie ein „Erste Schritte“-Artikel.
Ist es nicht schwierig, mit den kompilierten Dateien zu arbeiten, wenn Sie eine Website in Ihrem Browser mit Firebug debuggen? Wird es als normales CSS angezeigt?
Wenn Sie PHP-Entwickler sind, können Sie PHPStorm (Mac | Windows) verwenden, das einen automatischen Filter hat, um .CSS aus SASS- & SCSS-Dateien zu generieren.
Nicht zu schwer zu konfigurieren und Sie können einfach auf einer Plattform arbeiten ;)
Wenn Sie FTP verwenden, PHP schreiben und eine Lösung benötigen, bei der keine lokalen Dateien und Live-Dateien synchronisiert werden müssen, empfehle ich SCSSPHP. Ein paar zusätzliche Dateien in Ihrem Projektordner und Sie stellen kompiliertes Sass bereit. Ich verstehe, dass Git-Deployment der richtige Weg ist, und ich mache das für persönliche Projekte. Ich kann nicht den Workflow aller in meiner Firma ändern; Ich kann jedoch eine Option einfügen, die es uns ermöglicht, saubereres CSS zu schreiben, ohne die Leute dazu zwingen zu müssen, viele neue Dinge auf einmal zu lernen.