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/