Използване на Cake в CoffeeScript

Съдържание
CoffeeScript е език, който ни позволява да напишем по -добър JavaScript код, който го обединява и оформя в същата структура, където ще бъдем сигурни, че JavaScript кодът, създаден от CoffeeScript от друг разработчик той ще бъде идентичен с нашия.
Но това не е всичко, което предлага CoffeeScript, освен това има инструмент, наречен Торта, подобно на Grunt, което ни позволява да дефинираме прости задачи, които да ни помогнат с нашите проекти, тъй като е възможно да се нуждаем от задача за провеждане на тестове или просто от една, за да изградим нашите файлове и можем да направим всичко това с Торта чрез файл, наречен Cakefile.
ИзискванияЗа да завършим този урок, трябва да имаме функционална инсталация на CoffeeScript, ние също се нуждаем от разрешения за писане на файлове и изпълнение CoffeeScript на компютъра, където правим урока. Нуждаем се от текстов редактор като Възвишен текст за да можете да напишете кода на нашите примери и никога не боли да погледнете миналите уроци по езика.
Преди да започнете е важно да споменете, че не е необходимо да инсталираме Торта, към момента на първоначалната ни инсталация на CoffeeScript инструментът е инсталиран по същия начин, така че не е нужно да правим нищо допълнително, за да започнем работа с него.
Знаейки това, можем да започнем работа Торта, но трябва да разберем, че всички задачи, които създаваме, трябва да се намират във файл, наречен Cakefile, което трябва да има точно същото име от кекс файл това ще бъде напълно различен файл и няма да бъде разпознат от компилатора.
Този файл трябва да е в основата на нашия проект и е изключително важно съдържанието му да е само код CoffeeScript. След като изяснихме това, нека видим как да създадем първата си задача Торта.
Ще създадем папка, наречена cakefile_example и там ще създадем файл, наречен Cakefile.coffee и ще съдържа следното съдържание:
 задача "поздрав", "Да поздравим великата общност на Solvetic", -> console.log "Здравей, Свят!"
Преди да обясним нашия код, ще го компилираме и ще видим съдържанието, генерирано в JavaScript, това не е необходимо, тъй като никога няма да видим този код, но този път бихме могли да го използваме, за да разберем по -добре какво прави CoffeeScript, нека видим изхода:

Увеличете

Тъй като сме в контекст, можем да обясним нашия код, първо дефинираме задачата с функцията задача който автоматично се добавя към всеки файл Cakefile. Първият аргумент на функцията е името на задачата, в случая е така поздрав и ще го използваме в командната конзола за изпълнение на задачата, вторият аргумент може да бъде по избор и е описание на задачата, която ще се появи в списъка с наличните ни задачи. Последният аргумент, който изпращаме във функцията задача това е друга функция, която ще бъде изпълнена от задачата и е мястото, където по -голямата част от нашата логика ще бъде депозирана.
Предишният пример беше просто да проверим какво прави компилаторът, но нашият файл Cakefile не трябва да има никакво разширение. Освен това можем да видим какви задачи имаме на разположение с командата торта В командната конзола нека видим как изглежда:

Както виждаме, можем да видим името на нашата задача, както и описанието. Сега за изпълнение на определена задача използваме командата cake, последвана от името на задачата, за да завършим нека видим изхода от конзолата:

Вече знаем как да създадем задача и да я изпълним, но какво ще стане, ако искаме да й предадем някои аргументи? Например, какво, ако искаме поздравът ни да бъде напълно персонализиран според стойността, която изпращаме? Това е доста лесно да се направи, да видим.
Първото нещо, което трябва да направим в нашата задача, е да дефинираме опцията, правим това с функцията опция на разположение Торта. Тази функция приема три аргумента, първият е кратката форма на опцията, вторият е дългата форма и последният е описание на това, което прави опцията, нещо важно, ако се развиваме като екип и искаме да документираме задачите си. След това ще направим промените в нашата задача, за да дефинираме опцията:
 опция '-n', '-име [ИМЕ]', 'име за поздрав' задача "поздрав", "Казваме здравей на някого", (опции)-> съобщение = "Здравей", ако options.name? message + = options.name else message + = "World" console.log съобщение
Както виждаме преди определението за задача ние имаме нашата функция опция, последвано от кратката форма, която би била -n, тогава имаме дългата форма, която би била -name, указваща, че ще очаква стойност и накрая описанието. Ще изпълним командата cake и ще видим изхода в нашата конзола:

Както виждаме, имаме името на нашата задача, описанието и под него имаме наличните опции за нея, кратките и дългите опции, както и описанието. Нека изпълним задачата си с опцията short и ще видим изхода от конзолата:

За изпълнение на задача с опции е важно първо да посочим аргументите и след това името на задачата, тъй като ако не срещнем грешка, тя не казва много за това, което може да се случи с нашия файл Cakefile, тогава нека да видим как изпълнението използва втората опция:

Тук се случва нещо особено и то е, че преди да изпълним задачата, използваме опцията с един скрипт, което ни дава грешка и това е правилното нещо, което трябва да направим, тъй като в нашата задача сме дефинирали опцията като --- име вместо -name, като по този начин демонстрира ефикасността на CoffeeScript за изпълнение на задачи.
Освен това можем да определим дали е необходима опция и правим това в дефиницията на задачата, като проверяваме дали стойността съществува и ако не изхвърляме грешка, нека видим как изглежда този код:
 опция '-n', '-име [NAME]', 'име, което искате да поздравите' задача "поздрав", "Проверете дали опцията съществува", (опции)-> хвърли нова грешка ("[NAME] е необходима стойност ") освен options.name? console.log "Здравейте, # {options.name}"
Нека тогава изпълним нашата задача, но този път игнорираме опцията като аргумент и ще видим отговора от конзолата:

Както виждаме, грешката, която включихме във файла, беше показана, като по този начин беше възможно да се потвърди, че опциите за нашите задачи се предават като аргументи, когато е необходимо.
След като вече видяхме как да създаваме нашите задачи и да дефинираме опции за тях, е важно да видим как можем да изпълняваме задачи, които се намират в други. Например, можем да имаме две общи задачи в проект, където една от задачите отговаря за почистването на директориите, които сме изградили за проекта, а другата е за компилирането и изграждането, нека видим как тези две задачи, които току -що приключихме. опишете:
 задача "почистване", "Тази задача извършва почистването на директориите", -> console.log "почистване на директория …" задача "изграждане", "Създаване и компилиране на файловете за проекта", -> console.log "сграда …"
Ще изпълним командата торта и нека видим отговора през конзолата:

Освен това, за да изпълним и двете задачи заедно, можем да използваме командата cake, последвана от двете имена на нашите задачи:

Както виждаме, в нашите задачи няма нищо странно, но ако ние сме наблюдатели, ние осъзнаваме, че първо трябва да изпълним задачата за почистване винаги преди нашата строителна задача, но какво ще стане, ако искаме трета задача, наречена опаковка, която след това ще опакова проект за нас? Така че първо трябва да го изградим, да се уверим, че директориите са чисти и накрая да се изгради.
Проблемът е, че това решение не е оптимално, ако по някаква причина забравим да извикаме чистата задача или по -лошо, нашата задача за изграждане ще има проблеми с третата ни задача, за щастие Cake ни позволява да извикаме една задача в друга с функцията извиквам, тогава нека видим как изглежда нашият файл Кекс файл с новата задача и модификации:
 задача "почистване", "Тази задача извършва почистването на директориите", -> console.log "почистване на директория …" задача "изграждане", "Създаване и компилиране на файловете за проекта", -> console.log "building …" task "pack", "clean, build and pack our project", -> извиквам "clean" извиквам "build" console.log "опаковане …"
Сега просто трябва да извикаме опаковката си и по този начин се уверяваме, че другите две необходими задачи са извикани без проблеми, нека видим изхода в командната конзола:

Важно е да се спомене, че задачите, които използват функцията извиквам те се изпълняват асинхронно, така че нямаме гаранция, че задачата за почистване ще бъде изпълнена преди изграждането и опаковането, така че трябва да бъдем внимателни при тяхното използване.
С това приключваме този урок, където се научихме да създаваме нашите задачи, да ги изпълняваме, даваме им възможности и дори как да извикваме други задачи в други, като по този начин разширяваме знанията си на този ефективен език, който допринася за най -добрите практики на всяко развитие.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave