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
Sumário Prefácio...9 Parte I Apresentação do Node.js, do Backbone.js e do MongoDB...15 Capítulo 1 Introdução e visão geral...16 Construção de uma rede social... 17 Modelo-Visão-Controlador (MVC)...18 JavaScript puro...19 Capítulo 2 Node.js...21 Instalação do Node.js...22 Express...22 Templates...25 Eventos...28 Socket.io... 31 Módulos e CommonJS...34 Capítulo 3 Backbone.js...36 Modelo...37 Visão...38 Template de visão...40 Coleção...42 Sync...43 Router e histórico...43 5
6 Construindo Aplicações Node com MongoDB e Backbone Capítulo 4 MongoDB...45 Acesso aos dados...45 Escrita...47 Consultas...50 Índices...52 MapReduce...54 Trabalhando com o Node.js...56 Acesso concorrente...57 Parte II Construção de uma rede social...61 Capítulo 5 Configuração do projeto...62 Estrutura de diretórios...63 Listagem de arquivos...63 Definição de pacote...65 Servidor web... 66 Template de índice...69 JavaScript da aplicação...70 Classe da aplicação...72 Objeto de visão de índice...73 Capítulo 6 Autenticação...74 Conta...74 Roteamento...78 Verificação de autenticação...79 Manipulador de autenticação... 81 Registro...83 Template de registro...83 Manipulador de registro... 86 Login...87 Template de login...87 Manipulador de login...89 Senha esquecida... 91 Template de senha esquecida... 91
Sumário 7 Manipulador de senha esquecida...93 Redefinição de senha...95 Templates de redefinição de senha...95 Manipulador de redefinição de senha...97 Reunindo todos os elementos...97 Node.js...98 Capítulo 7 Interface de usuário...102 Detalhes da conta... 103 Template de detalhes da conta... 103 Manipulador de detalhes da conta... 105 Lista de contatos...106 Fluxo de atividade... 107 Template de fluxo de atividade... 107 Manipulador de fluxo de atividade... 111 Modelo de dados...113 Reunindo todos os elementos...117 Backbone...117 Node.js...119 Capítulo 8 Fazendo amizades...124 Lista de contatos... 124 Template de lista de contatos... 124 Manipulador de lista de contatos... 130 Inclusão de contato...131 Template de inclusão de contato...131 Manipulador de inclusão de contato... 133 Remoção de contato... 136 Remoção de template de contato... 137 Manipulação de remoção de contato... 137 Comentários... 140 Template de comentários... 140 Manipulador de comentário... 143
8 Construindo Aplicações Node com MongoDB e Backbone Reunindo todos os elementos... 145 Backbone... 145 Node.js... 148 Capítulo 9 Bate-papo...160 Refatoração...160 Conectando-se ao servidor de bate-papo...161 Backbone... 163 Node.js...166 Envio e recebimento de mensagens de bate-papo...168 Backbone... 170 Node.js... 176 Reunindo todos os elementos... 177 Backbone... 177 Node.js...181 Capítulo 10 Atividades em tempo real...193 Inclusão de eventos personalizados... 193 Disparando eventos... 194 Inclusão de ouvintes... 195 Notificação de login de contato... 197 Backbone.js... 197 Node.js...200 Atualizações de status...202 Backbone.js...202 Node.js...206 Reunindo todos os elementos...207 Backbone.js...208 Node.js...220 Arquivos estáticos... 235 Glossário...238