SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
começando com Meteor
por Flávio Junior - http://github.com/fjsj
O que é?
Meteor é uma plataforma open-source para
construção de web apps de qualidade top em
uma fração do tempo, seja você um
desenvolvedor expert ou apenas iniciante.
traduzido de http://www.meteor.com/
Meteor é implementado sobre node.js e por
padrão usa MongoDB como banco de dados
e Handlebars como linguagem de template.
Como?
001 - Tudo em JavaScript
002 - Atualização em tempo real de páginas
003 - Sincronização de dados cliente-servidor
004 - Compensação de latência
005 - Code pushes
006 - Código sensível em ambiente seguro
007 - App auto-contido para deploy
008 - Interoperabilidade via protocolo DDP
009 - Smart packages
traduzido de http://www.meteor.com/
001 - Tudo em JavaScript
Cliente e servidor usam JavaScript:
Sintaxe de consultas com o banco de dados é
praticamente idêntica a original do MongoDB.
if (Meteor.isClient) {
Template.leaderboard.players = function () {
return Players.find({}, {sort: {score: -1, name: 1}});
};
}
if (Meteor.isServer) {
Players.insert({name: "Fulano", score: 10});
}
002 - Atualização em tempo real de páginas
"No more boilerplate redraw code":
Templates reativos. Quando o valor mudar, ele
será atualizado automaticamente.
<template name="player">
<div class="player {{selected}}">
<span class="name">{{name}}</span>
<span class="score">{{score}}</span>
</div>
</template>
------------------------------------------------------------------
Players.update("507f191e810c19729de860ea", {$inc: {score: 5}});
002 - Atualização em tempo real de páginas
Como ter reatividade no client-side apenas
para o usuário atual? Use o módulo Session
Template.player.events({
'click': function () {
Session.set("selected_player", this._id);
}
});
Template.player.selected = function () {
return Session.equals("selected_player", this._id) ?
"selected" : '';
};
003 - Sincronização de dados cliente-servidor
"No more loading your data from REST
endpoints":
Acesso "direto" ao banco de dados a partir do
cliente.
if (Meteor.isClient) {
Template.leaderboard.players = function () {
return Players.find({}, {sort: {score: -1, name: 1}});
};
}
004 - Compensação de latência
Quando o usuário faz uma ação, a tela se
atualiza imediatamente. Se o servidor rejeitar a
mudança, a tela do cliente é corrigida de
acordo com o que aconteceu realmente.
005 - Code pushes
A melhor feature para desenvolver protótipos e
para atualizar o webapp sem incomodar o
usuário.
006 - Código sensível em ambiente seguro
Por questões de segurança, pode-se garantir
que o código rodará e estará disponível
apenas no servidor:
// código em um diretório server/methods.js
Meteor.methods({
fetchEvents: function (accessToken) {
// ...
}
});
007 - App auto-contido para deploy
Com o comando meteor bundle você monta
um pacote com a aplicação pronta para
deploy. Se quiser hospedar nos servidores do
próprio Meteor, você usa o comando meteor
deploy nomedoapp.meteor.com
008 - Interoperabilidade via protocolo DDP
Distributed Data Protocol é o protocolo por trás
da capacidade de reatividade e atualizações
em tempo-real dos aplicativos Meteor.
"DDP can work with any database, framework,
or programming language, and it can work on
servers, clients, and mobile devices. In fact,
you can call Meteor.connect to connect to any
DDP server -- such as a Meteor app written by
someone else! -- and make realtime
subscriptions to any data it's publishing."
009 - Smart packages
● Você pode usar pacotes prontos que
adicionam funcionalidades ao seu aplicativo
Meteor.
Exemplos de pacotes: underscore, d3, coffeescript.
● Pacotes são diferentes de módulos npm,
mas você pode utilizá-los em seus pacotes
Meteor.
● Também existe um repositório com pacotes
open-source da comunidade Meteor. Se
chama Atmosphere: https://atmosphere.meteor.
com/
Exemplo
Conferir o código do exemplo leaderboard
http://www.meteor.com/examples/leaderboard
Dúvidas?
http://github.com/fjsj
flaviojuvenal+meteor@gmail.com

Mais conteúdo relacionado

Mais procurados

Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Rodrigo Kono
 
ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!Vinicius Mussak
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilRenato Groff
 
Criar um sistema com asp net
Criar um sistema com asp netCriar um sistema com asp net
Criar um sistema com asp netAnderson Wernek
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016Renato Groff
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e AlémAndre Baltieri
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...Renato Groff
 
Walker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWalker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWordCamp Floripa
 
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...Renato Groff
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoRenato Groff
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017Renato Groff
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...MVP ShowCast
 
Soluções escaláveis com Microsoft Orleans
Soluções escaláveis com Microsoft OrleansSoluções escaláveis com Microsoft Orleans
Soluções escaláveis com Microsoft Orleansakamud
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo maisakamud
 

Mais procurados (20)

O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!
 
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure BrasilImplementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
Implementando APIs seguras na nuvem - Outubro-2018 - Azure Brasil
 
Criar um sistema com asp net
Criar um sistema com asp netCriar um sistema com asp net
Criar um sistema com asp net
 
ASP .NET Core MVC
ASP .NET Core MVCASP .NET Core MVC
ASP .NET Core MVC
 
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
APIs na nuvem com Azure e ASP.NET Core - Azure Weekend 2016
 
Desvendando ASP.NET MVC
Desvendando ASP.NET MVCDesvendando ASP.NET MVC
Desvendando ASP.NET MVC
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
 
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...
Implementando APIs multiplataforma com ASP.NET Core 2.0 - Nerdzão Day #3 - No...
 
Walker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicaçãoWalker Leite apresenta usando o WordPress como backend de aplicação
Walker Leite apresenta usando o WordPress como backend de aplicação
 
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
 
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
 
ASP.NET vNext – MVC6
ASP.NET vNext – MVC6ASP.NET vNext – MVC6
ASP.NET vNext – MVC6
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource S...
 
Soluções escaláveis com Microsoft Orleans
Soluções escaláveis com Microsoft OrleansSoluções escaláveis com Microsoft Orleans
Soluções escaláveis com Microsoft Orleans
 
.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
 

Destaque

Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...
Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...
Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...André Carvalho
 
Meteor um overview sobre a plataforma
Meteor   um overview sobre a plataformaMeteor   um overview sobre a plataforma
Meteor um overview sobre a plataformaCaio Ribeiro Pereira
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesDerek Willian Stavis
 
Algoritmo de Rabin-Karp - Artigo
Algoritmo de Rabin-Karp - ArtigoAlgoritmo de Rabin-Karp - Artigo
Algoritmo de Rabin-Karp - ArtigoLorran Pegoretti
 
Software Architecture for Robotics
Software Architecture for RoboticsSoftware Architecture for Robotics
Software Architecture for RoboticsLorran Pegoretti
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBRodrigo Hjort
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 

Destaque (19)

Programação reativa com Meteor
Programação reativa com MeteorProgramação reativa com Meteor
Programação reativa com Meteor
 
Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...
Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...
Uma comparação do desempenho de SGBDS de grafos com armazenamento nativo e SG...
 
Meteor um overview sobre a plataforma
Meteor   um overview sobre a plataformaMeteor   um overview sobre a plataforma
Meteor um overview sobre a plataforma
 
Introdução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slidesIntrodução ao MongoDB em 30 slides
Introdução ao MongoDB em 30 slides
 
Crawler com nodejs
Crawler com nodejsCrawler com nodejs
Crawler com nodejs
 
NoSQL: Perdas e Ganhos
NoSQL: Perdas e GanhosNoSQL: Perdas e Ganhos
NoSQL: Perdas e Ganhos
 
Algoritmo de Rabin-Karp - Artigo
Algoritmo de Rabin-Karp - ArtigoAlgoritmo de Rabin-Karp - Artigo
Algoritmo de Rabin-Karp - Artigo
 
Software Architecture for Robotics
Software Architecture for RoboticsSoftware Architecture for Robotics
Software Architecture for Robotics
 
JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 

Semelhante a Introdução ao Meteor: Uma plataforma para construção de web apps em tempo real

Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...
Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...
Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...Frederico Maia Arantes
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
Ms Insights - Sessão MEW302
Ms Insights - Sessão MEW302Ms Insights - Sessão MEW302
Ms Insights - Sessão MEW302Flavio J Medeiros
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkFlávio Lisboa
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2MEelliando dias
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1michellobo
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Dispositivos Móveis - BlackBerry
Dispositivos Móveis - BlackBerryDispositivos Móveis - BlackBerry
Dispositivos Móveis - BlackBerryValdir Junior
 
Opções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvemOpções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvemFabio Hara
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileAlex Barbosa Coqueiro
 

Semelhante a Introdução ao Meteor: Uma plataforma para construção de web apps em tempo real (20)

Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...
Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...
Produtividade e deploy na criação de apps NodeJS com MeteorJS - Join Communit...
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Ms Insights - Sessão MEW302
Ms Insights - Sessão MEW302Ms Insights - Sessão MEW302
Ms Insights - Sessão MEW302
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
1409243945064
14092439450641409243945064
1409243945064
 
Aplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend FrameworkAplicações Profissionais para Internet com Zend Framework
Aplicações Profissionais para Internet com Zend Framework
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Aplicações Móveis com J2ME
Aplicações Móveis com J2MEAplicações Móveis com J2ME
Aplicações Móveis com J2ME
 
Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1Curso ASP.Net - Módulo 1
Curso ASP.Net - Módulo 1
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Dispositivos Móveis - BlackBerry
Dispositivos Móveis - BlackBerryDispositivos Móveis - BlackBerry
Dispositivos Móveis - BlackBerry
 
Opções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvemOpções de trabalho remoto na nuvem
Opções de trabalho remoto na nuvem
 
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações MobileIBM Mobile Platform: Desenvolvimento de Aplicações Mobile
IBM Mobile Platform: Desenvolvimento de Aplicações Mobile
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
 

Introdução ao Meteor: Uma plataforma para construção de web apps em tempo real

  • 1. começando com Meteor por Flávio Junior - http://github.com/fjsj
  • 2. O que é? Meteor é uma plataforma open-source para construção de web apps de qualidade top em uma fração do tempo, seja você um desenvolvedor expert ou apenas iniciante. traduzido de http://www.meteor.com/ Meteor é implementado sobre node.js e por padrão usa MongoDB como banco de dados e Handlebars como linguagem de template.
  • 3. Como? 001 - Tudo em JavaScript 002 - Atualização em tempo real de páginas 003 - Sincronização de dados cliente-servidor 004 - Compensação de latência 005 - Code pushes 006 - Código sensível em ambiente seguro 007 - App auto-contido para deploy 008 - Interoperabilidade via protocolo DDP 009 - Smart packages traduzido de http://www.meteor.com/
  • 4. 001 - Tudo em JavaScript Cliente e servidor usam JavaScript: Sintaxe de consultas com o banco de dados é praticamente idêntica a original do MongoDB. if (Meteor.isClient) { Template.leaderboard.players = function () { return Players.find({}, {sort: {score: -1, name: 1}}); }; } if (Meteor.isServer) { Players.insert({name: "Fulano", score: 10}); }
  • 5. 002 - Atualização em tempo real de páginas "No more boilerplate redraw code": Templates reativos. Quando o valor mudar, ele será atualizado automaticamente. <template name="player"> <div class="player {{selected}}"> <span class="name">{{name}}</span> <span class="score">{{score}}</span> </div> </template> ------------------------------------------------------------------ Players.update("507f191e810c19729de860ea", {$inc: {score: 5}});
  • 6. 002 - Atualização em tempo real de páginas Como ter reatividade no client-side apenas para o usuário atual? Use o módulo Session Template.player.events({ 'click': function () { Session.set("selected_player", this._id); } }); Template.player.selected = function () { return Session.equals("selected_player", this._id) ? "selected" : ''; };
  • 7. 003 - Sincronização de dados cliente-servidor "No more loading your data from REST endpoints": Acesso "direto" ao banco de dados a partir do cliente. if (Meteor.isClient) { Template.leaderboard.players = function () { return Players.find({}, {sort: {score: -1, name: 1}}); }; }
  • 8. 004 - Compensação de latência Quando o usuário faz uma ação, a tela se atualiza imediatamente. Se o servidor rejeitar a mudança, a tela do cliente é corrigida de acordo com o que aconteceu realmente.
  • 9. 005 - Code pushes A melhor feature para desenvolver protótipos e para atualizar o webapp sem incomodar o usuário.
  • 10. 006 - Código sensível em ambiente seguro Por questões de segurança, pode-se garantir que o código rodará e estará disponível apenas no servidor: // código em um diretório server/methods.js Meteor.methods({ fetchEvents: function (accessToken) { // ... } });
  • 11. 007 - App auto-contido para deploy Com o comando meteor bundle você monta um pacote com a aplicação pronta para deploy. Se quiser hospedar nos servidores do próprio Meteor, você usa o comando meteor deploy nomedoapp.meteor.com
  • 12. 008 - Interoperabilidade via protocolo DDP Distributed Data Protocol é o protocolo por trás da capacidade de reatividade e atualizações em tempo-real dos aplicativos Meteor. "DDP can work with any database, framework, or programming language, and it can work on servers, clients, and mobile devices. In fact, you can call Meteor.connect to connect to any DDP server -- such as a Meteor app written by someone else! -- and make realtime subscriptions to any data it's publishing."
  • 13. 009 - Smart packages ● Você pode usar pacotes prontos que adicionam funcionalidades ao seu aplicativo Meteor. Exemplos de pacotes: underscore, d3, coffeescript. ● Pacotes são diferentes de módulos npm, mas você pode utilizá-los em seus pacotes Meteor. ● Também existe um repositório com pacotes open-source da comunidade Meteor. Se chama Atmosphere: https://atmosphere.meteor. com/
  • 14. Exemplo Conferir o código do exemplo leaderboard http://www.meteor.com/examples/leaderboard