Documentos de Académico
Documentos de Profesional
Documentos de Cultura
01. Binding:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Binding</title>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
novaTarefa: '',
tarefas: [
{nome: 'Fazer a compra'},
{nome: 'Gravar episódio'},
{nome: 'Editar episódio'}
],
},
methods: {
guardarTarefa: function(tarefa) {
if (tarefa.trim()) {
this.tarefas.push({nome: tarefa});
this.novaTarefa = '';
} else {
alert('Deves introduzir um nome para a tarefa');
}
},
eliminarTarefa: function(tarefa) {
if(confirm('Eliminar ' + tarefa.nome + '?')) {
this.tarefas.$remove(tarefa);
}
}
}
});
});
</script>
</head>
<body>
<div id="app">
<h4>Tarefas</h4>
</div>
</body>
</html>
02. Binding:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Binding</title>
<style type="text/css">
input, textarea {
display: block;
margin: 10px 0;
}
.alerta {
color: red;
font-weight: bold;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
mensage: '',
}
});
});
</script>
</head>
<body>
<div id="app">
<form action="">
</form>
<pre>
{{ $data | json }}
</pre>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Propriedades computadas</title>
<style type="text/css">
</style>
<link rel="stylesheet" href="assets/css/bootstrap/3.3.7/bootstrap.min.css">
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
nome: '',
idade: '',
sexo: '',
correioe: ''
},
methods: {
enviarDados: function() {
if(this.nome && this.idade && this.sexo && this.correioe) {
alert('Enviando dados...');
} else {
alert('Preencha todos os campos.');
}
}
},
computed: {
todaInformacao: function() {
return this.nome && this.idade && this.sexo && this.correioe;
}
}
});
});
</script>
</head>
<body>
<div id="app">
<div class="form-group">
<input v-model="nome" type="text" placeholder="Nome"
class="form-control" >
</div>
<div class="form-group">
<input v-model="idade" type="number" placeholder="Idade"
class="form-control" >
</div>
<div class="form-group">
<input v-model="sexo" type="text" placeholder="Sexo"
class="form-control" >
</div>
<div class="form-group">
<input v-model="correioe" type="e-mail" placeholder="correio-e"
class="form-control" >
</div>
</form>
</div>
</div>
<pre>
{{ $data | json }}
</pre>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Eventos e Métodos</title>
<style type="text/css">
#app {
width: 400px;
margin: 20px auto;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
nome: 'Alan',
tecla: '',
},
methods: {
/*
saudar: function(nome, _evt) {
alert('Como vai ' + nome);
console.log(_evt);
}
*/
saudar: function(_evt) {
alert('Como vai ' + this.nome);
console.log(_evt);
},
/*
enviar: function(_evt) {
_evt.preventDefault();
alert('Enviando formulário');
},
*/
enviar: function() {
alert('Enviando formulário');
},
abrirEnlace: function() {
alert('Abrindo enlace');
},
teclaPressionada: function(_evt) {
this.tecla = _evt.code;
}
}
});
});
</script>
</head>
<body>
<div id="app">
</form>
<br><br><br>
<a @click.prevent="abrirEnlace"
href="https://www.google.com.br/webhp?lr=lang_pt">Google</a>
<br><br><br>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Renderizando listas</title>
<style type="text/css">
#app {
width: 400px;
margin: 20px auto;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
// Objeto
pessoa: {
nome: 'Alan Calazans',
profissao: 'dev',
cidade: 'Belo Horizonte'
},
// Matriz simples
numeros: [
1,2,3,4,5
],
// Matriz de objetos
semana: [
{nome: 'segunda-feira', numero: 1},
{nome: 'terça-feira', numero: 2},
{nome: 'quarta-feira', numero: 3},
{nome: 'quinta-feira', numero: 4},
{nome: 'sexta-feira', numero: 5},
{nome: 'sábado', numero: 6},
{nome: 'domingo', numero: 7},
],
});
});
</script>
</head>
<body>
<div id="app">
<h3>Objetos</h3>
<br>
<ul>
<li v-for="(dado, key) in pessoa">
{{ key }} - {{ dado }}
</li>
</ul>
<br>
<h3>Matriz simples</h3>
<br>
<ul>
<li v-for="numero in numeros">
{{ numero }}
</li>
</ul>
<br>
<h3>Matriz de objetos</h3>
<br>
<ul>
<li v-for="dia in semana">
{{ dia.nome }} {{ dia.numero }}
</li>
</ul>
<br>
<h3>Percorrer um range</h3>
<br>
<ul>
<li v-for="n in 5">
{{ n }}
</li>
</ul>
<br>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Data binding em estilos e classes</title>
<style type="text/css">
#app {
width: 400px;
margin: 20px auto;
}
.azul {
color: blue;
}
.sublinhado {
text-decoration: underline;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
// Objeto
azul: true,
sublinhado: false,
// Sintaxe de array
listaDeClasses: {
azul: 'azul',
sublinhado: 'sublinhado'
},
// Estilos diretos
colorFonte: 'green',
tamanhoFonte: '40px',
outroObjetoEstilo: {
textDecoration: 'underline', // camelCase
transform: 'rotate(30deg)'
},
color: '',
},
});
});
</script>
</head>
<body>
<div id="app">
<br><br>
<br>
<br>
<hr />
<h2 v-bind:class="objetoComClasses">
Sintaxe de objeto, forma direta
</h2>
<!--
Abaixo há um exemplo de atribuição de classes com condição ternária
-->
<h2 v-bind:class="[listaDeClasses.azul, sublinhado ?
listaDeClasses.sublinhado : '']">
Sintaxe de Array
</h2>
<!--
Como vemos abaixo, as propriedades compostas de CSS são escritas em
camelCase
-->
<h2 v-bind:style="{color: colorFonte, fontSize: tamanhoFonte}">
Estilos diretos
</h2>
<h2 v-bind:style="objetoEstilo">
Estilos diretos, através de um objeto
</h2>
<br><br><br><br><br>
<h2 v-bind:style="[objetoEstilo, outroObjetoEstilo]">
Estilos diretos, através de vários objetos
</h2>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Renderização condicional</title>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
ativado: true,
}
});
});
</script>
</head>
<body>
<div id="app">
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Introdução a componentes</title>
<style type="text/css">
#cita {
width: 600px;
position: relative;
margin: 20px auto;
padding: 20px;
background: white;
border-radius: 10px;
border: 1px solid #ccc;
box-shadow: 1px 1px 10px black;
}
h3 {
margin: 10px 0;
}
h2 {
color: blue;
margin: 0;
padding: 0;
position: absolute;
top: 10px;
right: 10px;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
Vue.component('citacao', {
data: () => ({
votos: '',
citacaoEscolhida: '',
citacoes: [
'“Toda hora é hora de fazer o que é certo.” - Martin Luther King',
'“O ser humano é aquilo que a educação faz dele.” - Immanuel Kant',
'“Eduquem as crianças e não será necessário castigar os homens.” -
Pitágoras',
'"A injustiça num lugar qualquer é uma ameaça à justiça em todo o lugar."
- Martin Luther King',
'"O que me preocupa não é o grito dos maus. É o silêncio dos bons." -
Martin Luther King',
'"Todos os homens têm, por natureza, desejo de conhecer" - Aristóteles',
'"O homem nasce livre e por toda parte encontra-se acorrentado" -
Jean-Jacques Rousseau',
'"A vontade geral deve emanar de todos para ser aplicada a todos" -
Jean-Jacques Rousseau.'
],
}),
created: function() {
this.escolherCitacao();
},
methods: {
escolherCitacao: function() {
var citacao = this.citacoes[Math.floor(Math.random() *
this.citacoes.length)];
this.citacaoEscolhida = citacao;
},
somarVoto: function() {
this.votos++;
},
subtrairVoto: function() {
if (this.votos > 0)
this.votos--;
},
},
})
new Vue({
el: '#app',
})
});
</script>
</head>
<body>
<div id="app">
<citacao></citacao>
<citacao></citacao>
<citacao></citacao>
</div>
</body>
</html>
09. Filtros:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Filtros</title>
<style type="text/css">
* {margin: 0; padding: 0;} /* Reset (remove a margem padrão do browser) */
#app {
width: 400px;
margin: 10px auto;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
dados: {
nome: 'Alan',
profissao: 'dev'
}
},
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
},
});
});
</script>
</head>
<body>
<div id="app">
<pre>{{ dados | json }}</pre>
<br>
<br>
</div>
</body>
</html>
10. Transições:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Transições</title>
<style type="text/css">
* {margin: 0; padding: 0;} /* Reset (remove a margem padrão do browser) */
#app {
width: 400px;
margin: 10px auto;
}
button {
margin-bottom: 10px;
}
p {
background-color: gray;
padding: 100px;
border: 1px solid black;
}
.fade-enter-active, .fade-leave-active {
transition: opacity .5s
}
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
show: true,
mensage: 'Transição'
}
});
});
</script>
</head>
<body>
<div id="app">
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Data binding em formulários</title>
<style type="text/css">
* {margin: 0; padding: 0;} /* Reset (remove a margem padrão do browser) */
#app {
width: 400px;
margin: 10px auto;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<script type="text/javascript">
$(function(){
new Vue({
el: '#app',
data: {
checked_checkbox: true,
checked_radio: true,
selecionado: '',
tarefas: [
{titulo: 'Aprender Vue.js'},
{titulo: 'Aprender Angular.js'},
{titulo: 'Aprender Vanilla JavaScript'}
]
}
});
});
</script>
</head>
<body>
<div id="app">
<pre>
{{ tarefas | json }}
</pre>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>Ajax com Vue-Resource</title>
<style type="text/css">
* {margin: 0; padding: 0;} /* Reset (remove a margem padrão do browser) */
#app {
width: 400px;
margin: 10px auto;
}
</style>
<script type="text/javascript"
src="assets/js/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="assets/js/vue/2.5.2/vue.min.js"></script>
<!-- https://github.com/pagekit/vue-resource -->
<script type="text/javascript"
src="assets/js/vue-resource/1.3.4/vue-resource.min.js"></script>
<script type="text/javascript">
$(function(){
var urlAPI = 'https://api.randomuser.me/?results=50';
new Vue({
el: '#app',
created: function() {
this.consultarAPI();
},
data: {
pessoas: []
},
methods: {
consultarAPI: function() {
// GET urlAPI
this.$http.get(urlAPI).then(response => {
}, response => {
// error callback
});
}
}
});
});
</script>
</head>
<body>
<div id="app">
<br><br>
<hr>
<pre>
{{ $data | json }}
</pre>
</div>
</body>
</html>