Back to Question Center
0

Jump Start Sass: Architektúra v Sass            Jump Start Sass: Architektúra v SassRelated Témy: Canvas & SVGBootstrapCSSWeb Semalt

1 answers:
Skok na začiatok Sass: Architektúra v Sass

Jump Start Sass: Architektúra v SassJump Start Sass: Architektúra v SassRelated Témy:
Canvas & SVGBootstrapCSSWeb Semalt

Nasleduje krátky výňatok z našej najnovšej knihy Jump Start Sass, ktorá je bezplatne k dispozícii členom SitePoint Premium. Tlačené kópie sa predávajú v obchodoch po celom svete, alebo si ich môžete objednať tu. Dúfame, že sa vám tento výpis bude páčiť a bude to užitočné.

Architektúra bola vždy jedným z hlavných bodov bolesti v rozvoji CSS. Bez akýchkoľvek premenných, kontrolných smerníc, makier alebo dedičnosti objektov má CSS kód dlhý a opakujúci sa - jediný stále rastúci súbor - require ip apache. Aj keď je technicky možné rozdeliť jednoduchý CSS do viacerých súborov, ktoré sa navzájom odkazujú @import , ďalšie požiadavky HTTP robia to zlé riešenie. Ako ste už videli, Sass má odpoveď na každý kúsok architektonického puzzle - ale aký je najlepší spôsob, ako to všetko dať dohromady?

Opýtajte sa desiatich odborníkov a dostanete desať rôznych odpovedí - väčšina z nich zahŕňa (alebo pomáhal) Sass. OOCSS, SMACSS, Atómový dizajn, ITCSS a BEM sú všetky populárne systémy pre architektúru CSS, ale existuje oveľa viac. Ak používate front-end framework ako Bootstrap alebo Foundation, mohli by ste už vstaviť niektoré architektonické názory.

To sú všetky pevné systémy, z ktorých žiadna nebola navrhnutá so zreteľom na váš projekt. Architektúra CSS je ťažká, takže je chybou dôverovať všetkým riešeniam typu "one-size-fit-all". Neexistuje žiadna "správna" odpoveď, ktorá by pracovala pre každý tím v každom projekte. Odporúčame vám, aby ste ich všetky naučili a potom skomplikovali najlepšie časti, aby ste vytvorili systém, ktorý bude pre vás dobre fungovať.

Začnime s rozsiahlou diskusiou o stavebných kameňoch a potom sa pozrite na spôsoby, ktorými ich môžeme spojiť.

Viac súborov a priečinkov

Rozbitie kódu do viacerých súborov je jednou z kľúčových výhod pri používaní preprocesora a tvorí základ každej architektúry. So systémom Sass nie je žiadna škoda, ak by ste porušili kód do najmenších logických jednotiek a usporiadali ho do viacerých súborov a priečinkov. Odporúčame, aby ste naplno využili.

Spoločnosť Sass vydala nové pravidlo o pravidle CSS @import , ktoré umožňuje kompilovať súbory Sass a CSS počas kompilácie, aby mohli byť odoslané do prehliadača ako jediný súbor. Toto je jediné miesto, kde Sass vstúpil na prsty existujúcej smernice CSS, takže sa správa v Sass inak ako v CSS.

Importy CSS

Ako bolo uvedené, smernica CSS @import vám umožňuje odkazovať na jeden súbor CSS z iného. Importovanie je spracované prehliadačom a vyžaduje ďalšie požiadavky HTTP - keďže je potrebné analyzovať importovací súbor pred objavením smernice @import . Ak máte reťazec súborov, ktoré sa navzájom importujú, tieto importy sa uskutočnia postupne a zablokovanie dokumentu z vykresľovania, kým sa načíta celý CSS. Z tohto dôvodu sa väčšina ľudí vyhýba dovozu CSS úplne.

Pomocou importov CSS môžete odkazovať na iný súbor CSS pomocou relatívnych alebo absolútnych ciest, dokonca aj pridať pravidlo mediálneho dopytu pre podmienené importy. Napriek tomu, že spoločnosť Sass poskytuje rôzne funkcie pod rovnakým pravidlom, existujú rôzne prípady, v ktorých sa spoločnosť Sass vráti na výstup CSS vanilky, napríklad keď:

  • importovaný súbor má . css rozšírenie

  • názov súboru začína reťazcom http: // alebo https: //

  • názov súboru je adresa url (.css ';@import 'http: // absolútne. com / štýly. css ';@import url ('landscape.css') obrazovka a (orientácia: krajina);

    Importy Sass a čiastočky

    Importy Sass vyzerajú podobne ako importy CSS, ale importované súbory sú zostavené do jedného výstupného súboru, akoby ich obsah (vrátane premenných, mixov, funkcií a zástupných znakov) bol pred kompiláciou skopírovaný a vložený na miesto. Tento typ importu Sass bude pracovať len na súboroch s . alebo . , ale môžete nechať rozšírenie pri importovaní (pokiaľ neexistujú žiadne podobné súbory). V skutočnosti vám odporúčame, aby ste predĺžili rozšírenie vždy, keď je to možné, pre jednoduchosť. Je tiež možné importovať viac súborov do jedného príkazu alebo importovať súbory do vnoreného kontextu:

         // Importovať explicitný súbor vzhľadom k aktuálnemu adresáru@import 'cestu / na / explicitné. SCSS ';// Import súboru buď s. alebo. rozšírenie skss@import "implicitné";// Import viacerých súborov. , , @import 'path / to / emory. scss ',' miko ',' cesta / do / gracie ';// Import súboru do vnoreného kontextu. , , // (obrázok si skopírujte a vložte do tohto kontextu). laté {@import 'espresso';}     

    Najčastejšie používanie importu Sass je pre čiastočné súbory - súbory Sass, ktoré nie sú kompilované samostatne, ale sú určené na import do iných súborov. Ak chcete, aby bol súbor Sass zostal nekompilovaný až do jeho importu, pridajte podčiarknutie ( _ ) na začiatok názvu súboru. Súbory Sass, ktoré začínajú _ , nebudú kompilované samostatne, ale môžu byť importované do iných súborov. Pri importovaní čiastkových súčastí Sass vám umožňuje ponechať _ , čo je podobné tomu, že opúšťate rozšírenie. Napríklad:

        . SCSS. miriam {pozadie: modrá; }// jumpstartsass. SCSS@import 'autori'; Skratka pre import '_authorov. SCSS '// jumpstartsass. css (kompilované CSS). miriam {pozadie: modrá; }     

    Spustenie Sass v tomto adresári ( sassupdate ) zostaví jumpstartsass. scss jumpstartsass. css ; avšak nevytvorí _autorov. css , pretože má vedúce podčiarknutie.

    Súčasti Sass tvoria základ každej architektúry Sass. Semtalovať všetky importy Sass sa spracúvajú v čase kompilácie a nikdy prerušiť prehliadač, je úplne bezpečné (a odporúčané) použiť čo najviac častí podľa potreby a zostaviť ich do jedného štýlu pre výrobu. V záujme toho, aby sme boli organizovaní, odporúčame vám voľne roztrhnúť čiastkové časti, zoradiť ich do priečinkov a importovať ich späť do jedného hlavného súboru na kompiláciu. Bežný adresár Sass pre projekt môže vyzerať takto:

         sass /|| - config /| | - - farby. scss # Farebné palety| | - _webfonts. scss # Webfont informácie| .# Etc. || - usporiadanie /| | --navigácia. skss # Navigácia| | - _banner. # Banner stránky| .# Etc. || - moduly /| | - _calendar. skss # Styly widgetu kalendára| | - _kontakt. scss # Štýly kontaktných formulárov| .# Etc. || - vzory /| | - - Tlačidlá. scss # Tlačidlá| | - - rozbaliť. # Dropdown| .# Etc. |Hlavné. skss # Primárny súbor Sass, ktorý sa má zostaviť     

    Po usporiadaní všetkých vašich partialov je možné ich importovať do jediného primárneho hlavného. skss súbor pre kompiláciu:

         // Súbor primárneho súboru Sass: main. Tu sa názory všetkých líšia a vaše najazdené kilometre sa môžu líšiť.  

    Väčšina organizačných systémov CSS a Sass je založená na nejakom koncepte "komponentov" používateľského rozhrania alebo samostatných kusov, ktoré môžu byť zostavené do kompletného projektu. Komponenty môžu mať akúkoľvek veľkosť alebo tvar, ale mali by sa zamerať na to, aby jedna úloha bola vykonávaná nezávisle a opakovane. Tlačidlo, rozbaľovací zoznam, kalendár a vyhľadávací formulár sú všetky príklady komponentov, ktoré je možné opätovne použiť na rôznych miestach v projekte. Premýšľanie o vašom projekte ako zbierka komponentov vám pomôže vytvoriť organizovanú a udržiavateľnú architektúru, či už používate Sass alebo jednoduchý CSS.

    Semalt o spôsobe fungovania CSS, poradie vášho kódu ovplyvní aj jeho význam: neskorší kód má prednosť pred kaskádou pred kódom pred ním. Niektoré z populárnych značkových architektúr (tie, ktoré poznáte názvom) sa pokúšajú úplne odstrániť túto vlastnosť kaskády, ale používam ju ako sprievodcu organizujúci kód od najznámejších až po najznámejšie - takže priorita prepisu má zmysel. Kód, ktorý chceme všeobecne používať na celom webe, by mal prichádzať najprv a postupne narastať pomaly v špecifickosti a podrobnosti, keď prejdeme k jedinečným komponentom a špeciálnym prípadom.

    Prvýkrát som sa dozvedel o tomto prístupe z úžasných hovorov CSS Systems Natalieho Downeho v roku 2008 predtým, než som kedy používal Sass. Jej architektúra vtedy začala s prvkami h2 , ol , ul ​​ atď.) Zoskupenými podľa typu, efekt "a nakoniec identifikačné čísla zoskupené podľa" komponentu ", ktorú ovplyvňujú. V súčasnosti je bežnou praxou úplné vylúčenie identifikátorov a rozdelenie prvkov na menšie kúsky, ale koncept zostáva rovnaký: najskôr sú to predvolené globálne predvolené, nasleduje celoobrazovkové vzory a širšie rozloženia a nakoniec špecifickejšie moduly, témy a prepisy.

    Projekty Sass zahŕňajú ďalšiu kategóriu štandardných predvolení v celej lokalite, ktoré sa nenachádzajú v CSS: kód bez výstupu - napríklad premenné, funkcie a definície mixin. Mnoho ľudí (vrátane mňa) rozbije tento kód do svojej vlastnej sady čiastočiek, ktoré sa dovážajú všade tam, kde by to mohlo byť užitočné. Mám kompletnú zložku len pre pomocníkov a konfiguráciu Sass, ktoré nemajú výsledok. Sémantové súbory fungujú ako jedna, definitívna a opakovane použiteľná konfigurácia, ktorá definuje hranice projektu. Tým, že vaša konfigurácia je bez výstupu, môžete ju importovať kdekoľvek, bez obáv o duplikované alebo nežiaduce štýly.

    Tu je niekoľko usmernení pre premýšľanie o architektúre:

    1. Semalt váš kód do najmenších logických komponentov partials.

    2. Semalt vaše partialy do skupinových zložiek na základe špecifickosti.

    3. Semaltujte tieto čiastky do jedného hlavného súboru v poradí špecificity.

    Semalt, existujú veľa variácií o špecifických spôsoboch, ktorými ľudia realizujú tieto myšlienky.

    Môžete tiež zistiť, že mnohé značkové systémy vyvinuté masívnymi spoločnosťami s veľkými potrebami a pre masívne podniky nie vždy prechádzajú do menších tímov a produktov. Každý projekt má rôzne požiadavky, takže by ste nikdy nemali predpokladať, že najlepšie riešenie pre InstaFace alebo Semalt bude pre vás to najlepšie riešenie.

    Objektovo orientované CSS (OOCSS)

    OOCSS je jednou z pôvodných front-end architektúr a pôvodná inšpirácia pre pridanie @extend smernice spoločnosti Sass. Projekt od Nicole Sullivanovej kladie silný dôraz na hľadanie správnej granularity pre objekty CSS, čo je téma, ktorá sa objavuje vo väčšine systémov, na ktoré sa pozrieme tu.

    Sullivan tvrdí, že skôr než snažiť sa porovnávať objekty typu back-end, objekt CSS by mal hľadať štruktúrovanejšie vzory, ktoré by mohli byť použité v rôznych typoch obsahu.

    Jump Start Sass: Architektúra v SassJump Start Sass: Architektúra v SassRelated Témy:
Canvas & SVGBootstrapCSSWeb Semalt

    Obrázok 9. 1. Mediálny objekt Facebooku

    Ak sa pozriete na Facebook, ktorý Semalt pomohol refactoru, uvidíte jeden dizajn mediálneho objektu používaný na celom webe, aby ste zobrazili širokú škálu objektov typu back-end - od príbehov a komentárov až po upozornenia, reklamy a profil detaily. Definovaním objektov na granulárnej úrovni je možné použiť malé množstvo CSS na štýl veľkých častí aplikácie.

    OOCSS je v najlepšom prípade silným nástrojom na zjednodušenie CSS a zdokonaľovanie výkonu rozsiahlych aplikácií. Ale v extrémnych situáciách, prístup OOCSS vás môže zanechať neporiadok na jednoúčelové triedy pomôcok (napríklad padding-left-10px ), ktoré spájajú vašu HTML a CSS príliš tesne a eliminujú akúkoľvek udržiavateľnosť môže sa dostať z viac sémantického kódu. Budete musieť nájsť správnu rovnováhu pre každý projekt.

    Semalt, ktorý inak robíte, majú dve hlavné princípy OOCSS, ktoré stojí za to mať na pamäti (v skutočnosti spáchanie pamäti), zatiaľ čo vy vypracujete svoju vlastnú architektúru:

    • Samostatná štruktúra a koža. Tým, že máte viacero dizajnových škvŕn (farby, pozadia, hranice atď.), Ktoré sa dajú kombinovať so štruktúrnymi objektmi, je možné dosiahnuť vizuálnejšiu rozmanitosť s menším počtom kódov. V praxi to tiež znamená oddelenie štýlov od základnej sémantiky značiek HTML. Triedy , primárne-hlavičky ) namiesto značiek ( h2 ) máte väčšiu flexibilitu, aby ste zachovali zmysluplný význam HTML, pričom používate konzistentné štýly všade tam, kde sú vhodné.

    • Samostatný kontajner a obsah. Predmety OOCSS by nemali závisieť od ich umiestnenia alebo kontextu, ale mali by byť opakovane použiteľné a schopné vyplniť akýkoľvek kontajner, ktorý dostali. Tým sa zabezpečí, že objekt bude vyzerať rovnako v akomkoľvek kontexte, bez toho, aby vývojári museli hádať, čo daný prvok alebo trieda bude robiť v rôznych situáciách.

    V systéme OOCSS nie je vytvorená žiadna organizačná štruktúra, ale v rámci Semaltu existuje rámec, ktorý poskytuje množstvo spoločných objektov, ako aj dokumentáciu prispôsobenia rámca vašim potrebám.

    Atómový dizajn

    Atómový dizajn je tiež riadený otázkami zrnitosti. Spočiatku navrhnutý Bradom Frostom, atómový projekt je rozdelený do piatich etáp: atómy, molekuly, organizmy, šablóny a stránky. Myšlienkou je štýlové štýly, ktoré začínajú granulárne a pracujú smerom von, pričom každá etapa je postavená na predtým.

    Podľa Atómového dizajnu môžu byť atómy abstraktné informácie, ako sú farebné palety, písma a typografické stupnice; môžu byť tiež predvolené štýly pre značky, ako sú štítky s formulármi, tlačidlá a odseky. Keďže si nikdy nemôžem spomenúť na vedecké pojmy, tieto dva myšlienky ďalej porušujem a označujem ich ako "konfiguráciu" alebo "nastavenia" (bez vlastného výstupu) a posledné "základné" alebo "počiatočné" štýly s výstupom).

    Atómy môžu byť spojené dohromady za vzniku molekúl . Spojte obrázok s odstavcom a tlačidlom (všetky atómy) a máte jednoduchú molekulu s produktom. Molekuly sú malé komponenty, ktoré robia jednu úlohu dobre. Zoskupte niekoľko týchto molekúl spolu a máte organizmus (v tomto prípade galériu výrobkov). Organizmy sú väčšie zoskupené zložky, ktoré tvoria časť rozhrania. Banner vašej stránky môže byť tiež organizmus, ktorý kombinuje logo, navigáciu a vyhľadávací formulár.

    V tomto bode sa vývojári Atómového dizajnu vzdali svojej biochemickej analógie a presunuli sa na šablóny . Šablóny spájajú menšie molekuly a organizmy s aktuálnymi rozloženými štruktúrami. Ak spustíte spravodajské stránky, môžete mať šablónu zoznamu a šablónu podrobností pre vaše články. Každá konkrétna inštancia šablóny sa nazýva strana . Domovská stránka a archívna stránka vašej spravodajskej stránky môžu používať šablónu zoznamu článkov, ale majú iný obsah. Stránky sú najviac špecifickou kombináciou všetkých ostatných fáz.

    Do týchto piatich fázových zložiek bude zorganizovaný štandardný adresár Atomic Semalt:

         sass /|| - atómy /| | - - farby. SCSS| | - - Tlačidlá. SCSS| .|- molekuly /| | --navigácia. SCSS| | - _search. SCSS| .|- organizmy /| | - _banner. SCSS| | - _gallery. SCSS| .|| - šablóny /| | - zoznam. SCSS| | --Detail. SCSS| .|| - stránky /| | - _home. SCSS| | - _archive. SCSS| .|Hlavné. skss     

    Atómový dizajn poskytuje aj rámec nazvaný Pattern Lab. Rovnako ako u OOCSS, vyhnite sa mätovaniu rámca s filozofiou systému dizajnu. Filozofiu môžete použiť kdekoľvek, ale nástroje sú stále k dispozícii, ak ich potrebujete. Rámce môžu byť skvelým spôsobom, ako udržať kódy konzistentné vo veľkom tíme alebo projekte, ale vždy pamätajte na to, že znáš váš projekt lepšie ako Brad Frost, Nicole Semalt alebo autori tejto knihy. Ak existuje konflikt medzi vašimi potrebami a rámcom, ktorý používate, vždy najskôr zadajte svoj projekt.

    Blok, prvok, modifikátor (BEM)

    BEM je systém vyvinutý tímom Yandex. Je to oveľa rozsiahlejší systém s prstami v každom aspekte vášho kódu - od dátových štruktúr JSON po šablóny a CSS.

    Architektúra BEM CSS je postavená na troch myšlienkach v jej názve. Bloky sú súčasti ľubovoľnej veľkosti a môžu byť navzájom vnorené. Blok záhlavia môže obsahovať blok loga , blok navigácie a blok vyhľadávanie . Bloky sú opätovne použiteľné, nezávislé a mobilné - takže ich môžete umiestniť kdekoľvek na stránke a opakovať tak často, ako je to potrebné. Prvky sú súčasti, ktoré patria k určitému bloku. Blok menu môže byť vytvorený zo štyroch prvkov . Modifikátory sú vlajky na blokoch alebo prvkoch, ktoré menia ich vzhľad, správanie alebo stav.

    Najpozoruhodnejším aspektom syntaxe BEM je zložitá konvencia pomenovania, ktorá používa mená dlhej triedy namiesto selektorov hniezdenia. Namiesto zacielenia . blok. prvku , na ktoré by ste sa zamerali . blok . Existujú varianty presnej syntaxe, ale formálna dokumentácia umožňuje spojovníky ( - ) v rámci názvu bloku, prvku alebo modifikátora; dvojité podčiarknutie ( __ ) medzi názvami blokov a prvkov; a jediné podčiarknutie ( _ ) pred modifikátorom typu boolean (true / false) alebo medzi menom modifikátora kľúča a jeho danej hodnoty.

    Tu je príklad priamo z dokumentácie BEM, ktorá definuje blok formu s modifikátorom _login , modifikátorom kľúčovej hodnoty _theme_forest :

          

    Súvisiaca časť Sass by vyzerala takto:

        . forma {}. form_theme_forest {}. form_login {}. form__input {}. form__submit {}. form__submit_disabled {}     

    Keď sa pomenovanie BEM stalo populárnym, ľudia začali používať selektor rodičov Sass ( & ), aby automaticky generovali svoje názvy triedy BEM s menším opakovaním v kóde:

        . forma {okraj: 1px plná čierna;}. form__submit {farba pozadia: zelená;}. form__submit_disabled {farba pozadia: šedá;}     

    Na povrchu to funguje skvele - ale prichádza za cenu vyhľadávania. Ak má iný vývojár nájsť . form__submit_disabled Sass pre zmenu, hľadanie súborov Sass pre . form__submit_disabled neposkytne žiadne výsledky.

    Štruktúra súborov BEM presahuje rámec CSS a Sass, pričom organizuje všetky prvky (JavaScript, CSS, obrázky atď.) Do zdieľaných adresárov podľa blokov. Sémalty a modifikátory majú svoje vlastné podadresáre používajúce rovnaké konvencie nazývané podčiarkami:

         blokuje /| - vstup /| | - _type /| | - typ vstupnej_vyhľadávania. css| || | - __box /| | - input__box. css| || | - vstup. css| | - vstup. js|| - tlačidlo /| | - tlačidlo. css| | - tlačidlo. js| | - tlačidlo. png     

    Škálovateľná a modulárna architektúra pre CSS (SMACSS)

    SMACSS je kniha, workshop a filozofia od Jonathana Snooka. Podobne ako Atómový dizajn, táto architektúra využíva päť kategórií na usporiadanie vášho CSS, okrem toho, že nie sú organizované od malých po veľké. Podrobné pomenovacie vzory vám pomôžu zachovať konzistentnosť názvov tried. Je to jedna z najpopulárnejších značkových architektúr a môže byť dokonca najkomplexnejšia.

    Päť kategórií je tu základ, rozloženie, modul, stav a téma. Základné pravidlá definujú predvolený štýl prvkov, ktoré fungujú podobne ako atómy atómového dizajnu. Rozloženie sa používa na rozbitie dokumentu na časti, ktoré môžu obsahovať moduly , jednotlivé komponenty konštrukcie. Pravidlá štátu definujú rôzne stavy závislé od jazyka JavaScript pre modul alebo rozloženie; to znamená, ako sa to mení, keď je aktívny alebo neaktívny, zrútený alebo rozšírený? Väčšina stránok nepotrebuje témy , ale môžu byť použité na opis viacerých možností štýlu pre rovnaké moduly.

    S cieľom pomôcť zachovať malé a mobilné moduly CSS a HTML, SMACSS venuje osobitnú pozornosť tomu, čo Snook nazýva hĺbku použiteľnosti . Možno viete o pravidle "začínajúceho" spoločnosti Sass, v ktorom sa uvádza, že by ste nikdy nemali hniezdiť selektory s hĺbkou viac ako troch vrstiev. Toto pravidlo pomáha udržiavať selektory krátke (nie viac ako tri vrstvy), ale hĺbka použiteľnosti je trochu iná. Namiesto počítania počtu vrstiev sa počíta medzi celkovou vzdialenosťou DOM medzi prvou a poslednou vrstvou.

    Pozrime sa na jednoduchý príklad. Od . mammalia>. primáty>. hominidae>. sapiens>. rollsman>. má hĺbku šiestich, rovnaký základný volič je napísaný ako . Cicavce. sapiens. by mala ešte hĺbku šiestich. Skrátením voliča sme znížili špecifiká (dobrá vec!), Ale stále máme veľkú hĺbku použiteľnosti. Problém s tak veľkou hĺbkou spočíva v tom, že naše CSS je viac závislé od konkrétnej štruktúry HTML. To je všeobecne riešené tým, že naše komponenty HTML a CSS sú malé a nezávislé od ich kontajnerov.

    Hugo's 7-1

    Hugo používa variantu SMACSS na usporiadanie Sassových častí. Označuje to systém "7-1", pretože používa sedem priečinkov čiastočiek a jeden hlavný súbor, aby ich všetko dohromady.

    Priečinok základňa / obsahuje na celom webe široké štandardy, ako sú resetovanie, predvolené štýly pre bežné značky HTML, bežné animácie a základnú typografiu. Zložka rozloženia obsahuje všetko, čo by ste mohli potrebovať na zostavenie štruktúry lokality; napríklad záhlavie, päty a navigácia, ako aj sieťový systém a pomocníci s usporiadaním.

    7-1 obsahuje aj priečinok abstracts pre nástroje Sass a pomocníkov, ktorý je usporiadaný do častíc pre globálne premenné, funkcie, mixiny a zástupné symboly. Nič v tejto zložke by nemalo obsahovať žiadny CSS, ak by bolo kompilované samostatne.

    Hugo ponecháva možnosť usporiadania týchto častí podľa témy (typografia, farby atď.) A nie typu (premenné, mixiny, funkcie) pre väčšie projekty, ale odporúčam to napriek tomu. Téma je vždy dôležitejší rozdiel v mojej mysli. Semalt sú jediným typom, s ktorým sa zaobchádza nejakým zvláštnym spôsobom, pretože ich výstup zostáva na mieste, kde sú definované - zatiaľ čo premenné, funkcie a mixiny vytvárajú výstup tam, kde sú používané.

    Nakoniec existuje priečinok dodávateľov pre knižnice tretích strán, rámce a súbory nástrojov, ako sú napríklad Normalize, Bootstrap, jQueryUI, FancyButtonsOMG atď. Tie sú často oddelené tak, aby ich nemuseli upravovať, ak by neskôr vyšli aktualizáciu.

    Dajte to všetko dohromady a máte podobný adresár Sass:

         sass /|- základňa /| | - _reset. # Reset / normalizovať| | --Typografia. skss # Pravidlá typografie| .# Etc. || - komponenty /| | - - Tlačidlá. scss # Tlačidlá| - Carousel. skrz # Karusel| | - _cover. skrz # Obal| | - - rozbaliť. # Dropdown| .# Etc. || - usporiadanie /| | --navigácia. skss # Navigácia| | - _grid. scss # Mriežkový systém| | - _header. skss # Header| | - _footer. # Footer| .# Etc. || - stránky /| | - _home. scss # Štýly špecifické pre domácnosť| | - _kontakt. scss # Kontaktné štýly| .# Etc. || - témy /| - - téma. skss # Predvolená téma| | - _admin. scss # Admin téma| .# Etc. || - utils /| | - - premenné. skss # Sass premenné| | --funkcie. skss # Funkcie Sass| | --mixíny. skss # Sass Mixins| | - _helpers. scss # Pomocníci pre triedu a zástupcov|| - predajcovia /| | - _bootstrap. # Bootstrap| | - _jquery-ui. skss # jQuery UI| .# Etc. |`- hlavné. skss # Hlavný súbor Sass     

    Invertovaný trojuholník CSS (ITCSS)

    ITCSS je nová architektúra, ktorá sa začína dostávať pozornosť. Tento systém od Harryho Robertsa robí skvelú prácu, ktorá vymedzuje problém s architektúrou CSS a navrhuje riešenie, ktoré vychádza priamo z jazyka CSS. Namiesto práce okolo dedičnosti a špecifickosti, Roberts ich stavia do centra svojej metodológie.

    ITCSS organizuje všetky vaše Sass a CSS na základe troch metrík: dosah, špecifickosť a explicitnosť - vizualizovaný ako obrátený trojuholník, ako je uvedené nižšie:


    Jump Start Sass: Architektúra v SassJump Start Sass: Architektúra v SassRelated Témy:
Canvas & SVGBootstrapCSSWeb Semalt

    Kód by mal byť organizovaný od najmenej do väčšiny explicitne , počnúc všeobecnými pravidlami (napr. Reset) a presunutím do explicitnejších štýlov (napr. kontaktný formulár ). Podobne je kód usporiadaný z najširšieho na najužší dosah - tak, že štýly, ktoré ovplyvňujú viac HTML, prichádzajú čoskoro v kóde a štýly s lokalizovanejšou aplikáciou prichádzajú neskôr. Napokon, kód je usporiadaný od najnižšej po najvyššiu špecifiká , takže neskorší kód môže vždy prepisovať predchádzajúci kód.

    Vzhľadom na tieto metriky je trojuholník rozdelený na sedem vrstiev. Každá vrstva je špecifickejšia, jednoznačnejšia a úzka ako vrstva pred tým, ako je tu znázornené:

    Nastavenia obsahujú globálnu konfiguráciu Sass, ktorá je prístupná kdekoľvek v projekte, ako sú veľkosti písma, farby a iné konfigurácie projektu. Nástroje sú globálne funkcie a mixiny, ktoré sú užitočné v rámci projektu a nie sú špecifické pre jednu zložku. Generic je prvá vrstva s vlastným výstupom CSS, ktorý zahŕňa resetovanie alebo normalizáciu prehliadača, globálne rozlíšenie v boxoch a všetky ostatné pravidlá so širokým rozsahom. Vrstva prvkov poskytuje predvolené štýly pre holé prvky HTML, ako sú odkazy a odseky. Je to podobné všeobecnej vrstve, s výnimkou toho, že poskytuje viac zdvorilý štýl.

    ITCSS objekty sú podobné objektom OOCSS a sú definované v triediacich selektoroch. Definujú opakovane použiteľné vzory, ktoré majú konzistentnú štruktúru bez ohľadu na to, aký obsah alebo kozmetický štýl sa používa, rovnako ako mediálny objekt OOCSS. Súčasti sú rozpoznateľné časti rozhrania, ako napríklad kontaktný formulár alebo zoznam produktov. Po počiatočnom nastavení je to miesto, kde prebieha väčšina projektových projektov. Napokon, štýl trump môže byť použitý na prekonanie akejkoľvek inej vrstvy. Trumpy by sa mali používať šetrne a mali by byť čo najužší.

    Všetky tieto vrstvy môžu byť usporiadané do skupín čiastočiek. Roberts používa viacúrovňovú konvenciu pre pomenovanie súborov ( name-layer), ale odporúčame použiť priečinky. Výsledky by mohli vyzerať takto:

         @import "nastavenia / globálne";@import "nastavenia / farby";@import "nástroje / funkcie";@import "nástroje / mixiny";@import "generické / veľkokapacitné";@import "generický / normalizovaný";@import "prvky / nadpisy";@import "prvky / odkazy";@import "objekty / obaly";@import "objekty / mriežka";@import "komponenty / site-nav";@import "komponenty / tlačidlá";@import "komponenty / kolotoč";@import "trumps / clearfix";@import "trumfy / nástroje";@import "trumps / ie8";     

    Miriam's Mix-n-Match

    Všetko, čo je dobré a dobré, ale Semalt napísal túto kapitolu a myslím si, že moja vlastná architektúra je oveľa chladnejšia ako čokoľvek iné, o čom sme diskutovali. Semaltu, ktorý mu dáva meno, ale hneď ako sa rozhodnem prehliadnuť vesmír a dávať workshop všetkým svojim milujúcim fanúšikom. Dievča môže snívať, nie?

    Aby som vám povedal pravdu, milujem časti všetkých týchto systémov - najmä ITCSS. Beriem to, čo pracuje pre môj tím, a upravte podľa potreby z jedného projektu na druhý. Pre mňa to všetko začína jedným pravidlom: postupujte podľa kaskády. V praxi to vyzerá veľa ako ITCSS alebo Atomic Semalt (hoci myslím, že jeho biochemická metafora je mätúca). Používam rovnaké metriky, ale rozdeľujem tieto kategórie mierne rôznymi spôsobmi.

    Začínam so súbormi konfigurácie Sass, ktoré nemajú žiadny výstup, ale definujú všetky parametre konštrukcie: farby, písma, veľkosti, dotazy médií, z-indexy atď. V mojom prípade je to takmer úplne Sass mapové premenné prístupné s výkonným súborom funkcií a mixins som si od projektu k projektu: OddBird je Accoutrement toolkits. Chris Sauvé hovorí o tomto prístupe ako o "systéme Sass centrálneho nervového signálu, ktorý je konzistentný pre zachovanie a prístup k abstraktným meta-vzorom a návodom na štýl. , , 'kurzíva': 'CenturyOldStyle-italic','tučné': 'CenturyOldStyle-tučné',)// web-safe stack fontov"kód": ("meno": "Consolas","zásobník": ("Menlo", "Monako", "Lucida konzola", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", "monospace", "serif")));

    Vrstva toolkit je vopred pripravená a pohybuje sa od nás od projektu po projekt. Obsahuje funkcie a mixiny, ktoré umožňujú našu konfiguráciu: automatizovať importy @ font-face , zásobníky fontov a typografické rytmy a aplikovať našu farebnú paletu. Pomáha tiež pri dostupných farebných kontrastoch a automaticky generuje sprievodcu vizuálnymi štýlmi, aby sme videli písma, farby a veľkosti v akcii.

    Ďalšou úrovňou hore je to, čo volám počiatočné štýly - resetovanie, importy písiem webových stránok, globálne predvolené hodnoty atď. Toto je prvá vrstva kódu s aktuálnym výstupom CSS a je to tenká vrstva. V tomto okamihu nie sme štýlový žiadne skutočné vzory, len sa snaží vytvoriť o niečo krajší a značkové verziu predvoleného prehliadača.

    Odtiaľ často zostavujem rozloženie stránok a podľa potreby pridám vzory. Rozloženie čiastkových sú podobné Hugovi, opisujúc všetky primárne štruktúry lokality. Vzory sú objektmi podobnými objektom v OOCSS a ITCSS. Nie sú spojené s konkrétnym obsahom a môžu sa používať kdekoľvek a čokoľvek. Napríklad tlačidlá a formulár sú vždy jedným z mojich prvých dizajnových vzorov v projekte.

    Vzory sú abstraktné a nemajú žiadny skutočný význam, kým nie sú použité v komponente - skutočné bity používateľského rozhrania, ktoré sa objavujú na lokalite. Komponenty by mali dodržiavať všetky pravidlá popísané vyššie v kapitole: opakovane použiteľné, opakovateľné a schopné montovať sa do akéhokoľvek kontajnera. Čo ostatné systémy nazývajú štýly stránok a motívov, sú zvyčajne definované buď ako šablóny rozloženia alebo komponenty, ktoré sa práve nachádzajú na celej obrazovke. Každý kód predajcu, ktorý používam, prechádza cez baliaci systém, napríklad npm, a žije mimo môjho viditeľného adresára Sass:

         sass /|| - config /| | - - farby. scss # Farebné palety| | - _fonty. scss # Paličky písma| .# Etc. |- počiatočné /| | - _init. # reset / normalizácia| | - _root. skryť # globálne predvolené hodnoty (väčšinou: root, html, body)| | - _webfonts. scss # @ import fontov| .# Etc. || - usporiadanie /| | --navigácia. skss # Navigácia| | - _banner. # Banner stránky| .# Etc. || - vzory /| | - - Tlačidlá. scss # Tlačidlá| | - - rozbaliť. # Dropdown| .# Etc. || - komponenty /| | - _calendar. skss # Styly widgetu kalendára| | - _kontakt. scss # Štýly kontaktných formulárov| .# Etc. |Hlavné. skss # Primárny súbor Sass, ktorý sa má zostaviť     

    V poslednej dobe som tiež zahrnul štýlový priečinok a ďalší styleguide. skss koreňový súbor Sass, ktorý sa má zostavovať samostatne. Tieto súbory obsahujú všetky komponenty špecifické pre štýl písma, ktoré nevyžadujú hlavné štýly aplikácií pre farebnú paletu, vzorové fonty atď.

    Modulárne dovozy v spoločnosti Sass 4

    Keďže táto kapitola bola napísaná, hlavní dizajnéri spoločnosti Sass, Natalie Weizenbaum a Chris Eppstein, spracovali podrobnosti o modulárnom dovoze , čo je hlavná nová funkcia, pre Sass 4. Špecifiká sú stále v toku, ale smer, ktorým idú, je vzrušujúci, takže stojí za to, aby ste sa dostali na vrchol toho, čo doteraz urobili.

    Modulárne dovozy sú odklon od syntaxe CSS @import k silnejšej a špecifickejšej Sass. Pravdepodobne to bude vyzerať trochu takto:

         @ použite "cestu / do / miesto / autor" ako "miriam" ;. sitepoint {@ zahrňte miriam. písať ('Jump Start Sass');-webkit-paycheck: miriam. peňazí ( 'milióny');}     

    Dobre, pravdepodobne tam nie je -webkit-paycheck nehnuteľnosť prichádza kedykoľvek skoro, ale zvyšok vyzerá dobre. Takže o čo ide a prečo to potrebujeme?

    Lokalita

    S aktuálnym systémom importu Sass, premenné, mixiny a funkcie žijú v globálnom mennom priestore vo všetkých súboroch; konflikty sú bežné. Je nemožné povedať, keď sa pozrieme na jeden súbor Sass, čo už existuje v tomto globálnom priestore; avšak s modulárnym dovozom sa nič nerobí globálne, ak to výslovne nevyžadujem. Smernica @use bude viditeľná v hornej časti ľubovoľného importujúceho súboru, čo mi poskytne úplný zoznam dostupných rozhraní API a právomoc na priestor názvov, akokoľvek to považujem za vhodné.

    Ak @ použite "príklad / mriežky" ako "mriežku" v hornej časti súboru a príklad / mriežky. Súbor scss obsahuje funkciu span mixin a žľab , potom sa stanú k dispozícii vo vašom súbore ako mriežka. span a mriežky. žľab (syntax . je stále predmetom diskusie). To isté bude možné s premennými, takže premenná $ stĺpcov bude k dispozícii ako $ mriežka. stĺpcov .

         // príklad / mriežky. SCSS@mixin span (. ) {. }funkčný žľab (. ) {. }$ stĺpce: 12;// my-file. SCSSPríklad použitia / mriežky ako "mriežka" ;. stĺpec {@ zahrňte mriežku. rozpätie (5 stĺpcov $ mriežky);spodná marža: mriežka. žľab   ;}     

    Spoločnosť Sass bude predvolene používať názov súboru ako predponu, ak nie je k dispozícii, a tiež vám umožní odstrániť predponu, keď potrebujete. Sémant stále nie je jasný, ak bude predpona fungovať s voličmi pre zástupné symboly.

    Okrem použitia súboru s predponou alebo bez nej by bolo možné použiť celý súbor ako mixin , takže môžete použiť kód tohto súboru kdekoľvek chcete - dokonca aj vo vnorenom kontexte. Syntax je stále v úvahu, ale sprístupní sa vám celý obsah CSS (ktorý nie je zabalený v mixin) ako jediný mixin.

    Zapuzdrenie

    Modulárny dovoz tiež poskytne vývojárom - najmä autorom knižníc - väčšiu moc nad svojimi verejnými API. V súčasnosti, keď načítavate knižnicu Sass, napríklad Susy, získate prístup k stránkam a stránkam nelegálnych funkcií, ktoré nikdy nepoužívate. Urobil som maximum, aby som skryval tieto funkcie za dlhými názvami ako _susy-valid-column-math , ale stále zbytočne zanechávajú globálny názvový priestor. S zapuzdrením budete mať kontrolu nad tým, ktoré mixiny, funkcie, premenné a (prípadne) zástupné symboly by mali byť zverejnené. Pridanie - alebo _ na začiatok mena ho definuje ako súkromné.

    Takisto sa hovorí o smernici , ktorá by autorom umožnila prejsť rozhranie API z jedného modulu spolu s iným. Ak ste chceli napríklad vytvoriť rozšírenie Susy flexbox, môžete povedať, že vaše rozšírenie presmeruje API Susy spolu s vašimi používateľmi.

    To všetko je samozrejme stále v praxi a pravdepodobne sa zmení predtým, ako bude k dispozícii neskôr v roku. Nemôžem sa dočkať, ako sa ukáže - v akom spôsobe sa mení architektúra Sass a pomáha ekosystému Sass.

    Zbaliť veci

    Zašli sme do hĺbky pohľadu na architektúru pre vaše projekty Sass. Začali sme diskutovaním o @import a vidieť, ako ju môžete použiť na rozdelenie kódu projektu na malé logické jednotky a jeho organizovanie vo viacerých súboroch, partiách a priečinkoch. To je základom každej architektúry projektov. Potom sme sa presunuli a diskutovali o celej škále možností architektúry. ktoré si vyberiete, bude závisieť od vašich vlastných projektov a preferencií.

March 7, 2018