SlideShare uma empresa Scribd logo
MEAN Stack
Bruno Gama Catão
O que veremos
• Introdução à linguagem JavaScript
• Primeiros passos com NodeJS
• MEAN Stack:
• Aplicação web client-server padrão
• Aplicação RIA com AngularJS
Introdução a JavaScript
Esta imersão é baseada no ótimo
livro “JavaScript: The Good Parts”
de Douglas Crockford
História e por quê ...
• É a linguagem do browser
• A linguagem mais popular do mundo
• Feita em 1995 para o Netscape 2.0 sob
o nome de Mocha depois LiveScript e
por fim JavaScript (ECMA Script)
• A Microsoft adotou JavaScript no IE 3.0
em 1996
Brendan Eich
O porquê da má fama
• Sempre foi “a outra”
• Nome terrível !
• Control + C e Control + V
• APIs diferentes entre browsers
• Algumas características bem ruins (bad parts)
The bad parts
• Variáveis globais
• Escopo
• Inserção de ponto-e-vírgula
• Palavras reservadas
• parseInt
• +
• Valores falsos
• ==
... vamos nos focar nas partes boas !
The good parts
• Funções como valores
• Objetos dinâmicos
• Tipos fracos
• JSON
... e mais importante
não dá para fugir
Ambiente de testes
• Você vai precisar:
• Editor de texto
• Browser
• Conexão com a Internet
Ambiente de testes
• O que nós usaremos:
• WebStorm
• Chrome
WebStorm
• IDE para desenvolvimento web
• Desenvolvido pela JetBrains
• IntelliJ - PyCharm - RubyMine - ReSharper
• https://www.jetbrains.com/webstorm/
• Trial grátis por 30 dias
Chrome
• Browser desenvolvido pelo Google
• Ferramentas de desenvolvimento
• Console e Monitor de Rede
• Engine JavaScript rápida (V8)
• Suporte quase total aos novos padrões
• HTML5, CSS3 e ECMASCRIPT 6
Nosso Primeiro Projeto
1. Abra o WebStorm
Nosso Primeiro Projeto
2. Clique em “Create New Project"
Nosso Primeiro Projeto
3. Clique em “Empty Project"
4. Chame o projeto de “Projeto 1"
Nosso Primeiro Projeto
5. Clique com o botão direito em “Projeto 1"
6. Clique em “New"
7. Clique em “HTML File"
Nosso Primeiro Projeto
8. Preencha o nome com "index"
index.html é o nome padrão da
página html principal de um website
Nosso Primeiro Projeto
9. Modifique o título da página
10. Adicione algum conteúdo
Nosso Primeiro Projeto
Dica: Pressione TAB para ir do título ao corpo.
Digite o nome da tag (ex. h1) e pressione TAB.
Dica: Deixe o cursor do mouse sobre o
conteúdo para mostrar esses botões.
Nosso Primeiro Projeto
11. Clique com o botão direito em “Projeto 1"
12. Clique em “New"
13. Clique em “Directory"
Nosso Primeiro Projeto
14. Preencha o nome com "js"
É uma boa prática criar pastas para organizar
os diferentes tipos de recursos (js, css, img …)
Nosso Primeiro Projeto
15. Clique com o botão direito em “js"
16. Clique em “New"
17. Clique em “JavaScript File"
Nosso Primeiro Projeto
18. Preencha o nome com "app"
O script principal de uma aplicação
normalmente é chamado de app.js ou main.js
NÃO escreva a
extensão do
arquivo !
Nosso Primeiro Projeto
19. Digite esse script
Nosso Primeiro Projeto
20. Clique em “index.html"
21. Adicione esse bloco
Nosso Primeiro Projeto
Tag “pre”: Faz com que o seu conteúdo seja
exibido obedecendo sua formatação original
Tag “script”: Carrega o script localizado no
caminho informado no atributo "src"
Use caminhos relativos !
Toda tag (<tag>) deve ser fechada (</tag>)
Nosso Primeiro Projeto
22. Clique com o botão direito em “js"
23. Clique em “Run ‘index.html'"
Nosso Primeiro Projeto
FUNCIONOU !!!
Atenção à barra de endereços.
O WebStorm inicia um servidor web para exibir nossa página.
Essa ação é necessária pois há algumas funções que o
navegador não executa localmente, devido à sua política de
segurança.
Um pouco de sintaxe
É importante para a sabermos como
escrever nossos programas !
Strings
• Aspas:
• “Fulano de Tal”
• Apóstrofos :
• ‘123 Testando’
Strings
• Propriedades:
• length - Quantidade de caracteres
• Métodos:
• indexOf(str)
• replace(a, b)
• split(delimitador)
• substring(inicio, fim)
• toLowerCase( )
• toUpperCase( )
Strings
• Conversões:
• parseInt(str) - String para inteiro
• parseFloat(str) - String para float
Booleanos
true e false
‣ Valores falsos:
‣ false
‣ null
‣ undefined
‣ String vazio ‘’
‣ 0
‣ NaN
Arrays (literais)
• Vazio:
• [ ]
• new Array( )
• Com elementos:
• [‘banana’, ‘laranja’, ‘pitomba’]
Arrays
• Exemplo:
var carros = new Array( );
carros[0] = “Volvo”;
carros[1] = “BMW”;
carros[2] = “Mercedes”;
• Tamanho do array:
document.writeln(carros.length);
• Acessando valores:
document.writeln(carros[1]);
Statements
COMENTÁRIOS
• De linha
• // Comentário
• De bloco
• /* Comentário de 1 ou n linhas */
VARIÁVEIS
• var nome = expressão;
• Exemplo:
• var idade = 20;
• var pais = ‘Brasil’;
IF
• Exemplo:
var saldo = 10.0;
// Verificando se o saldo é suficiente
if (saldo < 0) {
document.writeln (“Saldo insuficiente”);
} else {
document.writeln (“Operação realizada”);
}
Operadores Relacionais
• > Maior
• >= Maior ou igual
• < Menor
• <= Menor ou igual
• == Igual
• != Diferente
• === Igual
• !== Diferente
cuidado com == e !=
==
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' trn ' == 0 // true
SEMPRE use === e !==
===
'' == '0' // false
0 == '' // false
0 == '0' // false
false == 'false' // false
false == '0' // false
false == undefined // false
false == null // false
null == undefined // false
' trn ' == 0 // false
Operadores Lógicos
• && e lógico (AND)
• || ou lógico (OR)
CURTO CIRCUITO
Curto Circuito
• Os operadores lógicos têm curto circuito
• Assim que for possível inferir o valor da expressão,
sua avaliação é interrompida
• &&:
• Assim que um valor false for encontrado toda a
expressão será false
• ||:
• Assim que um valor true for encontrado toda a
expressão será true
WHILE
• Exemplo:
var contador = 10;
// Contagem regressiva
while (contador >= 0) {
document.writeln(contador);
contador--;
}
FOR
FOR
• Exemplo:
for (var i = 0; i < 100; i++) {
document.writeln(i);
}
• Exemplo:
var nomes = ['fulano', 'cicrano', 'beltrano'];
for (var indice in nomes) {
document.writeln(nomes[indice]);
}
FUNÇÕES
FUNÇÕES
• Exemplo:
function soma(a, b) {
return a + b;
}
• Exemplo:
var maior = function(a, b) {
if (a > b) {
return a;
} else {
return b;
}
}
Uma variável com uma função !
OBJETOS
• Em JavaScript objetos guardam um
conjunto de duplas chave-valor
• Por exemplo, um objeto vôo pode ter a
seguinte chave: horário, com o valor:
“18:30”
OBJETOS
• Objeto vazio:
• Objeto com propriedades:
var candidato = {
nome: "Manoel da Silva",
idade: 28,
terceiroGrau: true,
cargoPretendido: "Analista de Sistemas"
}
var objeto = {}
OBJETOS
• Podem ser complexos:
var voo = {
companhia: "Oceanic",
numero: 815,
partida: {
aeroporto: "SYD",
horario: "22/09/2004 14:55",
cidade: "Sydney"
},
chegada: {
aeroporto: "LAX",
horario: "23/09/2004 10:42",
cidade: "Los Angeles"
}
}
Acessando valores
• candidato[“nome”]
• candidato.nome
• voo.partida.horario
Atribuindo valores
• candidato.idade = 29
• candidato[‘aprovado’] = false
• voo.situacao = ‘Desaparecido’
CONSTRUTORES
• Um construtor é uma função normal
que cria um novo objeto utilizando a
variável implícita this
• Um construtor deve ser sempre
chamado utilizando o comando new
CONSTRUTORES
function Conta(titular) {
this.titular = titular;
this.saldo = 0;
this.depositar = function(valor) {
this.saldo += valor;
};
this.sacar = function(valor) {
this.saldo -= valor;
};
this.transferir = function(outraConta, valor) {
this.sacar(valor);
outraConta.depositar(valor);
}
}
CONSTRUTORES
var c1 = new Conta("Pedro");
var c2 = new Conta("Maria");
c1.depositar(100);
c2.depositar(50);
c1.transferir(c2, 60);
document.writeln(c1.titular + " - R$ " + c1.saldo);
document.writeln(c2.titular + " - R$ " + c2.saldo);
PROTOTYPE
• Todos os objetos estão ligados a um
prototype
• Os objetos heram suas propriedades deste
prototype
• Alterando-se o prototype, altera-se todos os
objetos ligados a ele
• Todos os prototypes herdam de
Object.prototype
PROTOTYPE
Conta.prototype.toString = function() {
return this.titular + " - R$ " + this.saldo;
};
document.writeln(c1.toString());
document.writeln(c2.toString());
PROTOTYPE
Number.prototype.dinheiro = function() {
var valor = "" + this.toFixed(2);
valor = valor.replace(".", ",");
return "R$ " + valor;
}
var salario = 649.67;
document.writeln(salario.dinheiro());
REFLEXÃO
• typeof
• Retorna um String com o tipo de um
valor
• Exemplo:
document.writeln(typeof Conta);
document.writeln(typeof c1);
document.writeln(typeof c1.titular);
document.writeln(typeof c1.saldo);
document.writeln(typeof c1.sacar);
REFLEXÃO
• É possível utilizar um for para
percorrer as propriedades de um objeto:
document.writeln("Analisando o objeto c1 ...");
for (propriedade in c1) {
if (typeof c1[propriedade] === 'function') {
document.writeln(" Metodo: " + propriedade);
} else {
document.writeln(" Atributo: " + propriedade);
}
}
EXCEÇÕES
• O tratamento de exceções permite a
notificação (lançamento) e o tratamento
de situações de falha
EXCEÇÕES
• Lançamento de exceções:
• throw valor
• Exemplo:
...
this.sacar = function(valor) {
if (valor > this.saldo) {
throw "Saldo Insuficiente";
}
this.saldo -= valor;
};
...
EXCEÇÕES
• Tratamento:
var c1 = new Conta("Pedro");
try {
c1.sacar(500);
} catch (erro) {
document.writeln("Erro: " + erro);
}
NodeJS
• JavaScript no Servidor !
• Um único Thread
• Escala
• Velocidade
NodeJS - História
• Criado por Ryan Dahl em 2009
• Baseado no interpretador V8 do Google
• Código aberto, porém é mantido pela empresa Joyent
http://nodejs.org http://www.joyent.com
Próximos Passos
• Baixe o Git (e instale)
• Baixe o NodeJS (e instale)
• Vamos criar um projeto !
GIT ?!
• Sistema de controle de versões com excelente
suporte para projetos colaborativos
• Feito por Linus Torvalds
• Base da maior rede social / repositório de código
online - GitHub (https://github.com/)
• A maioria dos projetos open source atuais está
hospedada em algum repositório git
O que significa GIT ?
• Segundo o readme no código fonte do GIT:
GIT - the stupid content tracker
"git" can mean anything, depending on your mood.
- random three-letter combination that is pronounceable, and not
actually used by any common UNIX command. The fact that it is a
mispronounciation of "get" may or may not be relevant.
- stupid. contemptible and despicable. simple. Take your pick from
the dictionary of slang.
- "global information tracker": you're in a good mood, and it
actually works for you. Angels sing, and a light suddenly fills
the room.
- "goddamn idiotic truckload of sh*t": when it breaks
Baixe o GIT
https://git-scm.com/downloads
Instale o GIT
ATENÇÃO: Marque essa opção
na instalação !!!
Baixe o NodeJS
Vamos criar outro projeto !
Passo a Passo
1. No WebStorm criem um novo projeto:
• Tipo “Empty Project”
• Nome “projeto2"
2. No projeto2, crie um arquivo JavaScript:
• Nome: “index.js”
Isso vocês já sabem fazer ;)
É pra ficar assim
Mudei o tema de “Darkula” para “Default"
(acho que fica melhor para o datashow)
mexam nas configurações,tentem mudar os temas
Passe o mouse aqui nesse ícone ;)
Abram o terminal pelo
WebStorm
Clique em “Terminal"
npm init
Digite npm init
Pressione ENTER
npm init
• Esse comando vai configurar um novo projeto NodeJS
que utiliza pacotes npm
• Responda as perguntas:
• Pode pressionar ENTER em todas por enquanto ;)
• O npm irá criar um arquivo chamado package.json
Modifique o index.js
Digite esse código
LEMBRE-SE DE SALVAR !
Como executar ?
• Na janela do terminal você pode digitar:
• node index
• Porém vamos aprender como configurar o WebStorm
Abra o arquivo package.json
Vamos editar essa linha
Edite o arquivo package.json
Substitua por essa
Criamos um novo comando
chamado start
Testando o comando start
• Na janela do terminal digite:
• npm run start
Olha o Hello World aí !
Ensinando o WebStorm como
executar nosso comando
1. Clique aqui
2. Depois aqui
Ensinando o WebStorm como
executar nosso comando
3. Clique aqui
Ensinando o WebStorm como
executar nosso comando
4. Clique em npm
Ensinando o WebStorm como
executar nosso comando
5. Name: projeto2
6. Selecione o
package.json do
projeto
7. Selecione o
script start
8. Clique em OK
Ensinando o WebStorm como
executar nosso comando
Para executar, clique aqui ;)
Vamos praticar
• Edite o arquivo index.js
• Deixe como está no próximo slide
Exercício
• Crie um método sacar que recebe como argumento o
valor e o subtrai do saldo
• Teste esse método da seguinte forma:
• Crie uma conta c2
• Deposite 500
• Saque 75
• Exiba no console a conta c2
Método sacar
Exercício
• Crie um método transferir com os argumentos:
• valor - Valor que será transferido
• contaDestino - Conta para qual o valor será
transferido
• Crie também o código para testar o funcionamento
desse método
Método depositar
Por que eu chamei os métodos ao
invés de alterar o valor do saldo
diretamente ?
E se a conta não tiver
saldo ?
• Façam o teste, nossa classe permite sacar qualquer
quantia de dinheiro, independente do titular ter saldo
ou não;
• Como você resolveria esse problema ?
Método sacar 2.0
Leia os erros
VOCÊ deve ler e entender os erros.
Não tenha medo nem os ignore !
Arquivo e linha onde no
qual o erro foi originado
Mensagem
Local que executou o
código que acarretou
no erro
Módulos
• NodeJS permite organizar uma aplicação em vários
arquivos (módulos)
• Crie um nodo arquivo JavaScript chamado “conta”
• Copie a definição da classe Conta (contrutor e
métodos) para dentro desse arquivo
conta.js
index.js
posso executar ?
• Tente !
• Você vai ver que …
O script index não sabe o que é uma Conta.
Precisamos transformar o script conta.js em um
módulo.
Módulos
• Um módulo exporta seus valores, funções e objetos
utilizando:
• module.exports ou exports
• Para usar um módulo deve-se utilizar:
• require(‘caminho para o módulo’)
conta.js
Adicione essa linha
index.js Adicione essas 2 linhas
index.js
Use caminhos relativos
JSON
• JavaScript Object Notation
• Formato textual para representação de objetos
JavaScript
• Muito utilizado para troca de informações entre
aplicações
• Duas funções muito simples:
• json = JSON.stringify(obj)
• obj = JSON.parse(json)
Exercício
• Modifique o script index para converter o array das
contas c e c2 em um string JSON:
• Array c e c2: [c, c2]
Entrada e Saída
• Módulo fs
• Vamos armazenar esse string json em um arquivo
• Depois vamos carregar o array de contas desse
arquivo
Módulo fs
• fs = require(‘fs’)
• fs.writeFile(arquivo, conteúdo, callback)
• fs.readFile(arquivo, callback)
Callback ?!
• Esse é o GRANDE pulo do gato do NodeJS
• Operações demoradas, como entrada e saída, são
realizadas de modo assíncrono
• Ou seja, você diz para executar a operação e informa
uma função que será chamada quando a operação
terminar (callback)
• Essa característica torna aplicações NodeJS bastante
escaláveis
index.js
Arquivo contas.json criado
Vamos ler as contas do
arquivo ?
• Vamos modificar nosso script para carregar as contas
a partir do arquivo “contas.json"
index.js
Saída
MongoDB
• HuMONGOus (gigantesco)
• Banco NoSQL orientado a documentos
• Desenvolvido em 2007 pela 10gen
MongoDB - Conceitos
• Documento:
• Conjunto de dados (semelhante a um objeto)
• Os dados não precisam seguir a um esquema
• É possível criar documentos com dados simples,
compostos (outros documentos) e coleções (arrays)
• Coleções: conjunto de documentos
• Banco de Dados: conjunto de coleções
Próximos Passos
• Baixe o MongoDB
• https://www.mongodb.org/
• Instale o MongoDB
• Instalação simples (basta escolher o local e pronto)
• Crie a pasta padrão do banco de dados:
• C:datadb
• Execute o servidor (mongod)
mongo shell
• Execute o aplicativo “mongo.exe”
• No shell vamos digitar alguns comandos
Criar / Usar um Banco de Dados
• use nome_do_banco_de_dados
• Ex:
• use blog
Inserir um documento em
uma coleção
• db.nome_da_colecao.insert(objeto)
• Ex:
db.posts.insert({autor: ‘Fulano’, texto: ‘Teste’, criado_em: new Date( )})
Consultando todos os
documentos de uma coleção
• db.nome_da_colecao.find( )
• Ex:
• db.posts.find( )
{ "_id" : ObjectId("56ac0bcd18608059723e7bb9"), "autor" : "Fulano", "texto" : "123
Testando", "criado_em" : ISODate("2016-01-30T01:03:09.072Z") }
id criado automaticamente
Consultando documentos
por valor
• db.nome_da_colecao.find(objeto)
• Ex:
• db.posts.find({autor: “Fulano”})
Atualizando um documento
• db.nome_da_colecao.update(obj_busca, obj_atualizacao)
• Ex:
• db.posts.update({autor: “Fulano”}, {texto: “CENSURADO”})
Operadores de Atualização
• Realizam operações sobre os valores de um documento
• Alguns operadores:
• $inc - Incrementa o atributo pelo valor informado
• $mul - Multiplica o atributo pelo valor informado
• $set - Atribui o valor informado ao atributo
• $min - Atualiza o valor apenas se for menor que o informado
• $max - Atualiza o valor apenas se for maior que o informado
Operadores de Atualização
• Exemplo:
• use estoque
• db.produtos.insert({cod: 123, nome: ‘Durex’, qtd: 10})
• db.produtos.update({cod: 123}, {$inc: {qtd: -1}})
• db.produtos.find( )
{ "_id" : ObjectId("56ac0f7018608059723e7bba"), "cod" :
123, "nome" : "Durex", "qtd" : 9 }
Excluindo um documento
• db.nome_da_colecao.remove(objeto)
• Ex:
• db.produtos.remove({cod: 123})
Fechando o shell
• Digite "exit"
MongooseJS
• Mapeia objetos NodeJS para documentos MongoDB
• Instalação via npm
• No seu projeto, abra a janela do terminal e digite:
• npm install --save mongoose
Não feche a janela
do mongod !
Abra o arquivo index.js
Use o módulo mongoose
• var mogoose = require(‘mongoose');
Abra uma conexão com o
banco de dados
• mongoose.connect(‘mongodb://localhost/estoque');
endereço do host
nome do banco de dados
Obtenha a conexão
• var db = mongoose.connection;
Defina o esquema de um
produto
var ProdutoSchema = new mongoose.Schema( {
cod: Number,
nome: String,
qtd: Number
} );
Crie um modelo a partir do
esquema
var Produto = mongoose.model(‘Produto’, ProdutoSchema);
Criando um produto quando
a conexão estiver aberta
db.once(‘open’, function ( ) {
var coca = new Produto({cod: 321, nome: “Coca Cola”, qtd: 22});
coca.save(function(err) {
if (err) throw err;
console.log(“Produto criado com sucesso !”);
} );
} );
index.js
Criando uma aplicação web
client-server padrão
Web Client-Server Padrão
• Cliente “burro" - Apenas exibe informação
• Todo o processamento é feito no servidor
• Tecnologias:
• MongoDB + NodeJS (Jade) + ExpressJS
Web Client-Server Padrão
• Crie um novo projeto do tipo Node.js Express App:
nome: web1
clique em Create
Seu novo projeto
Execute pra ver ;)
Servidor funcionando
Escutando na porta 3000
Quando quiser parar o servidor
clique aqui
Abra um browser
Vá até esse endereço
Funcionou !!!
Daqui pra frente o passo a
passo é ao vivo ;)

Mais conteúdo relacionado

Mais procurados

55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
Stephen Chin
 

Mais procurados (20)

Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
Java script aula 07 - j-query
Java script   aula 07 - j-queryJava script   aula 07 - j-query
Java script aula 07 - j-query
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Introdução ao JQuery e AJAX
Introdução ao JQuery e AJAXIntrodução ao JQuery e AJAX
Introdução ao JQuery e AJAX
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
Introdução a Desenvolvimento Web
Introdução a Desenvolvimento WebIntrodução a Desenvolvimento Web
Introdução a Desenvolvimento Web
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
jQuery Simplificando o JavaScript
jQuery Simplificando o JavaScriptjQuery Simplificando o JavaScript
jQuery Simplificando o JavaScript
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Angular js
Angular jsAngular js
Angular js
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 

Destaque

Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
Rob Davarnia
 

Destaque (17)

Python 05
Python 05Python 05
Python 05
 
Python 02
Python 02Python 02
Python 02
 
Python 03
Python 03Python 03
Python 03
 
Python 04
Python 04Python 04
Python 04
 
MEAN Stack Warm-up
MEAN Stack Warm-upMEAN Stack Warm-up
MEAN Stack Warm-up
 
Python 01
Python 01Python 01
Python 01
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
Retina e Retinose Pigmentar
Retina e Retinose PigmentarRetina e Retinose Pigmentar
Retina e Retinose Pigmentar
 
Building an E-commerce website in MEAN stack
Building an E-commerce website in MEAN stackBuilding an E-commerce website in MEAN stack
Building an E-commerce website in MEAN stack
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Starting from Scratch with the MEAN Stack
Starting from Scratch with the MEAN StackStarting from Scratch with the MEAN Stack
Starting from Scratch with the MEAN Stack
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Mean full stack development
Mean full stack developmentMean full stack development
Mean full stack development
 
เรียนรู้ Node JS แบบสบายๆ สำหรับผู้เริ่มต้น
เรียนรู้ Node JS แบบสบายๆ สำหรับผู้เริ่มต้นเรียนรู้ Node JS แบบสบายๆ สำหรับผู้เริ่มต้น
เรียนรู้ Node JS แบบสบายๆ สำหรับผู้เริ่มต้น
 
The MEAN stack - SoCalCodeCamp - june 29th 2014
The MEAN stack - SoCalCodeCamp - june 29th 2014The MEAN stack - SoCalCodeCamp - june 29th 2014
The MEAN stack - SoCalCodeCamp - june 29th 2014
 

Semelhante a Introdução à MEAN Stack

Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
LuanDev1
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
Wesley Lemos
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
Carlos Santos
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
JogosUnisinos
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
Wesley Lemos
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
Wesley Lemos
 
Curso lógica de programação
Curso   lógica de programaçãoCurso   lógica de programação
Curso lógica de programação
Paulo Batista
 

Semelhante a Introdução à MEAN Stack (20)

Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 
Tema 2 | Linguagem PHP Básico (II)
Tema 2 | Linguagem PHP Básico (II)Tema 2 | Linguagem PHP Básico (II)
Tema 2 | Linguagem PHP Básico (II)
 
Javascript
JavascriptJavascript
Javascript
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
2ª aula php
2ª aula php2ª aula php
2ª aula php
 
Programando em Go
Programando em GoProgramando em Go
Programando em Go
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
 
Java script1
Java script1Java script1
Java script1
 
Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]Desenvolvendo com Silverlight para WP7 Mango [Update]
Desenvolvendo com Silverlight para WP7 Mango [Update]
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Curso lógica de programação
Curso   lógica de programaçãoCurso   lógica de programação
Curso lógica de programação
 

