Kūkas izmantošana CoffeeScript

Satura rādītājs
CoffeeScript ir valoda, kas ļauj mums uzrakstīt labāku JavaScript kodu, tas to apvieno un ierāmē tādā pašā struktūrā, kur mēs būsim pārliecināti, ka JavaScript kods CoffeeScript cits izstrādātājs tas būs identisks mūsējam.
Bet tas vēl nav viss, ko tas piedāvā CoffeeScript, turklāt tam ir rīks ar nosaukumu Kūka, līdzīgi kā Grunt, kas ļauj mums definēt vienkāršus uzdevumus, lai palīdzētu mums ar mūsu projektiem, jo ​​iespējams, ka mums ir nepieciešams uzdevums testu veikšanai vai vienkārši viens, lai izveidotu mūsu failus, un mēs to visu varam paveikt Kūka caur failu ar nosaukumu Kūku fails.
PrasībasLai pabeigtu šo apmācību, mums ir jābūt funkcionālai instalācijai CoffeeScript, mums ir vajadzīgas arī atļaujas failu rakstīšanai un izpildei CoffeeScript datorā, kurā mēs veicam apmācību. Mums ir vajadzīgs tāds teksta redaktors kā Cildens teksts lai varētu uzrakstīt mūsu piemēru kodu, un nekad nav sāpīgi ieskatīties iepriekšējās valodas apmācībās.
Pirms darba sākšanas ir svarīgi pieminēt, ka mums nav jāinstalē Kūka, mūsu sākotnējās uzstādīšanas laikā CoffeeScript rīks ir uzstādīts tādā pašā veidā, tāpēc mums nav jādara nekas papildu, lai sāktu ar to strādāt.
To zinot, mēs varam sākt strādāt Kūka, bet mums ir jāsaprot, ka visiem mūsu izveidotajiem uzdevumiem jāatrodas failā ar nosaukumu Cakefile, kam kopš tā laika jābūt tieši tādam pašam nosaukumam kūkas fails tas būs pilnīgi atšķirīgs fails, un kompilators to neatpazīs.
Šim failam ir jābūt mūsu projekta pamatā, un ir ārkārtīgi svarīgi, lai tā saturs būtu tikai kods CoffeeScript. Kad tas būs noskaidrots, redzēsim, kā izveidot savu pirmo uzdevumu Kūka.
Mēs izveidosim mapi ar nosaukumu kūkas fails_piemērs un tur mēs izveidosim failu ar nosaukumu Cakefile.coffe un tajā būs šāds saturs:
 uzdevums "sveiciens", "Sveicināsim lielo solvīdu kopienu", -> console.log "Sveika, pasaule!"
Pirms izskaidrojam savu kodu, mēs to apkoposim un redzēsim JavaScript ģenerēto saturu, tas nav nepieciešams, jo mēs šo kodu nekad neredzēsim, taču šoreiz mēs varētu to izmantot, lai labāk izprastu, ko tas dara CoffeeScript, redzēsim rezultātu:

PALIELINĀT

Tā kā mēs esam kontekstā, mēs varam izskaidrot savu kodu, vispirms mēs definējam uzdevumu ar funkciju uzdevums kas tiek automātiski pievienots katram failam Cakefile. Funkcijas pirmais arguments ir uzdevuma nosaukums, šajā gadījumā tas ir sveiciens un mēs to izmantosim komandu konsolē, lai izpildītu uzdevumu, otrais arguments var nebūt obligāts, un tas ir uzdevuma apraksts, kas parādīsies mūsu pieejamo uzdevumu sarakstā. Pēdējais arguments, ko mēs nosūtām funkcijā uzdevums tā ir vēl viena funkcija, kuru veiks šis uzdevums, un tajā tiks glabāta lielākā daļa mūsu loģikas.
Iepriekšējais piemērs bija tikai pārbaudīt, ko kompilators dara, bet mūsu fails Cakefile tam nedrīkst būt pagarinājuma. Mēs papildus varam redzēt, kādi uzdevumi mums ir pieejami ar komandu kūka Komandu konsolē apskatīsim, kā tas izskatās:

Kā redzam, mēs varam redzēt mūsu uzdevuma nosaukumu un aprakstu. Tagad, lai izpildītu noteiktu uzdevumu, mēs izmantojam komandu kūka, kam seko uzdevuma nosaukums, lai pabeigtu, apskatīsim konsoles izvadi:

Mēs jau zinām, kā izveidot uzdevumu un to izpildīt, bet ko darīt, ja vēlamies tam nodot dažus argumentus? Piemēram, ko darīt, ja vēlamies, lai mūsu sveiciens tiktu pilnībā personalizēts atbilstoši mūsu nosūtītajai vērtībai? To ir diezgan viegli izdarīt, redzēsim.
Pirmā lieta, kas mums jādara mūsu uzdevumā, ir definēt opciju, mēs to darām ar funkciju iespēja pieejams Kūka. Šai funkcijai ir trīs argumenti, pirmais ir opcijas īsā forma, otrais ir garais un pēdējais ir apraksts par to, ko šī opcija dara, kaut kas svarīgs, ja mēs attīstāmies kā komanda un vēlamies dokumentēt savus uzdevumus. Pēc tam mēs veiksim izmaiņas mūsu uzdevumā, lai definētu iespēju:
 opcija '-n', '--nosaukums [VĀRDS]', 'vārds, lai sveicinātu' uzdevums "apsveikums", "Mēs kādam sveicam", (iespējas)-> ziņa = "Labdien", ja iespējas.nosaukums? ziņojums + = iespējas.vārds cits ziņojums + = "Pasaule" console.log ziņojums
