Front End

24 mai, 2019

Vuejs e suas bases – Parte 01

Publicidade

Nesta série de artigos nós vamos falar sobre a base do Vuejs e aprender como funciona o framework Vuejs, que é aquele framework bacana, flexível e que vem ganhando espaço no mercado.

Como o intuito desta série será trabalhar em cima dos princípios do vuejs, não usaremos as ferramentas nem as libs dele, trabalharemos com ele puro.

Vamos lá!

O template do Vuejs

A primeira coisa que você precisa fazer é criar uma pasta e, dentro, criar um arquivo com extensão .html e importar o Vuejs via CDN

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

Agora definimos uma div com o id app. Dentro dela colocaremos um <p>, e dentro dele, uma interpolação usando {{ message }}.

Essa message vem a partir da instância do Vuejs (voltaremos nisso mais à frente). Com esse simples modelo de template o Vuejs vai nos permitir renderizar dados para DOM!

<div id="app">
  <p>{{ message }}</p>
</div>

Agora precisamos criar um <script> que já conhecemos –  serve para colocar nosso JavaScript dentro dele, e instanciaremos também o Vuejs a partir da função construtora Vue().

Depois precisaremos passar uma série de parâmetros. O primeiro é o el:, que é o cara que queremos que a instância passe a controlar nosso id '#app'. A partir dele conseguimos manipular a DOM.

Conseguimos manipular a DOM com o Vue. Crio o atributo data:, que é um objeto que pode ter vários atributos.

É nesse momento que declaramos a message que colocamos lá no template. É ele que queremos colocar dentro do nosso html.

Teremos o <p>{{ message }} </p> sendo substituído dentro do template.

Dê um F5 no seu navegador e deverá ter o resultado a seguir:

Ou seja, tudo que está dentro da div #app é o template, que será controlado pela instância do Vue.

A message é basicamente uma manipulação da DOM através do Vue. Colocamos o texto da message usando o padrão {{ }} dentro do html.

O Vue é o intermediário entre o template e aquilo que será renderizado no browser, Ele é como o “meio do caminho”.

Inspecionando nosso aplicativo veremos que ele é muito parecido com o que escrevemos em código, ou seja, não tem “códigos desconhecidos”, coisas que não sabemos do que se trata.

Ele vai pegar o html que você escreveu e fazer algumas intervenções minimas e necessárias para renderizar o conteúdo desejado.

Se você inspecionar, verá que ele mostra bem parecido com o que você escreveu.

O Vue guarda o template em memória, isso faz com que ele consiga alterar o html de uma forma muito bacana.

A sintaxe do template e a instância Vuejs

Vamos conhecer uma propriedade chamada methods. Dentro dela vamos criar nossos métodos.

Para começar, vamos criar o método say(), ele será uma função e vai retornar uma string.

E para chamar esse método dentro do template, fazemos da seguinte forma:

Vamos adicionar um <p>{{ say() }}</p>. Dessa forma, conseguimos acessar esse método say() e será renderizado o retorno “Ola, terraqueo!”

Podemos ver o resultado no navegador:

Com isso, a gente percebe que o Vuejs cria acessos diretos, quando se trabalha, por exemplo, dentro do template. Não é necessário armazenar a instancia do Vue em uma variável como, por exemplo, algo do tipo var.methods.say.

Ao invés disso, temos o acesso direto como vimos acima, como também temos acesso direto a tudo que está dentro de data.

É importante pontuar que tudo que vai ser interpretado dentro do {{ }} precisa ser retornado como string, tanto no caso do message, como no caso do método say.

Isso porque o HTML é um padrão textual – isso quer dizer que o que é renderizado no html não tem tipo objeto, nem boolean, etc. Tudo que vai ser jogado para o html deve ser string.

Acessando os dados na instância Vuejs

Para acessarmos dados na instância do Vue, por exemplo, em nosso método say(), gostaríamos de acessar o message.

Para isso, seria bem fácil. Basta usar o this, já que, como mencionado anteriormente, conseguimos acessar de forma direta.

Tudo isso porque o this, nesse contexto, representa a instância do Vue. Como vemos abaixo, temos a instância do Vue e dentro dela temos tanto a message quanto a função say.

Por estar dentro da instância do vue, não podemos, por exemplo, repetir a nomenclatura.

Se criasse uma função com o mesmo nome, por exemplo, função com nome message, ele daria conflito, porque identificaria que message já foi definido como um dado com esse nome.

Fazendo binding de atributos

  • Como faríamos se quiséssemos passar um link para o href ?

Primeira coisa que faremos é colocar um <a href="">Vuejs</a> lá no template. Depois, criaremos um atributo em data, com nome url e passaremos o valor do endereço que queremos acessar.

E se tentássemos colocar {{ url }} dentro da propriedade da tag o valor da url:

Daria erro e esse link não funcionaria. Ele não foi interpolado no contexto de um atributo de uma tag.

A forma correta para fazer isso é usando a diretiva chamada v-bind:. Depois dos : colocamos o nome da propriedade que desejamos que seja interpretada pelo Vue.

O v-bind serve para fazer essa ligação entre algo que está na instância do Vue e um atributo da sua tag dentro do template.

Diretivas são atributos especiais com o v- prefixo. Espera-se que os valores dos atributos diretivos sejam uma única expressão JavaScript (com exceção de v-for).

O trabalho de uma diretiva é aplicar efeitos colaterais de maneira reativa ao DOM quando o valor de sua expressão é alterado.

Bem, chegamos ao final dessa primeira parte.

Conclusão

Chegamos ao final da primeira parte sobre a base do Vuejs. Falamos um pouco sobre o template, a instância do Vuejs e binding de atributos.

Até os próximos artigos!