Utilizarea tortului în CoffeeScript

Cuprins
CoffeeScript este un limbaj care ne permite să scriem un cod JavaScript mai bun, unificându-l și încadrându-l sub aceeași structură, unde vom fi siguri că codul JavaScript creat de CoffeeScript de către un alt dezvoltator va fi identic cu al nostru.
Dar asta nu este tot ce oferă CoffeeScript, în plus, are un instrument numit Tort, similar cu Grunt, care ne permite să definim sarcini simple care să ne ajute cu proiectele noastre, deoarece este posibil să avem nevoie de o sarcină pentru a rula teste sau pur și simplu una pentru a construi fișierele noastre și putem face toate acestea cu Tort printr-un fișier numit Cakefile.
CerințePentru a finaliza acest tutorial trebuie să avem o instalare funcțională de CoffeeScript, avem nevoie și de permisiuni pentru a scrie fișiere și a le executa CoffeeScript pe computerul pe care facem tutorialul. Avem nevoie de un editor de text de genul Text sublim pentru a putea scrie codul exemplelor noastre și nu strică niciodată să aruncăm o privire asupra tutorialelor anterioare ale limbii.
Înainte de a începe este important să menționăm că nu este nevoie să instalăm Tort, la momentul instalării noastre inițiale a CoffeeScript instrumentul este instalat în același mod, deci nu trebuie să facem nimic suplimentar pentru a începe să lucrăm cu el.
Știind acest lucru putem începe să lucrăm Tort, dar trebuie să înțelegem că toate sarcinile pe care le creăm trebuie să fie localizate într-un fișier numit Cakefile, care trebuie să aibă exact același nume de atunci cakefile va fi un fișier total diferit și nu va fi recunoscut de compilator.
Acest fișier trebuie să fie la baza proiectului nostru și este extrem de important ca conținutul său să fie doar cod CoffeeScript. După ce am clarificat acest lucru, să vedem cum să creăm prima noastră sarcină Tort.
Vom crea un folder numit tort_exemplu_fișier și acolo vom crea un fișier numit Cakefile.cafe și va conține următorul conținut:
 sarcina „salut”, „Să salutăm marea comunitate solvetică”, -> console.log „Bună ziua, lume!”
Înainte de a explica codul nostru, îl vom compila și vom vedea conținutul generat în JavaScript, acest lucru nu este necesar, deoarece nu vom vedea niciodată acest cod, dar de data aceasta l-am putea folosi pentru a înțelege mai bine ce face CoffeeScript, să vedem rezultatul:

MARI

Deoarece suntem în context, putem explica codul nostru, mai întâi definim sarcina cu funcția sarcină care se adaugă automat la fiecare fișier Cakefile. Primul argument al funcției este numele sarcinii, în acest caz este Salut și îl vom folosi în consola de comandă pentru a executa sarcina, al doilea argument poate fi opțional și este o descriere a sarcinii care va apărea în lista sarcinilor noastre disponibile. Ultimul argument pe care îl trimitem în funcție sarcină este o altă funcție care va fi executată de sarcină și acolo va fi depusă cea mai mare parte a logicii noastre.
Exemplul anterior a fost doar pentru a verifica ce făcea compilatorul, dar fișierul nostru Cakefile nu trebuie să aibă nicio extensie. În plus, putem vedea ce sarcini avem disponibile cu comanda tort În consola de comandă, să vedem cum arată:

După cum putem vedea, putem vedea numele sarcinii noastre, precum și descrierea. Acum, pentru a executa o anumită sarcină, folosim comanda cake urmată de numele sarcinii, pentru a finaliza, să vedem ieșirea din consolă:

Știm deja cum să creăm o sarcină și să o executăm, dar dacă vrem să îi transmitem câteva argumente? De exemplu, dacă vrem ca salutarea noastră să fie personalizată în totalitate în funcție de valoarea pe care o trimitem? Acest lucru este destul de ușor de făcut, să vedem.
Primul lucru pe care trebuie să-l facem în sarcina noastră este să definim opțiunea, facem acest lucru cu funcția opțiune disponibil Tort. Această funcție ia trei argumente, primul este forma scurtă a opțiunii, al doilea este forma lungă și ultima este o descriere a ceea ce face opțiunea, ceva important dacă ne dezvoltăm ca o echipă și dorim să ne documentăm sarcinile. Vom face apoi modificările sarcinii noastre pentru a defini opțiunea:
 opțiunea '-n', '--name [NAME]', 'nume pentru a saluta' sarcina "salut", "Îi salutăm pe cineva", (opțiuni) -> mesaj = "Bună ziua", dacă options.name? mesaj + = opțiuni.nume alt mesaj + = mesaj „consolă„ jurnal „Lumea”
