Construindo Aplicações Node com MongoDB e Backbone Mike Wilson



Documentos relacionados
Desenvolvimento de Grandes Aplicações Web

Jonathan Stark Brian Jepson

Pete Goodliffe. Novatec

Design Centrado no Usuário

Novatec Editora Ltda. [2014].

PDF Explicado John Whitington

marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec

Google Analytics Justin Cutroni

Wilson Moraes Góes. Novatec

Google Android para Tablets

A Arte de SEO. Eric Enge, Stephan Spencer, Jessie Stricchiola e Rand Fishkin Introdução de John Battelle. Novatec

Ricardo Lino Olonca. Novatec

Padrões de Projeto em PHP

Construindo Aplicações Node com MongoDB e Backbone Mike Wilson

Aprendendo. Unix no OS X. Mountain Lion. Mergulhando no Terminal e no Shell. Dave Taylor. Novatec

Primeiros Passos com o Raspberry Pi

Equipes de Software. Um guia para o desenvolvedor de software se relacionar melhor com outras pessoas. Brian W. Fitzpatrick Ben Collins-Sussman

Desenvolvimento de Grandes Aplicações Web

Aprendendo Programação. ios. Alasdair Allan. Novatec

Desenvolvendo Websites com PHP

Gerenciamento. de projetos. Bart Gerardi. Novatec. Como evitar problemas previsíveis para o sucesso do projeto

Scrum em Ação. Gerenciamento e Desenvolvimento Ágil de Projetos de Software. Andrew Pham Phuong-Van Pham. Novatec

As Leis Fundamentais do Projeto de Software

Empresa. Dave Gray. Novatec. com Thomas Vander Wal

Crie Seu Próprio Site

Julia Elman e Mark Lavin. Novatec

Pramod J. Sadalage Martin Fowler

Camila Porto. Novatec

Josh Pauli Revisão técnica Scott White. Novatec

Editor: Rubens Prates Revisão gramatical: Patrizia Zagni Capa: Victor Bittow Editoração eletrônica: Camila Kuwabata e Carolina Kuwabata

Brandon Rhodes John Goerzen

Lojas Virtuais com. Magento. André Nobrega Gugliotti. Novatec

Wilson Moraes Góes. Novatec

Novatec Editora Ltda

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade.

David Hows Peter Membrey Eelco Plugge

Ademir C. Gabardo. Novatec

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

Hélio Engholm Jr. Novatec

Luiz Carlos Querino Filho

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

MARKETING DIGITAL NA ERA. Martha Gabriel CONCEITOS, PLATAFORMAS E ESTRATÉGIAS. Novatec


Os desafios do Bradesco nas redes sociais

Josh Lockhart. Novatec

jquery Cookbook Comunidade de Desenvolvedores jquery

Novatec Editora Ltda. [2013]. Todos os direitos reservados e protegidos pela Lei de 19/02/1998. É proibida a reprodução desta obra, mesmo

como acabar com sua em apenas 140 caracteres Carolina Lima Novatec

Desenvolvendo Websites com PHP

Laboratórios de Tecnologias. Cisco. em Infraestrutura de Redes. Samuel Henrique Bucke Brito. Novatec

#10 PRODUZIR CONTEÚDO SUPER DICAS ATRATIVO DE PARA COMEÇAR A

Service Desk Corporativo

Somos uma agência de soluções online, especializada em marketing digital e inovações.

Mineração de dados da web social Matthew A. Russell

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

Primeiros Passos com o Netduino

Opção. sites. A tua melhor opção!

JQuery. A Biblioteca do Programador JavaScript. 3ª Edição Revisada e ampliada. Maurício Samy Silva. Novatec

Novatec Editora Ltda

Parabéns a você que burlou a realidade para se tornar a PEÇA que FALTAVA na sua advocacia.

Aprendendo Programação. ios. Alasdair Allan. Novatec

O dilema no uso da internet rica

Anexo I Formulário para Proposta

Operador de Computador. Informática Básica

Apresenta. SofStore o mais novo aliado no gerenciamento do seu negócio

Adail Henrique Spínola Horst Aécio dos Santos Pires André Luis Boni Déo. Novatec

2ª EDIÇÃO. André Milani. Novatec

Adrian Mejia. Novatec

Compreendendo a dimensão de seu negócio digital

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

Ricardo R. Lecheta. Novatec

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Google Android para Tablets

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

Aprendendo Cocoa com Objective-C Paris Buttfield-Addison Jonathon Manning

Engenharia da WEB 16/08/2011. Vida moderna. Sistemas WEB

Zend. Framework. Componentes Poderosos para PHP. Flávio Gomes da Silva Lisboa. Novatec

Google Analytics Justin Cutroni

Excel Avançado. 2ª Edição. Antonio Fernando Cinto Wilson Moraes Góes. Novatec

Primeiros Passos com Sensores Kimmo Karvinen Tero Karvinen

Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line)

Introdução ao GitHub Peter Bell e Brent Beer

No E-book anterior 5 PASSOS PARA MUDAR SUA HISTÓRIA, foi passado. alguns exercícios onde é realizada uma análise da sua situação atual para

TREINAMENTO DOS EMBAIXADORES

Keith Wood. Apresentação de Dave Methvin. Novatec

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Design 3D. Formação em Web WEB DESIGN 3D 1

Meu resultado com SEO para Youtube

Paulo Strelczuk. Novatec

e-commerce: 13 maneiras de aumentar a conversão

22 DICAS para REDUZIR O TMA DO CALL CENTER. em Clínicas de Imagem

C Por que é preciso fazer rápido o produto web?

Ricardo Kléber M. Galvão. Novatec

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

Defenda sua base com circuitos simples, Arduino e Raspberry Pi

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Web Analytics (Google analytics, Web trafic XITI, Coremetrics, etc.); Ferramentas de gestão de listas de s (Mailchimp, constant contact, etc.

Transcrição:

Construindo Aplicações Node com MongoDB e Backbone Mike Wilson Novatec

Authorized Portuguese translation of the English edition of titled Building Node Applications with MongoDB and Backbone ISBN 9781449337391 2012 Mike Wilson. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Building Node Applications with MongoDB and Backbone ISBN 9781449337391 2012 Mike Wilson. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. Novatec Editora Ltda. 2013. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Rafael Zanolli Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-341-3 Histórico de impressões: Janeiro/2013 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

parte I Apresentação do Node.js, do Backbone.js e do MongoDB 15

capítulo 1 Introdução e visão geral A web, que já é uma das áreas de desenvolvimento mais rápido em tecnologia, está acelerando. Isso é uma notícia tanto boa quanto ruim para aqueles de nós que planejam conseguir seu sustento com a criação de softwares. Hoje, bons desenvolvedores têm a rara oportunidade de fazer aquilo que amam e ampliar seus horizontes, além de evoluir e derivar uma satisfação ainda maior de seu trabalho, desde que estejam dispostos a dedicar o esforço necessário para compreender o enorme acervo de conhecimento em rápida expansão. Carreiras fantásticas têm um preço. Como desenvolvedor de software, você deve pesquisar continuamente a próxima grande ferramenta que vai ajudá-lo a realizar mais, melhor e mais rápido. Aquilo com que você vai trabalhar daqui a dez anos será bastante diferente daquilo com que você está trabalhando hoje em essência, você terá de retreinar a si mesmo várias vezes para se manter afiado. Em seu livro de 2008, Outliers (Back Bay Books, lançado no Brasil pela Sextante, com o título Fora de série: Outliers), Malcolm Gladwell apresenta evidências de que são necessárias 10 mil horas de esforço para atingir o domínio em um nível profissional. Mesmo prodígios precisam dedicar o tempo necessário para atingir o sucesso; a diferença entre um profissional de desempenho médio e um de desempenho fantástico se resume à quantidade de tempo de prática dedicada pelo indivíduo. Escolher um livro como este coloca você nessa segunda categoria; agora mesmo você está dedicando o tempo extra para obter mais exposição aos limites do conhecimento dessa habilidade. O futuro está chegando, e você estará entre os primeiros posicionados para aproveitá-lo. 16

Capítulo 1 Introdução e visão geral 17 O Node.js introduziu um exército de programadores à programação orientada por eventos. Independentemente de qual seja sua experiência em tecnologia, se chegar ao Node com uma mente aberta e deixar de lado quaisquer noções preconcebidas que possa ter sobre JavaScript, você sairá com maior apreciação de quão poderosa a programação single-thread pode ser em um mundo que enlouqueceu por aplicações multi-thread. Além disso, você terá maior apreciação pela manipulação de eventos que lhe ajudará quando precisar enfrentar problemas de multi-thread em outras linguagens de programação. O JavaScript é uma linguagem de programação única e às vezes mal- -compreendida que finalmente alcançou seu lugar merecido na caixa de ferramentas de desenvolvimento. Uma vez que os conjuntos de ferramentas para desenvolvimento de aplicativos JavaScript continuam a melhorar e a amadurecer, você pode esperar que a importância dessa linguagem continue a crescer em organizações no mundo todo. Construção de uma rede social O projeto neste livro analisa como você pode construir uma rede social de estilo semelhante ao do LinkedIn, do MySpace ou do Facebook, com um pitada de rede em tempo real. Utilizando o Node.js, o Backbone.js e o MongoDB, você aprenderá a criar uma aplicação altamente responsiva que seja escalável para milhões de usuários. Como exemplo, muitos dos componentes descritos ao longo do texto tomarão os mesmos atalhos para utilizar um método nativo fornecido pelo Node ou pelo MongoDB como forma de demonstrar determinadas funcionalidades que não seriam práticas em implantações reais extensas. Quando um desses atalhos for apresentado, eu destacarei esse ponto em uma nota especial e discutirei como começar a avançar para uma construção mais escalável e modificável. O desafio ao* longo desse processo será tentar equilibrar a necessidade de clareza com a tarefa da construção de um aplicativo útil e real. O que é uma rede social? Rede social é uma expressão simples que parece comunicar bastante significado e, na ciência comportamental, ela o faz, mas vamos analisar mais cuidadosamente as palavras individuais e aplicá-las

18 Construindo Aplicações Node com MongoDB e Backbone à internet. Uma rede é um grupo interconectado de sistemas que pode ser qualquer coisa desde uma série de estradas que cruzam um país até uma fileira de computadores em um laboratório escolar, ou uma agenda repleta de contatos profissionais. A palavra social se refere à interação de organismos como animais e pessoas e à existência deles como um grupo inteiro. Então uma rede social nesse contexto significa um grupo interativo e interconectado de pessoas. O componente humano é importante acima de tudo. Se você construir qualquer tipo de software, será negligente se desenvolver almejando uma meta ou funcionalidade específica sem primeiro (e constantemente) pensar na pessoa que deverá utilizar, em última análise, seu código finalizado, seja ela um cliente, um professor ou até mesmo você. A não ser que você visualize o propósito final de seu trabalho, resista à tentação de seguir avançando na estrada da programação apenas em nome da tecnologia. Quando falamos em construir uma rede social, é claro que é impossível construir uma rede social conforme definida aqui. O que você estará criando é o fórum, os caminhos básicos, sobre os quais uma rede social pode criar raízes e crescer. Toda funcionalidade do sistema deve entregar esse objetivo, saindo do caminho do usuário e fornecendo o suficiente de um conjunto de funcionalidades para promover, encorajar e facilitar a comunicação sem elementos desnecessários. Essa é uma tarefa difícil de realizar, mas, em última análise, ela separa um produto medíocre de um excelente. Modelo-Visão-Controlador (MVC) Este livro faz referência e uso frequente do padrão de projeto Modelo-Visão- -Controlador (MVC), tanto no lado do servidor quanto no da programação de frontend. Ainda que o MVC tenha sido popularizado na web pelo crescimento do Ruby on Rails, ele foi primeiro desenvolvido para a plataforma Smalltalk na década de 1970. O MVC como praticado hoje promove o desacoplamento de seu sistema em três componentes:

Capítulo 1 Introdução e visão geral 19 Modelo Visão Uma estrutura contendo os dados que estão sendo lidos ou utilizados. Uma interface por meio da qual o usuário interage com o modelo. Controlador Delega ações do usuário da visão para o modelo subjacente. Modelos e controladores são tipicamente pareados; neste livro, a função do controlador será atuar como um contrato para aquilo que um usuário é capaz de fazer em um modelo e transmitir informações nos dois sentidos. Ainda que seja possível que um controlador realize ações em mais de um modelo, fazer isso deve ser considerado má forma: um modelo, um controlador. Visões são outra história; assim como na vida real, em software muitas vezes existem várias formas de compreendermos a mesma informação. Por exemplo, uma transcrição textual de uma gravação de áudio contém a mesma informação que o original, mas apresenta seu conteúdo de uma forma mais acessível a alguns usuários ou mais conveniente para outros. A internet está cheia de ótimos exemplos disso: muitos web services apresentam dados tanto em formato JSON quanto XML, dois formatos diferentes que fornecem a mesma informação de formas distintas. JavaScript puro O uso do Node, do Backbone e do MongoDB vai permitir que você concentre a lógica de sua aplicação em uma única linguagem de programação, reduzindo, ao final, o número de conexões entre cada elemento de seu sistema. Como você verá, essa é uma forma convincente de programar, pois as fronteiras entre a interface de usuário (user interface, ou UI), a lógica de servidor do backend e a persistência do banco de dados se misturam em um sistema praticamente vivo. A imagem se torna mais clara conforme funções de rede em tempo real são gradualmente adicionadas; seus dados percorrerão todo o aplicativo e até mesmo usuários distintos, praticamente como se tudo estivesse acontecendo em concerto, em um único processo.

20 Construindo Aplicações Node com MongoDB e Backbone Existem armadilhas com as quais devemos ter cuidado. Mesmo que os conectores sejam fortes e falem o mesmo dialeto, nos bastidores, o código de seu programa ainda está percorrendo uma conexão entre navegadores web, servidores e bancos de dados. Alguns dos paradigmas JavaScript mudam levemente dependendo de seu objetivo principal ser servir a UI (como no caso do Backbone no navegador web), autenticação (como no caso do Node no servidor web), ou persistência (como no caso do MongoDB). Você precisa estar sempre vigilante a respeito de onde seus dados estão indo, da possibilidade de estar bloqueando algum de seus próprios processos e da forma de escutar e reagir a eventos de entrada e saída. Isso pode ser um desafio, mas, da mesma maneira que qualquer outro sistema com muitas peças móveis, há inúmeras lições interessantes a aprender a partir da experimentação.