O introducere în șabloane subțiri

De ce Slim?

Dacă trăiești și respiri în pământul Ruby și l-ai dat lui Haml o lovitură înainte, probabil că deja vei cunoaște câteva argumente pe care le voi face. Cred că este totuși o idee bună să urmăriți pentru că ați fi decis deja să folosiți un motor templating mai minimalist și aș vrea să vedeți avantajele ofertelor Slim precum și.

Înainte să ne aruncăm de ce Slim este rece, vreau să acoperim ceea ce este de fapt Slim și ce face pentru tine. Documentația însumează acest lucru destul de frumos: 

"Slim este un motor rapid și ușor de template cu suport pentru Rails 3 și 4". 

Puteți, de asemenea, să-l utilizați cu Sinatra și chiar cu Rack simplu. Deci, dacă sunteți puțin obosit să utilizați ERB pentru a scrie șabloanele dvs. sau nu sunteți foarte mulțumiți de ceea ce Haml are de oferit, atunci Slim este exact copacul potrivit pentru a lătrat.

În ceea ce privește sintaxa, oamenii din spatele lui Slim înceariseră să găsească un răspuns la următoarea întrebare: "Care este minimul necesar pentru a face acest lucru?" Pentru a scrie cantitatea minimă de cod de front-end posibil, acest lucru pare suna drept întrebare de întrebat. 

Slim oferă o soluție perfectă pentru toate temele tale? Probabil nu, dar sincer, ar putea oferi doar cel mai bun! Este ușor de învățat? Cred că da, dar e greu să știi ce cred ceilalți oameni ușor. Aș spune însă asta: este nevoie de ceva pentru a vă obișnui, dar cu siguranță nu există știință despre rachete. Deci, nu este nevoie sa te simti intimidat daca esti un pic nou in partea de codificare a lucrurilor. Vrei să te simți bine cu asta? Absolut! 

Deci, de ce Slim? Răspunsul este destul de simplu, cred. Marcajul dvs. trebuie să fie cât mai lizibil și mai frumos posibil! Ar trebui să lucrați bine cu el, și cu cât mai puțin timp aveți nevoie pentru a cheltui brodarea prin tone de etichetă, cu atât mai bine. 

Ce este frumos, ai putea întreba? Desigur, nu este un răspuns pe care voi încerca să-l rezolv, dar a fi minim în această privință rareori dăunează. Ce-ar fi să devenim super-cripți, deoarece motorul templating încearcă să fie super inteligent în a fi minim? Aceasta este o preocupare corectă și veți fi bucuroși să auzim că echipa din spatele lui Slim o ia foarte în serios. Ei vor să înlăture cât mai mult posibil din vechiul HTML vechi și să dezvăluie doar părțile esențiale - toate fără a deveni prea criptice. Echipa lor de bază încearcă să meargă chiar și un pas dincolo de asta, și sunt cu adevărat preocupați de estetica codului Slim. Destul de bine, nu crezi? 

Nu este mult mai plăcut dacă puteți să aruncați o privire asupra unui șablon și să puteți digera cu ușurință ce se întâmplă? Șabloanele pot deveni un loc foarte "aglomerat" - chiar dacă utilizați inteligent partiale - și, ca o consecință, doriți să reduceți nivelul zgomotului la minimum. 

Ați încercat probabil sintaxa Sass (.sass) indentată? Sper că ai, pentru că e doar o nebunie! Dacă da, probabil că veți avea o apreciere similară pentru ceea ce Slim are de oferit. Este, de asemenea, sensibil la spațiul liber, ceea ce duce la un cod foarte precis și ușor de citit. Să luăm această bucată de cod HTML / ERB și să o comparăm cu Slim.

   <%= full_title(yield(:title)) %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true%> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true%> <%= csrf_meta_tags %>    
<%= link_to "sample app", 'root_path', id: "logo" %>
<%= yield %>

Să ne uităm la echivalentul Slim:

doctype html html titlu titlu = full_title (randament (: title)) = stilesheet_link_tag "aplicație", media: 'all', 'data-turbolinks-track' = = true-javascript_include_tag ' > true = csrf_meta_tags corpul header.navbar .logo = link_to "exemplul aplicației", "root_path", id: "logo" nav ul.navbar-right li = link_to " help_path 'li = link_to "Log in", "login_path" .main = randament

Primul lucru pe care oamenii îl recunosc adesea este "Hei, nu etichete de închidere!" Cool? Sigur, nu sunteți obișnuit cu sintaxa, dar ar putea părea un pic străin la început, dar sunt sigur că puteți aprecia cât de succintă este ea. Nu există paranteze unghiulare stânga / dreaptă și nu este nevoie să scriem divizii și selectorii minimaliști, deci în loc să ne concentrăm pe numele pe care îl au ID-urile și clasele. Se simte mult mai puțin dezordonat și mai organizat, nu crezi?

Pentru comparație, aici este versiunea Haml. Nu este cu adevărat o șansă ca Haml să-l bată - tocmai vă arată cât de asemănătoare este, dar și că Slim merge un pas mai departe cu alegerea sintaxei minime. Rezultatul este că e chiar mai elegant decât Haml, cred. 

De ce să merg atât de puțin, dar încă mă face să tip % semnează peste tot? Degetul meu arătător nu are nicio motivație specială pentru a apuca Shift-5 tot timpul. Puteți personaliza acest comportament? Foarte sigur, sau cel puțin așa sper! Dar designul pare un pic greșit în această privință și mai puțin spartan în comparație cu Slim. Îmi dau seama că și asta este o chestiune de gust, totuși, așa că o las la asta.

Haml

!!! % data = turbolinks-track '=> true = javascript_include_tag' cerere ',' data-turbolinks-track ' => true = csrf_meta_tags% body% header.navbar .logo = link_to "exemple de aplicații", "root_path"% id = link_to "Help", "help_path"% li = link_to "Log in", "login_path" .main = randament

Înainte de a sari în părțile din carne, permiteți-mi să fiu pușcă pentru o clipă și rezumați ceea ce cred că face învățarea Slim o investiție demnă de timp:

  • Este rapid.
  • Foarte ușor de citit.
  • Are o sintaxă inteligentă.
  • Estetica sa este minimă.
  • Este foarte configurabil
  • E ușor de indexat.
  • Este templul la nivel de șef.
  • Este distractiv să scrii și să arăți de droguri.
  • Ștergerea automată a HTML-ului în mod implicit.
  • Super frumos Rails și integrarea Sinatra.
  • Șabloane foarte minime, ușor de întreținut.
  • Este extinsă și vă permite să scrieți plugin-uri și extensii.
  • Există un mod logicless pentru momentele când doriți să trimiteți cod HTML, dar nu aveți niciun motiv să includeți codul Ruby.
  • Are comenzi rapide configurabile pentru etichete - care este o caracteristică destul de frumos pentru a personaliza motorul la nevoile dvs..
  • Și în sfârșit, deoarece sintaxa lui Slim este ghidată de un mott foarte cool: "Care este minimul necesar pentru a face acest lucru". Este foarte greu să nu-ți placă.

Ce sunt șabloanele?

În ceea ce privește experiența de programare, dacă vă considerați a fi mai mult pe partea de început a lucrurilor, voi încerca să vă dau o călătorie rapidă înainte de a începe să folosim Slim. Atunci când oamenii vorbesc despre șabloane, ele înseamnă, în general, o marcaj HTML simplu, cu cod dinamic care este adesea folosit pentru redarea fluxului, injectarea de obiecte sau redarea parțial șablon (parțial). De exemplu, atunci când un controler vă oferă variabile de instanță care pot fi folosite de vizualizare prin substituție variabilă (instanță) pentru a afișa atributele acelui obiect. Toate acestea se întâmplă prin procesorul de șabloane ales de dvs. - ERB, Haml, Slim și altele asemănătoare - care combină toate șabloanele web într-o pagină web finală. Șabloanele pot fi, de asemenea, folosite pentru a genera fluxuri XML și RSS, precum și alte forme de fișiere text structurate.

Cu șabloane, puteți defini diferite "machete" care manipulează anumite părți ale site-ului dvs. web, precum și datele care trebuie să fie afișate sistematic cu cea mai mică cantitate de repetări. De când ați început să jucați cu Rails, cu siguranță ați folosit ERB pentru exact aceste scenarii. ERB ia porțiunile de text simplu, le transmite către documentul final și procesează numai codul care este marcat ca atare. Nu intru în detalii cum funcționează ERB și presupuneți că aveți o înțelegere de bază înainte să vă aruncați în Slim. Nu aș recomanda să folosiți Slim dacă nu sunteți deja familiarizat cu modul implicit de template al lui Rails, deoarece veți avea un timp mult mai ușor de jucat cu Slim dacă înțelegeți cum funcționează acest lucru din cutie în Rails. 

Mai jos este un exemplu de bază ERB al unui șablon care afișează o colecție de misiuni asociate cu un șablon @agent obiect. Direct dedesubt, folosește de asemenea o metodă de la un Ruby Gem pentru a paginaliza @missions Colectie.

<% if @agent.missions.any? %> 

Misiuni (<%= @agent.missions.count %>)

    <%= render @missions %>
<%= will_paginate @missions %> <% end %>

Aceasta este o mică secțiune a unui șablon care arată frumos că nu este altceva decât o componentă HTML statică care are niște injecții dinamice de la un cod Ruby. Dacă nu am folosi șabloane de acest gen, ar trebui să scriem manual codul pentru fiecare obiect nou pe care dorim să-l afișăm pe o pagină. Nu sunt sigur de tine, dar nu-mi pot imagina un cosmar mai mare sau pierdere de timp decât asta. Șabloanele ne oferă un instrument util pentru a face din stratul nostru vizual inteligent și dinamic fără a ne repeta. 

După cum puteți vedea și din acest exemplu, șabloanele permit să folosim șabloane parțiale pe care le putem face acolo unde este necesar. Aici am avea _mission.html.erb parțial undeva, ceea ce ne ajută să repetăm ​​o colecție de @misiune obiecte, care, la rândul lor, sunt enumerate în interiorul nostru misiuni clasă.

După cum puteți vedea, șabloanele nu sunt nimic magic, dar sunt extrem de la îndemână pentru ca dezvoltarea aplicațiilor web să fie mult mai eficientă și mai organizată. Am vrut doar să mă asigur că suntem pe aceeași pagină cu asta înainte de a face scufundări în Slim.

Despre ERB & Haml?

Dacă vă place să folosiți aceste instrumente, este perfect. Nimic nu este în neregulă cu asta. Lucrul este că, dacă căutați ceva mai inteligent, care este mai puțin minimalist, este greu să găsiți ceva care merge mai departe decât Slim. Pentru mine, este cea mai raționalizată soluție templantă din țara Ruby despre care știu. Toate funcționează bine, deci este o chestiune de preferință personală.

Noțiuni de bază

Subțire cu șine

Nu este o surpriză, există o bijuterie pentru asta.

Gemfile

panglica "subțire"

Coajă

instalare pachet

Asta e, suntem cu toții pregătiți. Deoarece ați instalat această bijuterie, Slim va fi încărcat și inițializat ori de câte ori aplicația dvs. se încarcă. De asemenea, pentru confortul dvs., atunci când generați controlorii prin șinele generează controler, veți obține în mod automat .subţire vizualizați fișierele pentru vizualizarea dvs.-.html.erb fișiere nu mai mult. Funcționează la fel cu schele, dar sper că nu le folosiți cu adevărat!

Pentru a demonstra acest comportament pentru oameni care sunt noi în folosirea generatoarelor Rails, voi crea un controler pentru operatorii de servicii secrete care are toate acțiunile controlerului standard REST:

Coajă

șine genera controler SecretServiceOperatives index nou crea spectacol edita actualizare distruge

Printre altele, veți obține toate .subţire fișierele de care aveți nevoie. Rails pune un plus .html și acolo - puteți să scăpați de asta dacă vă deranjează bineînțeles. Tot ce contează este faptul că extensia subțire a fișierului este deja acolo și că este pregătită pentru preprocesarea codului dvs. Slim. ura!

... invocați aplicații / vizualizări / secret_service_operatives / create.html.slim crea aplicații / vizualizări / secret_service_operatives / create.html.slim crea aplicații / secret_service_operatives / show.html.slim crea app / views / secret_service_operatives / edit.html.slim crea app / views / secret_service_operatives / update.html.slim crea app / views / secret_service_operatives / destroy.html.slim ... 

Următorul pas ar fi să deschideți aspectul aplicației și să înlocuiți codul de boiler cu ceva Slim. De asemenea, nu uitați să redenumiți application.html.erb fișier la application.slim (sau application.html.slim daca vrei). Am mai slăbit puțin - chiar dacă numele fișierului a pierdut o anumită greutate.

app / opinii / machete / application.slim

doctype html html head title = stylesheet_link_tag "aplicație", media: 'toate', 'data-turbolinks-track' => true = javascript_include_tag 'aplicație', 'data-turbolinks-track' => true = csrf_meta_tags header.navbar. logo = link_to "Spy app", "root_path", id: "logo" nav ul.navbar-right li = link_to "Home", "root_path" li = link_to "Help" , 'sign_up_path' li = link_to "Log in", 'login_path' .main h1.welcome Bine ați venit la Șabloane Șabloane Slim Level! = randament

Nimic fantezist, dar un bun început - și la fel de ușor cum cred eu.

screenshot

Ca o notă laterală, dacă sunteți vreodată curioși ce versiune a bijuteriei pe care ați instalat-o, această mică comandă vă va spune - este utilă și pentru orice bijuterie, bineînțeles:

Coajă

bundle arată "slim-șine" 

Acesta vă spune unde este stocată și ce versiune are în prezent această bijuterie. Rezultatul arată astfel:

/Library/Ruby/Gems/2.3.0/gems/slim-rails-3.0.1

Subțire cu Sinatra

Pentru entuziaștii de la Sinatra printre voi, am vrut să menționez cum să încep și eu. Mai întâi trebuie să instalăm bijuteria, desigur.

Coajă

bijuterie instalați subțire

Și după aceea, aproape că ați terminat. În aplicația dvs. Sinatra, trebuie doar să solicitați Slim și sunteți bine să mergeți.

some_sinatra_app.rb

solicitați 'sinatra' necesită 'slim' get ('/') slim: index __END__ @@ index html html titlu titlu Slim Templates corp h1

Aici am folosit un șablon inline pentru a scrie marcajul Slim în același fișier și i-am spus lui Sinatra că vreau să folosesc Slim pentru fișierul index atunci când face o obține cereți calea principală. A trebuit doar să fac referire la șablonul inline din interiorul unui bloc de corzi curbate. Ceea ce vedeți mai jos @@ index-care semnifică șablonul de index - este o sintaxă Slim subțire sensibilă la culoarea albă.

screenshot

Este timpul să vă arătăm cum să scrieți niște Slim.

Sintaxă

Etichete HTML

HTML Declaraţie

Să începem cu cea mai simplă, declarația doctype. După cum probabil știți și ați uitat deja, acest lucru trebuie să fie declarat în partea de sus a documentului HTML - înainte de actual etichetă. FYI, nu este o etichetă HTML și instruiește browser-ul despre versiunea paginii HTML. 

Printre versiunile diferite pentru , există doar unul pentru HTML5: -mulțumesc lui Dumnezeu! - ceea ce primim când scriem doctype html sau doctype 5 în Slim.

doctype html html capul doctype 5 html cap

Codul de comandă pentru ID # și scurtături de clasă .

Scrierea codului de front-end înseamnă o tona de clase și tot atât de puține id-uri - sper. Pentru a evita repetarea acestor probleme, Slim vă întâlnește mai mult decât jumătate și vă permite să scurtcircuitați procesul în întregime. Lasă-mă să-ți arăt ce vreau să spun. Luați următorul cod Slim:

#logo h1.header .vil wrap-ul h2 # author-name ul.books

Aceasta se compilează la această ieșire HTML:

    După cum puteți vedea, punctul sugerează lui Slim că doriți să utilizați o clasă, iar numele care urmează este ceea ce doriți să-l numiți. Același lucru este valabil și pentru ID-uri - pur și simplu utilizați simbolul hash (cunoscut și sub numele de literă) care face truc. Cititorii cu adevărat recunoscuți că versiunile fără etichetă de vârf declanșează crearea unui div cu clasa corespunzătoare sau id-care poate fi văzut pentru

    și
    . Destul de la îndemână, nu crezi?

    De asemenea, puteți fi mai expresiv în codul dvs. Slim, dacă doriți. Nimeni nu te împiedică să îți scrii mâna cu clasele tale bune. Dacă vă simțiți cumva atașați de asta, du-te! Îmi place versiunea mai succintă, deoarece mă lasă de asemenea să evit să citez ghilimele și textul repetat tot timpul. Depinde de tine - orice te face fericit! Codul de mai jos este un pic mai detaliat, dar redă același HTML ca mai sus:

    Subţire:

    div h1 div h2 ul

    Nu este o chestie de frumusețe? Imaginați-vă toate aceste etichete HTML îngrozitoare pe care nu aveți nevoie să le scrieți, plus eliminarea tuturor parantezelor unghiulare în exces. Sigur, editorul dvs. de cod poate face o mulțime de lucru pentru dvs., de asemenea, dar editorul dvs., de asemenea, citiți codul pentru tine? Exact! 

    Când vă întoarceți să citiți codul, doriți și un document succint care este foarte ușor de digerat vizual. Cred că acest exemplu simplu arată cel mai bine ce poate oferi un instrument ca Slim. Acestea sunt aceste lucruri mici, care adună la un instrument excelent și timepast pe termen lung. Chiar dacă îl utilizați doar pentru acea funcționalitate și ignorați celelalte funcții mai avansate pentru moment, transformarea comenzii la Slim ar face deja mare plăcere.

    Etichete inline

    Să presupunem că aveți mai multe etichete pe care doriți să le aveți în linie pentru a fi mai compacte sau pentru orice altceva. Deci, în loc să rupeți la o linie nouă, le puteți lansa separând aceste etichete cu un colon :. Ambele exemple de mai jos oferă aceeași ieșire.

    Subţire:

    ul li.first a href = "/ a" Un link li a href = "/ b" link B ul li.first: a href = "/ a"

    Executarea HTML:

    • O legătură
    • B link

    Cea de-a doua versiune este mult mai mică datorită etichetelor inspirate și ar fi preferința mea. La urma urmei, compactul este bun, nu? Cred că acest caz arată frumos că Slim echilibrează în mod egal între compact și criptic. Da, este nevoie să vă obișnuiți și, în unele cazuri, ambalajele de atribute suplimentare sunt utile (vedeți mai multe despre împachetările de mai jos). Sunați-mă nebun, dar eu sunt destul de sigur că veți citi Slim ca marcajul HTML obișnuit într-un jiffy.

    Conținutul textului

    Scrierea textului este la fel de ușor ca și cum v-ați aștepta, desigur. Doar adăugați-o după etichetele dvs..

    Subţire:

    h1 # welcome-header Mesajul dvs. de bun venit intră aici!

    Executarea HTML:

    Mesajul dvs. de bun venit intră aici!

    Nimic altceva de adăugat, ușor cum poate fi!

    atribute

    Atributele HTML, care oferă informații suplimentare despre etichete, pot fi incluse după cum urmează:

    Subţire:

    a href = "http://slim-lang.com" title = "Pagina de pornire Slim" Vizitați pagina de pornire Slim img alt = "James Bond prezintă împreună cu M" src = "images_8 / an-introduction-to-slim-templates_3. png "/

    Executarea HTML:

    http://slim-lang.com "title =" Pagina de start Slim "> Accesați pagina de pornire Slim James Bond prezintă împreună cu M

    Puteți să le lanțați în mod substanțial și Slim îl va separa de conținutul textului - dacă este prezent. Dacă te uiți atent, poți vedea asta img tag-ul are o slash înclinată, care închide în mod explicit etichetele în Slim. Pentru imagini sau mai multe etichete complicate, acest lucru este cu siguranță util. Apropo, HTML5 nu necesită să scrieți numele de atribute în litere mici și nici să utilizați citate în jurul valorii de atribute. Cu toate acestea, practica standard recomandată de W3C.

    Atributul Îmbinare

    Dacă aveți mai mulți selectori cum ar fi clase sau ID-uri pe etichetă, puteți scrie și acest lucru mai succint prin legarea lor de daisy. Acești selectori vor fi automat delimitați de spațiul alb.

    Subţire:

    h2 # big-header.agent-header.tagline Titlu Funky h3.small-header.agent # 007.tagline Titlu mic funky

    Executarea HTML:

    Funky titlul

    Titlu mic funky

    Nu că faptul că toate aceste identități și clase se amestecă în felul acesta reprezintă cele mai bune practici sau orice altceva, dar este ușor să vezi cum funcționează Slim într-un exemplu atât de complicat. Destul de cool, nu? Totuși, cu grijă, răspândirea acestor selectori pe mai multe linii nu va funcționa fără ambalaje de atribute (vezi secțiunea următoare).

    O altă opțiune ar fi folosirea unui matrice cu șiruri de caractere sau simboluri doar pentru a fuziona în atribute.

    Subţire:

    h2 class = ["agent-header", "tagline"] Titlu Funky h3 class =: agent,: double_o_seven,: slogan Titlu mic funky

    Executarea HTML:

    Funky titlul

    Titlu mic funky

    În cartea mea, aș numi acest lucru un bun-să-știu, dar nu este ceva ce încerc să utilizez în mod activ. Ar fi util dacă vrei să interpolezi ceva, presupun.

    Atrăgătoare pentru atribute

    Slim vă oferă ambalaje pentru a vă face atributele mai ușor de citit. S-ar putea să nu fie necesar tot timpul, dar este util să știm dacă o etichetă cu multe atribute necesită o îmblânzire. Puteți utiliza oricare dintre următoarele delimitatoare pentru a împacheta atributele: , [] și ().

    Subţire:

    a href = "http://slim-lang.com" title = "Pagina principală" Accesați pagina de pornire o href = "http://slim-lang.com/about.html" title = "Despre pagină " Vizitați pagina h2 [id =" big-header "] Titlu Funky h3 (id =" small-header "

    Executarea HTML:

    Accesați pagina de pornire Descărcați pagina despre pagină 

    Funky titlul

    Un alt titlu funky

    Dacă aceasta este o modalitate mai ușoară de organizare a marcajului, faceți-o! Așa cum este ilustrat de al doilea A si h3 , puteți distribui chiar atribute și selectori pe mai multe linii. Indentarea pare să fie aplicată foarte iertător în ceea ce privește sensibilitatea la spațiul liber. Cred, însă, că nu va dura mult timp și că nu veți avea nevoie de prea multe împachetări. Veți fi obișnuiți cu sintaxa subțire cu bare goale în cel mai scurt timp și salvați-le pentru ocazii speciale - după cum probabil ar trebui.

    Pentru etichetele inspirate, ambalajele ar putea fi la îndemână din când în când. După cum puteți observa și în exemplul de mai jos, puteți utiliza spații cu delimitatoarele pentru a le face mai ușor de citit - doar o notă laterală.

    ul li.long-link: a href = "http://slim-lang.com" title = "Pagina de pornire" Navigați pe pagina principală li.long-link.class.with-id: a [href = http://slim-lang.com/about.html "title =" Despre pagină "] Găsiți pagina despre li.c-link: a (href =" / c " d "] D

    Executarea HTML:

    • http://slim-lang.com "title =" Pagina principală "> Accesați pagina de pornire
    • http://slim-lang.com/about.html "title =" Despre pagină "> Accesați pagina despre
    • C link
    • D link

    Interpolarea atributului

    A spus cineva interpolarea? În cadrul atributelor cotate, puteți folosi Ruby pentru a interpola codul dacă este necesar. Un exemplu simplu ar trebui să fie suficient pentru a ilustra acest comportament:

    Subţire

    o href = "http: // # url" Urmați # url

    Din nou, nu ceva ce ar putea fi folosit zilnic, dar este bine să ai în geanta ta de trucuri. Valorile atributelor vor fi scoase în mod implicit. Dacă aveți nevoie de acest comportament dezactivat, trebuie doar să utilizați a ==.

    o href == "http: // # url" Urmați # url

    Puteți folosi Ruby complet pentru a juca cu atributele dvs., de asemenea. Doar aruncați un semnal egal acolo unde doriți ca un cod Ruby să fie executat și sunteți gata să plecați. În al doilea articol, veți găsi mai multe informații despre afișarea codului Ruby în șabloanele dvs. Slim.

    ul li class = agent.role a href = (cale_to_agent agent) = agent.name

    Asta, desigur, înseamnă, de asemenea, că puteți folosi booleani simpli în același mod în atributele dvs..

    tipul de intrare = "text" dezactivat = intrarea false tip = "text" dezactivat = adevărat tip de intrare = "text" dezactivat = zero

    Groovy, hai să mergem mai departe!

    Gândurile finale

    Sper că aveți acum un bun simț al motivului pentru care Slim este o alegere bună pentru toate nevoile tale templiante din țările Ruby. Dacă încă mai preferați să utilizați Haml sau ERB în acest moment, este posibil să creșteți apetitul pentru Slim în timp. Nu spun că este vorba de un gust dobândit sau de orice altceva, doar că nu este ceva pe care mulți oameni îl iau mai devreme în carieră - poate pentru că ei încă nu au simțit durerea de a scrie tot timpul acea marcare în plus. Acest articol vă oferă principiile de bază de care aveți nevoie pentru a începe. 

    Slim are mai multe de oferit, desigur - în special câteva caracteristici avansate pe care cu siguranță doriți să le aruncați o privire. În următorul articol, vom începe cu o secțiune mai detaliată despre trimiterea codului Ruby în șabloanele dvs. - și multe altele, bineînțeles. Ne vedem acolo!

    Cod