După cum vedem înainte de definiția sarcină avem funcția noastră opțiune, urmat de forma scurtă care ar fi -n, atunci avem forma lungă care ar fi -nume specificând că se va aștepta la o valoare și în cele din urmă descrierea. Vom executa comanda tort și vom vedea rezultatul în consola noastră:

După cum putem vedea, avem numele sarcinii noastre, descrierea și sub aceasta avem opțiunile disponibile pentru aceasta, opțiunile scurte și lungi, precum și descrierea. Să ne executăm sarcina cu opțiunea scurtă și să vedem ieșirea de pe consolă:

Pentru a executa o sarcină cu opțiuni, este important să specificăm mai întâi argumentele și apoi numele sarcinii, deoarece dacă nu ne confruntăm cu o eroare nu spune prea multe despre ceea ce se poate întâmpla cu fișierul nostru Cakefile, atunci să vedem cum execuția utilizează a doua opțiune:

Aici se întâmplă ceva ciudat și este că, înainte de a executa sarcina, folosim opțiunea cu un singur script, oferindu-ne o eroare și este corect să facem, deoarece în sarcina noastră am definit opțiunea ca --- nume în loc de -nume, demonstrând astfel eficacitatea CoffeeScript pentru operarea sarcinilor.
În plus, putem defini dacă este necesară o opțiune și facem acest lucru în definirea sarcinii verificând dacă există valoarea și dacă nu aruncăm o eroare, să vedem cum arată acest cod:
 opțiunea '-n', '--name [NAME]', 'nume pe care doriți să-l întâmpinați' task "salut", "Verificați dacă opțiunea există", (opțiuni) -> aruncați o nouă eroare ("[NAME] este o valoare necesară ") cu excepția cazului în options.name? console.log "Bună ziua, # {options.name}"
Să ne executăm sarcina, dar de data aceasta ignorând opțiunea ca argument și să vedem răspunsul de pe consolă:

După cum putem vedea, a fost afișată eroarea pe care am inclus-o în fișier, putând astfel să validăm că opțiunile pentru sarcinile noastre sunt transmise ca argumente atunci când este necesar.
După ce am văzut deja cum să ne creăm sarcinile și să le definim opțiunile, este important să vedem cum putem executa sarcini care se găsesc în altele. De exemplu, putem avea două sarcini comune într-un proiect în care una dintre sarcini se ocupă de curățarea directoarelor pe care le-am construit pentru proiect și cealaltă se ocupă de compilare și construire, să vedem cum aceste două sarcini care tocmai am terminat arătăm ca. descrie:
 task "curat", "Această sarcină efectuează curățarea directoarelor", -> console.log "curățarea directorului …" task "build", "Build and compile the files for the project", -> console.log „clădire …”
Vom executa comanda tort și să vedem răspunsul prin consolă:

În plus, pentru a rula ambele sarcini împreună putem folosi comanda tort urmată de ambele nume ale sarcinilor noastre:

După cum putem vedea, nu este nimic ciudat în sarcinile noastre, dar dacă suntem observatori, ne dăm seama că mai întâi trebuie să executăm sarcina de curățare întotdeauna înainte de sarcina noastră de construcție, dar dacă vrem o a treia sarcină numită ambalare, care va împacheta apoi proiect pentru noi? Deci, mai întâi trebuie să-l construim, să ne asigurăm că directoarele sunt curate și, în cele din urmă, să construim.
Problema este că această soluție nu este optimă, dacă din anumite motive uităm să numim sarcina curată sau mai rău, sarcina noastră de construcție va avea probleme cu cea de-a treia sarcină, din fericire, Cake ne permite să apelăm o sarcină în alta cu funcția invoca, apoi să vedem cum arată fișierul nostru Cakefile cu noua sarcină și modificări:
 task "curat", "Această sarcină efectuează curățarea directoarelor", -> console.log "curățarea directorului …" task "build", "Build and compile the files for the project", -> console.log "clădire …" sarcină "pachet", "curăță, construiește și împachetează proiectul nostru", -> invocă "curat" invocă "construi" console.log "împachetare …"
Acum trebuie doar să ne apelăm la ambalaj și astfel ne asigurăm că celelalte două sarcini necesare sunt apelate fără probleme, să vedem ieșirea în consola de comandă:

Este important de menționat că sarcinile care utilizează funcția invoca acestea sunt executate asincron, deci nu avem nicio garanție că sarcina de curățare va fi executată înainte de construire și ambalare, deci trebuie să fim atenți la utilizarea lor.
Cu aceasta încheiem acest tutorial, în care am învățat să ne creăm sarcinile, să le executăm, să le oferim opțiuni și chiar cum să invocăm alte sarcini în cadrul altora, extinzându-ne astfel cunoștințele în acest limbaj eficient care contribuie la cele mai bune practici ale oricărei dezvoltări.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv
wave wave wave wave wave