Índice
CoffeeScript é uma linguagem que nos permite escrever melhor código JavaScript, isto unificando-o e enquadrando-o na mesma estrutura, onde teremos a certeza de que o código JavaScript criado por CoffeeScript por outro desenvolvedor, será idêntico ao nosso.Mas isso não é tudo que oferece CoffeeScript, além disso, possui uma ferramenta chamada Bolo, semelhante ao Grunt que nos permite definir tarefas simples para nos ajudar com nossos projetos, já que é possível que precisemos de uma tarefa para executar testes ou simplesmente uma para construir nossos arquivos e podemos fazer tudo isso com Bolo através de um arquivo chamado Cakefile.
RequisitosPara completar este tutorial, devemos ter uma instalação funcional de CoffeeScript, também precisamos de permissões para escrever arquivos e executar CoffeeScript no computador onde estamos fazendo o tutorial. Precisamos de um editor de texto como Texto Sublime ser capaz de escrever o código de nossos exemplos e nunca é demais dar uma olhada nos tutoriais anteriores da linguagem.
Antes de começar é importante mencionar que não precisamos instalar Bolo, no momento de nossa instalação inicial de CoffeeScript a ferramenta é instalada da mesma forma, portanto, não precisamos fazer nada adicional para começar a trabalhar com ela.
Sabendo disso, podemos começar a trabalhar com Bolo, mas devemos entender que todas as tarefas que criamos devem estar localizadas em um arquivo chamado Cakefile, que deve ter exatamente o mesmo nome desde cakefile será um arquivo totalmente diferente e não será reconhecido pelo compilador.
Este arquivo deve estar na raiz do nosso projeto e é extremamente importante que seu conteúdo seja apenas código CoffeeScript. Depois de esclarecer isso, vamos ver como criar nossa primeira tarefa com Bolo.
Vamos criar uma pasta chamada cakefile_example e lá vamos criar um arquivo chamado Cakefile.coffee e conterá o seguinte conteúdo:
tarefa "saudação", "Vamos dizer olá para a grande comunidade Solvetic", -> console.log "Olá, Mundo!"Antes de explicar nosso código, vamos compilá-lo e ver o conteúdo gerado em JavaScript, isso não é necessário, pois nunca veremos esse código, mas desta vez podemos usá-lo para entender melhor o que ele está fazendo CoffeeScript, vamos ver o resultado:
PROLONGAR
Uma vez que estamos no contexto, podemos explicar nosso código, primeiro definimos a tarefa com a função tarefa que é adicionado automaticamente a cada arquivo Cakefile. O primeiro argumento da função é o nome da tarefa, neste caso é saudações e o usaremos no console de comando para executar a tarefa, o segundo argumento pode ser opcional e é uma descrição da tarefa que aparecerá na lista de nossas tarefas disponíveis. O último argumento que enviamos na função tarefa é outra função que será executada pela tarefa e é onde grande parte de nossa lógica será depositada.O exemplo anterior foi apenas para verificar o que o compilador estava fazendo, mas nosso arquivo Cakefile não deve ter nenhuma extensão. Além disso, podemos ver quais tarefas temos disponíveis com o comando bolo No console de comando, vamos ver como fica:
Como podemos ver, podemos ver o nome da nossa tarefa, bem como a descrição. Agora, para executar uma tarefa específica, usamos o comando cake seguido do nome da tarefa, para finalizar vamos ver a saída do console:
Já sabemos como criar uma tarefa e executá-la, mas e se quisermos passar alguns argumentos para ela? Por exemplo, e se quisermos que nossa saudação seja totalmente personalizada de acordo com um valor que enviamos? Isso é muito fácil de fazer, vamos ver.
A primeira coisa que devemos fazer em nossa tarefa é definir a opção, fazemos isso com a função opção acessível Bolo. Esta função leva três argumentos, o primeiro é a forma abreviada da opção, o segundo é a forma longa e o último é uma descrição do que a opção faz, algo importante se estamos desenvolvendo como uma equipe e queremos documentar nossas tarefas. Em seguida, faremos as modificações em nossa tarefa para definir a opção:
opção '-n', '--nome [NOME]', 'nome para cumprimentar' tarefa "saudação", "Dizemos olá a alguém", (opções) -> mensagem = "Olá," if options.name? mensagem + = options.name else message + = "World" console.log mensagemComo vemos antes da definição de tarefa nós temos nossa função opção, seguido pela forma abreviada que seria -n, então temos a forma longa que seria -name especificando que esperará um valor e, finalmente, a descrição. Vamos executar o comando cake e ver a saída em nosso console:
Como podemos ver, temos o nome da nossa tarefa, a descrição e abaixo dela temos as opções disponíveis para ela, as opções curta e longa, bem como a descrição. Vamos executar nossa tarefa com a opção curta e ver a saída do console:
Para executar uma tarefa com opções é importante que primeiro especifiquemos os argumentos e depois o nome da tarefa, pois se não encontrarmos um erro, ele não diz muito sobre o que pode estar acontecendo com nosso arquivo Cakefile, então vamos ver como a execução está usando a segunda opção:
Aqui algo peculiar está acontecendo e é que antes de executar a tarefa usamos a opção com um único script, nos dando um erro e é a coisa certa a fazer já que em nossa tarefa definimos a opção como --- nome em vez de -name, demonstrando assim a eficácia de CoffeeScript para o funcionamento das tarefas.
Além disso, podemos definir se uma opção é necessária e fazemos isso na definição da tarefa verificando se o valor existe e se não lançarmos um erro, vamos ver como é o código:
opção '-n', '--nome [NOME]', 'nome que deseja saudar' tarefa "saudação", "Verifique se a opção existe", (opções) -> lançar novo Erro ("[NOME] é um valor obrigatório ") a menos que options.name? console.log "Olá, # {options.name}"Vamos então executar nossa tarefa, mas desta vez ignorando a opção como um argumento e ver a resposta do console:
Como podemos ver, o erro que incluímos no arquivo foi mostrado, podendo assim validar que as opções para nossas tarefas sejam passadas como argumentos quando necessário.
Já tendo visto como criar nossas tarefas e definir opções para elas, é importante ver como podemos executar tarefas que se encontram dentro de outras. Por exemplo, podemos ter duas tarefas em comum em um projeto onde uma das tarefas é responsável por limpar os diretórios que construímos para o projeto e a outra é responsável por compilar e construir, vamos ver como essas duas tarefas que acabamos de ser parecido com. descreva:
task "clean", "Esta tarefa realiza a limpeza dos diretórios", -> console.log "cleaning the dir …" task "build", "Construir e compilar os arquivos para o projeto", -> console.log "construindo …"Vamos executar o comando bolo e vamos ver a resposta por meio do console:
Além disso, para executar as duas tarefas juntos, podemos usar o comando cake seguido por ambos os nomes de nossas tarefas:
Como podemos ver não há nada de estranho em nossas tarefas, mas se somos observadores percebemos que primeiro temos que executar a tarefa de limpeza sempre antes da nossa tarefa de construção, mas e se quisermos uma terceira tarefa chamada empacotamento, que então embalará o projeto para nós? Portanto, devemos primeiro construí-lo, certificar-se de que os diretórios estão limpos e, finalmente, construir.
O problema é que esta solução não é a ideal, se por algum motivo nos esquecemos de chamar a tarefa limpa ou pior, nossa tarefa de construção terá problemas com nossa terceira tarefa, felizmente o Cake nos permite chamar uma tarefa dentro de outra com a função invocar, então vamos ver como nosso arquivo se parece Cakefile com a nova tarefa e modificações:
task "clean", "Esta tarefa realiza a limpeza dos diretórios", -> console.log "cleaning the dir …" task "build", "Construir e compilar os arquivos para o projeto", -> console.log "build …" task "pack", "clean, build and pack our project", -> invocar "clean" invocar "build" console.log "embalagem …"Agora só temos que chamar nosso empacotamento e assim ter certeza de que as outras duas tarefas necessárias são chamadas sem problemas, vamos ver a saída no console de comando:
É importante mencionar que as tarefas que usam a função invocar eles são executados de forma assíncrona, portanto, não temos garantia de que a tarefa de limpeza será executada antes da construção e do empacotamento, portanto, devemos ter cuidado em seu uso.
Com isto concluímos este tutorial, onde aprendemos a criar as nossas tarefas, executá-las, dar-lhes opções e até como invocar outras tarefas dentro de outras, expandindo assim o nosso conhecimento nesta linguagem eficaz que contribui para as melhores práticas de qualquer desenvolvimento.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo