Use o código e tenha 10% de desconto!

Meteor Criando aplicações web real-time com JavaScript

Caio Ribeiro Pereira
Capa

Meteor

Agradecimentos

Obrigado, Deus, por mais uma conquista em minha vida! Obrigado pai e mãe pelo amor, força e incentivo em todas as etapas decisivas de minha vida. Obrigado por tudo e principalmente por estar ao meu lado em todos os momentos.

Um agradecimento especial à minha namorada Natália Santos, obrigado pelo apoio, compreensão e companhia, sei que em alguns momentos não foi fácil para nós, mas o importante é que conseguimos juntos, e essa vitória eu dedico totalmente para você e minha família.

Agradeço à sra. Charlotte Bento de Carvalho, pelo apoio e incentivo nos meus estudos desde a escola até a minha formatura na faculdade.

Obrigado ao pessoal da editora Casa do Código, em especial ao Paulo Silveira e Adriano Almeida. Muito obrigado pelo suporte, apoio, pela confiança e por mais esta nova oportunidade.

Obrigado à galera da comunidade NodeBR e Meteor Brasil, Os feedbacks de vocês ajudaram muito a melhorar este livro e também meu livro anterior de Node.js.

Obrigado também aos leitores do blog meu Underground WebDev (http://udgwebdev.com) que acompanham e comentam os posts frequentemente.

Por último, obrigado a você, prezado leitor, por adquirir meu novo livro. Que este seja, uma boa referência de estudos sobre Meteor.

Sobre o autor

Caio Ribeiro Pereira trabalha como Web Developer na BankFacil, bacharel em Sistemas de Informação pela Universidade Católica de Santos, sua experiência é baseada no domínio dessa sopa de letrinhas: Node.js, Meteor, Javascript, Ruby, Java, LevelDB, MongoDB, Redis, Filosofia Lean, Scrum, XP e TDD.

Blogueiro nos tempos livres, apaixonado por desenvolvimento de software, web, tecnologias, filmes e seriados. Participante ativo das comunidades:

  • NodeBR: Comunidade Brasileira de Node.js
  • MeteorBrasil: Comunidade Brasileira de Meteor
  • DevInSantos: Grupo de Desenvolvedores de Software em Santos

Iniciou em 2011 como palestrante nos eventos DevInSantos e Exatec, abordando temas atuais sobre Node.js e Javascript. Criador do Node Web Modules (um site que apresenta dados estatísticos sobre os frameworks web para Node.js) e fundador do Google Groups Meteor Brasil.

Autor dos Blogs: Underground WebDev e Underground Linux.

Prefácio

 

As mudanças do mundo web

 

Atualmente, o JavaScript já é uma opção real e aceitável no desenvolvimento server-side em muitos projetos. Isso traz como uma das vantagens a possibilidade de construir uma aplicação utilizando apenas uma única linguagem, tanto no cliente (através do clássico JavaScript compatível em todos os browsers) como no servidor (através do íncrivel e poderoso Node.js!).

Graças ao Node.js, diversos frameworks web surgiram — diferente das outras linguagens, existem mais de 30 frameworks web para Node.js! Não acredita? Então veja com seus próprios olhos essa lista de frameworks acessando o site:

http://nodewebmodules.com

Express e Meteor são os frameworks que mais se destacam, ambos são frameworks para Node.js com características únicas. O Express é considerado um framework minimalista, focado em criar projetos através de estruturas customizadas pelo desenvolvedor. Com ele é possível criar serviços REST, aplicações web tanto em padrão MVC (Model-View-Controller) como MVR (Model-View-Routes) ou totalmente sem padrão em um único arquivo, tudo vai depender das boas práticas aplicadas pelo desenvolvedor. Uma aplicação Express pode ser pequena ou de grande porte, tudo vai depender dos requisitos e, principalmente, de como vai organizar todos códigos nele, afinal com o Express você tem o poder de aplicar suas próprias convenções e organizações de código. Outro detalhe é que você utiliza seu próprio framework de persistência de dados, então todo controle fica em suas mãos.

A princípio, se você possui um bom conhecimento sobre o Express e os demais frameworks necessários para construir sua aplicação, então você terá velocidade suficiente para desenvolver uma aplicação de forma ágil. Mas e se existisse um framework Node.js, cujo foco é prototipar telas em extrema velocidade? Tudo isso utilizando componentes prontos que são facilmente customizáveis e com configurações complexas simplificadas alto nível para você utilizar (aplicando os princípios de convenção sobre configuração). No mundo Ruby, isso deu certo através do inovador framework Rails; agora temos uma inovação semelhante no mundo Node.js, essa inovação se chama Meteor.

 

A quem se destina este livro?

 

Esse livro é destinado aos desenvolvedores que tenham pelo menos conhecimentos básicos de Node.js, Javascript e arquitetura web cliente-servidor. Ter domínio desses conceitos, mesmo que a nível básico, será necessário para que a leitura seja de fácil entendimento.

 

Como devo estudar?

 

Este livro é praticamente um hands-on que visa ensinar os principais conceitos do Meteor através da construção de uma aplicação web do zero. Ao decorrer da leitura serão apresentados diversos conceitos e muito código para implementar no projeto, aplicar na prática os conceitos teóricos e aprender boas práticas e convenções desta tecnologia.

Sumário

  • 1 - Introdução
    • 1.1 - Conhecendo seu mundo
    • 1.2 - Os 7 princípios do Meteor
  • 2 - Configurando o ambiente de desenvolvimento
    • 2.1 - Detalhes sobre a instalação
    • 2.2 - Node.js
    • 2.3 - MongoDB
    • 2.4 - Instalando o Meteor
    • 2.5 - Rodando o Meteor
    • 2.6 - Fazendo deploy para testes
    • 2.7 - Gerenciando packages com Meteorite
  • 3 - Criando uma rede social real-time
    • 3.1 - Projeto piloto: MeteorBird
    • 3.2 - Funcionalidades da aplicação
    • 3.3 - Criando o projeto
  • 4 - Implementando uma timeline de posts
    • 4.1 - Estruturando os templates
    • 4.2 - Criando o template da timeline
    • 4.3 - Publicando posts na timeline
    • 4.4 - Persistindo e listando posts em tempo-real
  • 5 - Signin e Signup de usuários
    • 5.1 - Explorando Accounts do Meteor
    • 5.2 - Associando posts a um usuário
    • 5.3 - Exibindo timeline somente para logados
    • 5.4 - Autenticação via conta Facebook
  • 6 - Perfil do usuário
    • 6.1 - Criando template de perfil
    • 6.2 - Autocompletando perfil via signin do Facebook
  • 7 - Tela de perfil público do usuário
    • 7.1 - Adaptando rotas no projeto
    • 7.2 - Perfil público do usuário
  • 8 - Follow me I will follow you
    • 8.1 - Introdução sobre a funcionalidade
    • 8.2 - Criando os botões de Follow e Unfollow
    • 8.3 - Contador de seguidores no perfil
    • 8.4 - Visualizando post de quem você seguir
  • 9 - Publications e Subscriptions
    • 9.1 - O que é PubSub?
    • 9.2 - Entendendo seu mecanismo
    • 9.3 - Adaptando o PubSub no projeto
  • 10 - Testes, testes e mais testes
    • 10.1 - Frameworks de testes para o Meteor
    • 10.2 - Primeiros passos com Laika
    • 10.3 - Criando testes
    • 10.4 - Desafio: testar o modelo Post
  • 11 - Integração contínua no Meteor
    • 11.1 - Rodando Meteor no Travis-CI
  • 12 - Preparando para produção
    • 12.1 - Monitorando a aplicação através de logs
    • 12.2 - Habilitando cache em arquivos estáticos
    • 12.3 - Utilizando o Fast Render
    • 12.4 - Otimizando consultas no MongoDB com Find-Faster
    • 12.5 - Configurando variáveis de ambiente
  • 13 - Hospedando uma aplicação Meteor
    • 13.1 - Convertendo Meteor para Node.js com Demeteorizer
    • 13.2 - Onde hospedar uma aplicação Meteor?
  • 14 - Como organizar um projeto Meteor
    • 14.1 - Convenções de diretórios e arquivos
  • 15 - Continuando os estudos
    Capítulo1

    Introdução

    1.1 - Conhecendo seu mundo

    O Meteor é um framework web full-stack 100% JavaScript, ou seja, com ele você vai construir aplicações programando em todas as camadas: cliente, servidor e banco de dados, usando JavaScript, Node.js e MongoDB, tudo isso utilizando apenas uma única linguagem de programação, o JavaScript.

    Outro detalhe importante é que o foco desse framework é a prototipagem rápida, fazendo com que trabalhos que levariam meses sejam realizados em semanas, ou até mesmo alguns dias. Isso é possível graças aos seus recursos que visam automatizar tarefas repetitivas, exibir respostas imediatas no browser, diversas convenções, vários componentes customizáveis prontos para uso e também as configurações complexas de baixo nível que estão simplificadas para o desenvolvedor. Por default, suas aplicações Meteor serão em formato single-page real-time, mas também é possível criar aplicações multi-page orientado a rotas. Este framework é considerado como um MVVM (Model-View View-Model), ou seja, não existe controllers ou routes por default, mas é customizá-lo com o propósito de adicionar controllers, routes e outros patterns através da inclusão packages third-party.

    O Meteor é uma plataforma de desenvolvimento completa, sendo que o mecanismo principal responsável por toda magia back-end é o Node.js. Assim como o Node.js possui seu gerenciador de módulos — o NPM (Node Package Manager), o Meteor possui o seu próprio gerenciador de packages (sim, módulos e packages são a mesma coisa, ou seja, são frameworks), que se chama Atmosphere. Este permite usar projetos third-party criados pela comunidade, sem contar que também é possível utilizar a maioria — mas não todos — dos módulos NPM dentro de uma aplicação Meteor (algo que será explicado nos capítulos futuros). Isso pode evitar a "invenção da roda", porém tudo vai depender da compatibilidade de tal módulo Node no contexto do Meteor.

    Trabalhar com Meteor é trabalhar com JavaScript, e isso faz com que muitos desenvolvedores tenham uma curva de aprendizado rápida, e em poucos dias de estudos você terá dominado os principais pontos e aspectos deste framework. Se você não conhece Node.js mas domina JavaScript, não tenha receio de ler esse livro, pois poucas coisas sobre Node.js serão abordadas aqui.

    Este é um framework de muitos recursos, ou seja, constituído por um conjunto de frameworks do mundo Node.js e JavaScript. Algumas bibliotecas conhecidas que fazem parte dele são:

    • SockJS — framework emulador de WebSockets e responsável pelo funcionamento do protocolo DDP (Data Distribution Protocol).
    • MongoDB — banco de dados default.
    • Handlebars — template engine.
    • PubSub — biblioteca de emissão e escuta de eventos via pattern: publisher / subscriber.
    • MiniMongo — API client-side que possui a maioria das funcionalidades do MongoDB.
    • Connect — módulo Node.js com funcionalidades para trabalhar com protocolo HTTP.

    Esses são alguns frameworks internos que são essenciais para dar vida ao Meteor.

    1.2 - Os 7 princípios do Meteor

    O Meteor é um framework totalmente inovador, ele engloba diversas boas práticas de frameworks como Rails do Ruby, Django do Python, Express do Node.js, além da própria equipe adotar suas próprias convenções. Tudo isso surgiu baseado em 7 princípios, e eles são:

     

    1˚ Data on the wire

     

    Handlebars é o template engine do Meteor.
    Figura 1.1: Handlebars é o template engine do Meteor.


    Não envie HTML pela rede e sim apenas dados, deixando que o cliente decida como apresentá-los.

     

    2˚ One language

     

    Node.js, Javascript e MongoDB.
    Figura 1.2: Node.js, Javascript e MongoDB.


    Escreva código JavaScript em todas as camadas: cliente, servidor e banco de dados. Isso simplifica e agiliza o desenvolvimento, além de garantir uma curva de aprendizado baixa.

     

    3˚ Database anywhere

     

    Banco de dados compartilhado entre cliente e servidor.
    Figura 1.3: Banco de dados compartilhado entre cliente e servidor.


    Utilize uma API de interface única e transparente que lhe permite acessar o banco de dados tanto no cliente como no servidor.

     

    4˚ Latency compensation

     

    Latência zero ao acessar dados via cliente.
    Figura 1.4: Latência zero ao acessar dados via cliente.


    No cliente é usado prefetching e model simulation na API client-side do banco de dados para atingir latência zero no acesso de seus recursos.

     

    5˚ Full-Stack Reactivity

     

    Meteor é um framework full-stack real-time.
    Figura 1.5: Meteor é um framework full-stack real-time.


    Por default tudo funciona em real-time. E todas as camadas da aplicação adotam o paradigma orientado a eventos, que é herdado do Node.js.

     

    6˚ Embrace the ecosystem

     

    Meteor é mais uma iniciativa open-source.
    Figura 1.6: Meteor é mais uma iniciativa open-source.


    Totalmente open-source, o Meteor possui suas convenções pelas quais agrega novos conceitos e valores, em vez de ser uma ferramenta que substituirá outros frameworks.

     

    7˚ Simplicity equals Productivity

     

    Aumente sua produtividade trabalhando com Meteor!
    Figura 1.7: Aumente sua produtividade trabalhando com Meteor!


    Seja produtivo! Desenvolva de mais features de forma rápida e simplificada. O Meteor mantém um conjunto de APIs fáceis de implementar e a comunidade Meteor está sempre colaborando para evolução do framework.

    Dados do produto

    Número de páginas:
    161
    ISBN:
    978-85-66250-45-9
    Data publicação:
    03/2014

    Compartilhe!

    Compartilhe no Facebook Compartilhe no Twitter