Mais de Bruno Catão (11)

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Node JS - Parte 4
Node JS - Parte 4Node JS - Parte 4
Node JS - Parte 4
 
Node JS - Parte 3
Node JS - Parte 3Node JS - Parte 3
Node JS - Parte 3
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
O framework spring
O framework springO framework spring
O framework spring
 

Introdução à MEAN Stack

  • 2. O que veremos • Introdução à linguagem JavaScript • Primeiros passos com NodeJS • MEAN Stack: • Aplicação web client-server padrão • Aplicação RIA com AngularJS
  • 3. Introdução a JavaScript Esta imersão é baseada no ótimo livro “JavaScript: The Good Parts” de Douglas Crockford
  • 4. História e por quê ... • É a linguagem do browser • A linguagem mais popular do mundo • Feita em 1995 para o Netscape 2.0 sob o nome de Mocha depois LiveScript e por fim JavaScript (ECMA Script) • A Microsoft adotou JavaScript no IE 3.0 em 1996 Brendan Eich
  • 5. O porquê da má fama • Sempre foi “a outra” • Nome terrível ! • Control + C e Control + V • APIs diferentes entre browsers • Algumas características bem ruins (bad parts)
  • 6. The bad parts • Variáveis globais • Escopo • Inserção de ponto-e-vírgula • Palavras reservadas • parseInt • + • Valores falsos • ==
  • 7. ... vamos nos focar nas partes boas !
  • 8. The good parts • Funções como valores • Objetos dinâmicos • Tipos fracos • JSON
  • 9. ... e mais importante
  • 10. não dá para fugir
  • 11. Ambiente de testes • Você vai precisar: • Editor de texto • Browser • Conexão com a Internet
  • 12. Ambiente de testes • O que nós usaremos: • WebStorm • Chrome
  • 13. WebStorm • IDE para desenvolvimento web • Desenvolvido pela JetBrains • IntelliJ - PyCharm - RubyMine - ReSharper • https://www.jetbrains.com/webstorm/ • Trial grátis por 30 dias
  • 14. Chrome • Browser desenvolvido pelo Google • Ferramentas de desenvolvimento • Console e Monitor de Rede • Engine JavaScript rápida (V8) • Suporte quase total aos novos padrões • HTML5, CSS3 e ECMASCRIPT 6
  • 15. Nosso Primeiro Projeto 1. Abra o WebStorm
  • 16. Nosso Primeiro Projeto 2. Clique em “Create New Project"
  • 17. Nosso Primeiro Projeto 3. Clique em “Empty Project" 4. Chame o projeto de “Projeto 1"
  • 18. Nosso Primeiro Projeto 5. Clique com o botão direito em “Projeto 1" 6. Clique em “New" 7. Clique em “HTML File"
  • 19. Nosso Primeiro Projeto 8. Preencha o nome com "index" index.html é o nome padrão da página html principal de um website
  • 20. Nosso Primeiro Projeto 9. Modifique o título da página 10. Adicione algum conteúdo
  • 21. Nosso Primeiro Projeto Dica: Pressione TAB para ir do título ao corpo. Digite o nome da tag (ex. h1) e pressione TAB. Dica: Deixe o cursor do mouse sobre o conteúdo para mostrar esses botões.
  • 22. Nosso Primeiro Projeto 11. Clique com o botão direito em “Projeto 1" 12. Clique em “New" 13. Clique em “Directory"
  • 23. Nosso Primeiro Projeto 14. Preencha o nome com "js" É uma boa prática criar pastas para organizar os diferentes tipos de recursos (js, css, img …)
  • 24. Nosso Primeiro Projeto 15. Clique com o botão direito em “js" 16. Clique em “New" 17. Clique em “JavaScript File"
  • 25. Nosso Primeiro Projeto 18. Preencha o nome com "app" O script principal de uma aplicação normalmente é chamado de app.js ou main.js NÃO escreva a extensão do arquivo !
  • 26. Nosso Primeiro Projeto 19. Digite esse script
  • 27. Nosso Primeiro Projeto 20. Clique em “index.html" 21. Adicione esse bloco
  • 28. Nosso Primeiro Projeto Tag “pre”: Faz com que o seu conteúdo seja exibido obedecendo sua formatação original Tag “script”: Carrega o script localizado no caminho informado no atributo "src" Use caminhos relativos ! Toda tag (<tag>) deve ser fechada (</tag>)
  • 29. Nosso Primeiro Projeto 22. Clique com o botão direito em “js" 23. Clique em “Run ‘index.html'"
  • 30. Nosso Primeiro Projeto FUNCIONOU !!! Atenção à barra de endereços. O WebStorm inicia um servidor web para exibir nossa página. Essa ação é necessária pois há algumas funções que o navegador não executa localmente, devido à sua política de segurança.
  • 31. Um pouco de sintaxe É importante para a sabermos como escrever nossos programas !
  • 32. Strings • Aspas: • “Fulano de Tal” • Apóstrofos : • ‘123 Testando’
  • 33. Strings • Propriedades: • length - Quantidade de caracteres • Métodos: • indexOf(str) • replace(a, b) • split(delimitador) • substring(inicio, fim) • toLowerCase( ) • toUpperCase( )
  • 34. Strings • Conversões: • parseInt(str) - String para inteiro • parseFloat(str) - String para float
  • 35. Booleanos true e false ‣ Valores falsos: ‣ false ‣ null ‣ undefined ‣ String vazio ‘’ ‣ 0 ‣ NaN
  • 36. Arrays (literais) • Vazio: • [ ] • new Array( ) • Com elementos: • [‘banana’, ‘laranja’, ‘pitomba’]
  • 37. Arrays • Exemplo: var carros = new Array( ); carros[0] = “Volvo”; carros[1] = “BMW”; carros[2] = “Mercedes”; • Tamanho do array: document.writeln(carros.length); • Acessando valores: document.writeln(carros[1]);
  • 39. COMENTÁRIOS • De linha • // Comentário • De bloco • /* Comentário de 1 ou n linhas */
  • 40. VARIÁVEIS • var nome = expressão; • Exemplo: • var idade = 20; • var pais = ‘Brasil’;
  • 41. IF • Exemplo: var saldo = 10.0; // Verificando se o saldo é suficiente if (saldo < 0) { document.writeln (“Saldo insuficiente”); } else { document.writeln (“Operação realizada”); }
  • 42. Operadores Relacionais • > Maior • >= Maior ou igual • < Menor • <= Menor ou igual • == Igual • != Diferente • === Igual • !== Diferente
  • 44. == '' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' trn ' == 0 // true
  • 45. SEMPRE use === e !==
  • 46. === '' == '0' // false 0 == '' // false 0 == '0' // false false == 'false' // false false == '0' // false false == undefined // false false == null // false null == undefined // false ' trn ' == 0 // false
  • 47. Operadores Lógicos • && e lógico (AND) • || ou lógico (OR)
  • 49. Curto Circuito • Os operadores lógicos têm curto circuito • Assim que for possível inferir o valor da expressão, sua avaliação é interrompida • &&: • Assim que um valor false for encontrado toda a expressão será false • ||: • Assim que um valor true for encontrado toda a expressão será true
  • 50. WHILE • Exemplo: var contador = 10; // Contagem regressiva while (contador >= 0) { document.writeln(contador); contador--; }
  • 51. FOR
  • 52. FOR • Exemplo: for (var i = 0; i < 100; i++) { document.writeln(i); } • Exemplo: var nomes = ['fulano', 'cicrano', 'beltrano']; for (var indice in nomes) { document.writeln(nomes[indice]); }
  • 54. FUNÇÕES • Exemplo: function soma(a, b) { return a + b; } • Exemplo: var maior = function(a, b) { if (a > b) { return a; } else { return b; } } Uma variável com uma função !
  • 55. OBJETOS • Em JavaScript objetos guardam um conjunto de duplas chave-valor • Por exemplo, um objeto vôo pode ter a seguinte chave: horário, com o valor: “18:30”
  • 56. OBJETOS • Objeto vazio: • Objeto com propriedades: var candidato = { nome: "Manoel da Silva", idade: 28, terceiroGrau: true, cargoPretendido: "Analista de Sistemas" } var objeto = {}
  • 57. OBJETOS • Podem ser complexos: var voo = { companhia: "Oceanic", numero: 815, partida: { aeroporto: "SYD", horario: "22/09/2004 14:55", cidade: "Sydney" }, chegada: { aeroporto: "LAX", horario: "23/09/2004 10:42", cidade: "Los Angeles" } }
  • 58. Acessando valores • candidato[“nome”] • candidato.nome • voo.partida.horario
  • 59. Atribuindo valores • candidato.idade = 29 • candidato[‘aprovado’] = false • voo.situacao = ‘Desaparecido’
  • 60. CONSTRUTORES • Um construtor é uma função normal que cria um novo objeto utilizando a variável implícita this • Um construtor deve ser sempre chamado utilizando o comando new
  • 61. CONSTRUTORES function Conta(titular) { this.titular = titular; this.saldo = 0; this.depositar = function(valor) { this.saldo += valor; }; this.sacar = function(valor) { this.saldo -= valor; }; this.transferir = function(outraConta, valor) { this.sacar(valor); outraConta.depositar(valor); } }
  • 62. CONSTRUTORES var c1 = new Conta("Pedro"); var c2 = new Conta("Maria"); c1.depositar(100); c2.depositar(50); c1.transferir(c2, 60); document.writeln(c1.titular + " - R$ " + c1.saldo); document.writeln(c2.titular + " - R$ " + c2.saldo);
  • 63. PROTOTYPE • Todos os objetos estão ligados a um prototype • Os objetos heram suas propriedades deste prototype • Alterando-se o prototype, altera-se todos os objetos ligados a ele • Todos os prototypes herdam de Object.prototype
  • 64. PROTOTYPE Conta.prototype.toString = function() { return this.titular + " - R$ " + this.saldo; }; document.writeln(c1.toString()); document.writeln(c2.toString());
  • 65. PROTOTYPE Number.prototype.dinheiro = function() { var valor = "" + this.toFixed(2); valor = valor.replace(".", ","); return "R$ " + valor; } var salario = 649.67; document.writeln(salario.dinheiro());
  • 66. REFLEXÃO • typeof • Retorna um String com o tipo de um valor • Exemplo: document.writeln(typeof Conta); document.writeln(typeof c1); document.writeln(typeof c1.titular); document.writeln(typeof c1.saldo); document.writeln(typeof c1.sacar);
  • 67. REFLEXÃO • É possível utilizar um for para percorrer as propriedades de um objeto: document.writeln("Analisando o objeto c1 ..."); for (propriedade in c1) { if (typeof c1[propriedade] === 'function') { document.writeln(" Metodo: " + propriedade); } else { document.writeln(" Atributo: " + propriedade); } }
  • 68. EXCEÇÕES • O tratamento de exceções permite a notificação (lançamento) e o tratamento de situações de falha
  • 69. EXCEÇÕES • Lançamento de exceções: • throw valor • Exemplo: ... this.sacar = function(valor) { if (valor > this.saldo) { throw "Saldo Insuficiente"; } this.saldo -= valor; }; ...
  • 70. EXCEÇÕES • Tratamento: var c1 = new Conta("Pedro"); try { c1.sacar(500); } catch (erro) { document.writeln("Erro: " + erro); }
  • 71.
  • 72. NodeJS • JavaScript no Servidor ! • Um único Thread • Escala • Velocidade
  • 73. NodeJS - História • Criado por Ryan Dahl em 2009 • Baseado no interpretador V8 do Google • Código aberto, porém é mantido pela empresa Joyent http://nodejs.org http://www.joyent.com
  • 74. Próximos Passos • Baixe o Git (e instale) • Baixe o NodeJS (e instale) • Vamos criar um projeto !
  • 75. GIT ?! • Sistema de controle de versões com excelente suporte para projetos colaborativos • Feito por Linus Torvalds • Base da maior rede social / repositório de código online - GitHub (https://github.com/) • A maioria dos projetos open source atuais está hospedada em algum repositório git
  • 76. O que significa GIT ? • Segundo o readme no código fonte do GIT: GIT - the stupid content tracker "git" can mean anything, depending on your mood. - random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronounciation of "get" may or may not be relevant. - stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang. - "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room. - "goddamn idiotic truckload of sh*t": when it breaks
  • 78. Instale o GIT ATENÇÃO: Marque essa opção na instalação !!!
  • 80. Vamos criar outro projeto !
  • 81. Passo a Passo 1. No WebStorm criem um novo projeto: • Tipo “Empty Project” • Nome “projeto2" 2. No projeto2, crie um arquivo JavaScript: • Nome: “index.js” Isso vocês já sabem fazer ;)
  • 82. É pra ficar assim Mudei o tema de “Darkula” para “Default" (acho que fica melhor para o datashow) mexam nas configurações,tentem mudar os temas Passe o mouse aqui nesse ícone ;)
  • 83. Abram o terminal pelo WebStorm Clique em “Terminal"
  • 84. npm init Digite npm init Pressione ENTER
  • 85. npm init • Esse comando vai configurar um novo projeto NodeJS que utiliza pacotes npm • Responda as perguntas: • Pode pressionar ENTER em todas por enquanto ;) • O npm irá criar um arquivo chamado package.json
  • 86. Modifique o index.js Digite esse código LEMBRE-SE DE SALVAR !
  • 87. Como executar ? • Na janela do terminal você pode digitar: • node index • Porém vamos aprender como configurar o WebStorm
  • 88. Abra o arquivo package.json Vamos editar essa linha
  • 89. Edite o arquivo package.json Substitua por essa Criamos um novo comando chamado start
  • 90. Testando o comando start • Na janela do terminal digite: • npm run start Olha o Hello World aí !
  • 91. Ensinando o WebStorm como executar nosso comando 1. Clique aqui 2. Depois aqui
  • 92. Ensinando o WebStorm como executar nosso comando 3. Clique aqui
  • 93. Ensinando o WebStorm como executar nosso comando 4. Clique em npm
  • 94. Ensinando o WebStorm como executar nosso comando 5. Name: projeto2 6. Selecione o package.json do projeto 7. Selecione o script start 8. Clique em OK
  • 95. Ensinando o WebStorm como executar nosso comando Para executar, clique aqui ;)
  • 96. Vamos praticar • Edite o arquivo index.js • Deixe como está no próximo slide
  • 97.
  • 98. Exercício • Crie um método sacar que recebe como argumento o valor e o subtrai do saldo • Teste esse método da seguinte forma: • Crie uma conta c2 • Deposite 500 • Saque 75 • Exiba no console a conta c2
  • 100. Exercício • Crie um método transferir com os argumentos: • valor - Valor que será transferido • contaDestino - Conta para qual o valor será transferido • Crie também o código para testar o funcionamento desse método
  • 101. Método depositar Por que eu chamei os métodos ao invés de alterar o valor do saldo diretamente ?
  • 102. E se a conta não tiver saldo ? • Façam o teste, nossa classe permite sacar qualquer quantia de dinheiro, independente do titular ter saldo ou não; • Como você resolveria esse problema ?
  • 104. Leia os erros VOCÊ deve ler e entender os erros. Não tenha medo nem os ignore ! Arquivo e linha onde no qual o erro foi originado Mensagem Local que executou o código que acarretou no erro
  • 105. Módulos • NodeJS permite organizar uma aplicação em vários arquivos (módulos) • Crie um nodo arquivo JavaScript chamado “conta” • Copie a definição da classe Conta (contrutor e métodos) para dentro desse arquivo
  • 108. posso executar ? • Tente ! • Você vai ver que … O script index não sabe o que é uma Conta. Precisamos transformar o script conta.js em um módulo.
  • 109. Módulos • Um módulo exporta seus valores, funções e objetos utilizando: • module.exports ou exports • Para usar um módulo deve-se utilizar: • require(‘caminho para o módulo’)
  • 113. JSON • JavaScript Object Notation • Formato textual para representação de objetos JavaScript • Muito utilizado para troca de informações entre aplicações • Duas funções muito simples: • json = JSON.stringify(obj) • obj = JSON.parse(json)
  • 114. Exercício • Modifique o script index para converter o array das contas c e c2 em um string JSON: • Array c e c2: [c, c2]
  • 115. Entrada e Saída • Módulo fs • Vamos armazenar esse string json em um arquivo • Depois vamos carregar o array de contas desse arquivo
  • 116. Módulo fs • fs = require(‘fs’) • fs.writeFile(arquivo, conteúdo, callback) • fs.readFile(arquivo, callback)
  • 117. Callback ?! • Esse é o GRANDE pulo do gato do NodeJS • Operações demoradas, como entrada e saída, são realizadas de modo assíncrono • Ou seja, você diz para executar a operação e informa uma função que será chamada quando a operação terminar (callback) • Essa característica torna aplicações NodeJS bastante escaláveis
  • 119. Vamos ler as contas do arquivo ? • Vamos modificar nosso script para carregar as contas a partir do arquivo “contas.json"
  • 121.
  • 122. MongoDB • HuMONGOus (gigantesco) • Banco NoSQL orientado a documentos • Desenvolvido em 2007 pela 10gen
  • 123. MongoDB - Conceitos • Documento: • Conjunto de dados (semelhante a um objeto) • Os dados não precisam seguir a um esquema • É possível criar documentos com dados simples, compostos (outros documentos) e coleções (arrays) • Coleções: conjunto de documentos • Banco de Dados: conjunto de coleções
  • 124. Próximos Passos • Baixe o MongoDB • https://www.mongodb.org/ • Instale o MongoDB • Instalação simples (basta escolher o local e pronto) • Crie a pasta padrão do banco de dados: • C:datadb • Execute o servidor (mongod)
  • 125. mongo shell • Execute o aplicativo “mongo.exe” • No shell vamos digitar alguns comandos
  • 126. Criar / Usar um Banco de Dados • use nome_do_banco_de_dados • Ex: • use blog
  • 127. Inserir um documento em uma coleção • db.nome_da_colecao.insert(objeto) • Ex: db.posts.insert({autor: ‘Fulano’, texto: ‘Teste’, criado_em: new Date( )})
  • 128. Consultando todos os documentos de uma coleção • db.nome_da_colecao.find( ) • Ex: • db.posts.find( ) { "_id" : ObjectId("56ac0bcd18608059723e7bb9"), "autor" : "Fulano", "texto" : "123 Testando", "criado_em" : ISODate("2016-01-30T01:03:09.072Z") } id criado automaticamente
  • 129. Consultando documentos por valor • db.nome_da_colecao.find(objeto) • Ex: • db.posts.find({autor: “Fulano”})
  • 130. Atualizando um documento • db.nome_da_colecao.update(obj_busca, obj_atualizacao) • Ex: • db.posts.update({autor: “Fulano”}, {texto: “CENSURADO”})
  • 131. Operadores de Atualização • Realizam operações sobre os valores de um documento • Alguns operadores: • $inc - Incrementa o atributo pelo valor informado • $mul - Multiplica o atributo pelo valor informado • $set - Atribui o valor informado ao atributo • $min - Atualiza o valor apenas se for menor que o informado • $max - Atualiza o valor apenas se for maior que o informado
  • 132. Operadores de Atualização • Exemplo: • use estoque • db.produtos.insert({cod: 123, nome: ‘Durex’, qtd: 10}) • db.produtos.update({cod: 123}, {$inc: {qtd: -1}}) • db.produtos.find( ) { "_id" : ObjectId("56ac0f7018608059723e7bba"), "cod" : 123, "nome" : "Durex", "qtd" : 9 }
  • 133. Excluindo um documento • db.nome_da_colecao.remove(objeto) • Ex: • db.produtos.remove({cod: 123})
  • 134. Fechando o shell • Digite "exit"
  • 135. MongooseJS • Mapeia objetos NodeJS para documentos MongoDB • Instalação via npm • No seu projeto, abra a janela do terminal e digite: • npm install --save mongoose Não feche a janela do mongod !
  • 136. Abra o arquivo index.js
  • 137. Use o módulo mongoose • var mogoose = require(‘mongoose');
  • 138. Abra uma conexão com o banco de dados • mongoose.connect(‘mongodb://localhost/estoque'); endereço do host nome do banco de dados
  • 139. Obtenha a conexão • var db = mongoose.connection;
  • 140. Defina o esquema de um produto var ProdutoSchema = new mongoose.Schema( { cod: Number, nome: String, qtd: Number } );
  • 141. Crie um modelo a partir do esquema var Produto = mongoose.model(‘Produto’, ProdutoSchema);
  • 142. Criando um produto quando a conexão estiver aberta db.once(‘open’, function ( ) { var coca = new Produto({cod: 321, nome: “Coca Cola”, qtd: 22}); coca.save(function(err) { if (err) throw err; console.log(“Produto criado com sucesso !”); } ); } );
  • 144. Criando uma aplicação web client-server padrão
  • 145. Web Client-Server Padrão • Cliente “burro" - Apenas exibe informação • Todo o processamento é feito no servidor • Tecnologias: • MongoDB + NodeJS (Jade) + ExpressJS
  • 146. Web Client-Server Padrão • Crie um novo projeto do tipo Node.js Express App: nome: web1 clique em Create
  • 148. Servidor funcionando Escutando na porta 3000 Quando quiser parar o servidor clique aqui
  • 149. Abra um browser Vá até esse endereço Funcionou !!!
  • 150. Daqui pra frente o passo a passo é ao vivo ;)