Kā mēs redzam pirms definīcijas uzdevums mums ir sava funkcija iespēja, kam seko īsa forma, kas būtu -n, tad mums ir garā forma, kas būtu -name, norādot, ka tā sagaidīs vērtību un visbeidzot apraksts. Mēs izpildīsim kūkas komandu un redzēsim rezultātu mūsu konsolē:

Kā redzam, mums ir mūsu uzdevuma nosaukums, apraksts, un zem tā ir pieejamas tam pieejamās iespējas, īsās un garās iespējas, kā arī apraksts. Izpildīsim savu uzdevumu, izmantojot īso opciju un apskatīsim konsoles izvadi:

Lai izpildītu uzdevumu ar opcijām, ir svarīgi vispirms norādīt argumentus un pēc tam uzdevuma nosaukumu, jo, ja neradīsim kļūdu, tas neko daudz nepasaka par to, kas var notikt ar mūsu Cakefile failu, tad redzēsim, kā izpilde izmanto otro iespēju:

Šeit notiek kaut kas savdabīgs, un tas ir tas, ka pirms uzdevuma izpildes mēs izmantojam opciju ar vienu skriptu, radot mums kļūdu, un tas ir pareizi, jo mūsu uzdevumā mēs esam definējuši opciju kā --- nosaukums, nevis -vārds, tādējādi demonstrējot tā efektivitāti CoffeeScript uzdevumu veikšanai.
Turklāt mēs varam definēt, vai ir nepieciešama opcija, un mēs to darām uzdevuma definīcijā, pārbaudot, vai vērtība pastāv, un, ja mēs neizmetam kļūdu, redzēsim, kā izskatās šis kods:
 opcija '-n', '--nosaukums [VĀRDS]', 'vārds, kuru vēlaties apsveikt' uzdevums "sveiciens", "Pārbaudiet, vai šī opcija pastāv", (opcijas)-> mest jaunu kļūdu ("[NAME] ir vērtība nepieciešama "), ja vien nav iespējas.nosaukums? console.log "Labdien, # {options.name}"
Pēc tam izpildīsim savu uzdevumu, bet šoreiz ignorēsim opciju kā argumentu un redzēsim konsoles atbildi:

Kā redzam, tika parādīta failā iekļautā kļūda, tādējādi varot apstiprināt, ka nepieciešamības gadījumā mūsu uzdevumu iespējas tiek nodotas kā argumenti.
Jau redzot, kā izveidot savus uzdevumus un definēt tiem iespējas, ir svarīgi redzēt, kā mēs varam izpildīt uzdevumus, kas atrodami citos. Piemēram, mums var būt divi kopīgi uzdevumi projektā, kur viens no uzdevumiem ir par projekta izveidoto direktoriju tīrīšanu, bet otrs - par apkopošanu un veidošanu. Redzēsim, kā šie divi uzdevumi mēs tikko pabeidzām izskatīties šādi. aprakstiet:
 uzdevums "tīrs", "Šis uzdevums veic direktoriju tīrīšanu", -> console.log "tīrīšana dir …" uzdevums "build", "Veidot un apkopot projekta failus", -> console.log "ēka …"
Mēs izpildīsim komandu kūka un redzēsim atbildi caur konsoli:

Papildus abu uzdevumu izpildei mēs varam izmantot kūka komandu, kam seko abi mūsu uzdevumu nosaukumi:

Kā redzam, mūsu uzdevumos nav nekā dīvaina, bet, ja mēs esam novērotāji, mēs saprotam, ka vispirms mums vienmēr ir jāveic tīrīšanas uzdevums pirms mūsu celtniecības uzdevuma, bet ko darīt, ja mēs vēlamies trešo uzdevumu - iepakojumu, kas pēc tam iesaiņos projekts mums? Tāpēc mums vispirms tas ir jāveido, jāpārliecinās, vai katalogi ir tīri un beidzot tiek veidots.
Problēma ir tā, ka šis risinājums nav optimāls, ja kāda iemesla dēļ mēs aizmirstam izsaukt tīro uzdevumu vai vēl ļaunāk, mūsu būvniecības uzdevumam būs problēmas ar mūsu trešo uzdevumu, par laimi, kūka ļauj mums izsaukt vienu uzdevumu citā ar funkciju piesaukt, tad redzēsim, kā izskatās mūsu fails Kūku fails ar jauno uzdevumu un modifikācijām:
 uzdevums "tīrs", "Šis uzdevums veic direktoriju tīrīšanu", -> console.log "tīrīšana dir …" uzdevums "build", "Veidot un apkopot projekta failus", -> console.log "ēka …" uzdevums "iepakojums", "tīrīt, veidot un iepakot mūsu projektu", -> izsaukt "tīrs" izsaukt "būvēt" console.log "iepakošana …"
Tagad mums vienkārši jāizsauc mūsu iepakojums un tādā veidā mēs pārliecināmies, ka pārējie divi nepieciešamie uzdevumi tiek izsaukti bez problēmām, redzēsim izvadi komandu konsolē:

Ir svarīgi pieminēt, ka uzdevumi, kas izmanto šo funkciju piesaukt tie tiek izpildīti asinhroni, tāpēc mums nav garantijas, ka tīrīšanas uzdevums tiks izpildīts pirms būvēšanas un iepakošanas, tāpēc mums jābūt uzmanīgiem to lietošanā.
Ar to mēs noslēdzam šo pamācību, kurā mēs iemācījāmies izveidot savus uzdevumus, tos izpildīt, dot viņiem iespējas un pat to, kā izmantot citus uzdevumus citos, tādējādi paplašinot savas zināšanas šajā efektīvajā valodā, kas veicina jebkuras attīstības labāko praksi.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave