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!