Adrian Mejia. Novatec



Documentos relacionados
Julia Elman e Mark Lavin. Novatec

Ademir C. Gabardo. Novatec

Ricardo R. Lecheta. Novatec

André Gugliotti. Novatec

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

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

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

Crie Seu Próprio Site

David Hows Peter Membrey Eelco Plugge

Harrison Kinsley Will McGugan

Hélio Engholm Jr. Novatec

Andreas Wittig Michael Wittig

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

Brandon Rhodes John Goerzen

Jonathan Stark Brian Jepson

Novatec Editora Ltda

Simon Holmes. Novatec

Rails 3 Básico Cloves Carneiro Jr. Rida Al Barazi

Criando Relatórios com PHP

Design Centrado no Usuário

Desenvolvendo Websites com PHP

Novatec Editora Ltda. [2014].

Ricardo R. Lecheta. Novatec

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

Copyright 2008, 2013 da Novatec Editora Ltda.

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

Pramod J. Sadalage Martin Fowler

Luiz Carlos Querino Filho

Google Android para Tablets

Larry Ullman. Novatec

Defenda sua base com circuitos simples, Arduino e Raspberry Pi

Edgar Gomes de Abreu

Nelson Glauber de Vasconcelos Leal

Primeiros Passos com o Raspberry Pi

Ricardo Lino Olonca. Novatec

Criando Aplicações Gráficas com PHP

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

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

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

Camila Porto. Novatec

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

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

Paulo Strelczuk. Novatec

Desenvolvendo Websites com PHP

Ademir C. Gabardo. Novatec

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

Google Analytics Justin Cutroni

Google Android para Tablets

Service Desk Corporativo

Cursos de Magento Gugliotti Consulting

Wilson Moraes Góes. Novatec

Desenvolvimento de Grandes Aplicações Web

Ademir C. Gabardo. Novatec

João Eriberto Mota Filho

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

Sumário. Parte I Elementos essenciais Sobre o autor Sobre o revisor técnico Prefácio... 14

WordPress 3 Básico Stephanie Leary

Sumário. Parte I Introdução Introdução O Rails é ágil Explorando o conteúdo Agradecimentos... 19

Conrado Adolpho. Novatec

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

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

Ricardo Lino Olonca. Novatec

Laboratórios de Tecnologias. Cisco. em Infraestrutura de Redes. 2a Edição. Samuel Henrique Bucke Brito. Novatec

Indira Knight. Novatec

Pete Goodliffe. Novatec

Adrian Pruteanu. Novatec

PDF Explicado John Whitington

como acabar com sua em apenas 140 caracteres Carolina Lima Novatec

Loja virtual. Integração com todos os meios de pagamento

Primeiros passos das Planilhas de Obra v2.6

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

2ª Edição Alexandre Keller

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

Criação de Aplicativos de redes sociais para Autenticação

Padrões de Projeto em PHP

Ricardo Kléber M. Galvão. Novatec

Google Android para Tablets

jquery Cookbook Comunidade de Desenvolvedores jquery

Prof. Romulo Fagundes Cantanhede. Node.JS. O poder do JavaScript do lado do Servidor

Soluções em Publicidade e Propaganda para pequenos negócios

Layout : Este layout desenvolvido com html5 e css3 e compatível com qualquer dispositivo, ou seja, ele se molda para qualquer resolução, tablet,

Fiery Driver Configurator

Segurança em Redes sem Fio

CURSO : Empreendedorismo 40 Hrs aulas

Do Word 2007 para o Office 365 para empresas

Miguel Grinberg. Novatec

EXP Digital, desenvolvendo soluções personalizadas para sua empresa alcançar a melhor performance no mundo virtual.

Wilson Moraes Góes. Novatec

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Plano de Parcerias BuenitStore

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Plataformas de Comércio Eletrônico

WEB SITE Rota Imperial

Manual de Rotinas para Usuários. Advogados da União. Procuradoria da União no Estado do Ceará PU/CE SAPIENS. Sistema da AGU de Inteligência Jurídica

LOJAS VIRTUAIS COMPLETAS

Josh Lockhart. Novatec

Shyam Seshadri & Brad Green

Transcrição:

Adrian Mejia Novatec

Copyright Packt Publishing 2015. First published in the English language under the title Building an E-Commerce Application with MEAN (9781785286551) Copyright Packt Publishing 2015. Publicação original em inglês intitulada Building an E-Commerce Application with MEAN (9781785286551) Esta tradução é publicada e vendida com a permissão da Packt Publishing. Novatec Editora Ltda. 2016. 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 PY20160606 Tradução: Henrique Cesar Ulbrich Assistente editorial: Priscila Yoshimatsu Revisão gramatical: Sandro Andretta Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-509-7 Histórico de impressões: Junho/2016 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 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

Sumário Sobre o autor...11 Sobre os revisores...12 Prefácio...13 Capítulo 1 Fundamentos do MEAN...18 Introdução ao MEAN...19 NodeJS...21 ExpressJS...21 MongoDB...21 AngularJS... 22 Instalando os componentes do MEAN... 22 Instalando o NodeJS... 22 Instalando o ExpressJS... 23 Instalando o MongoDB... 23 Instalando o AngularJS...24 Depurador do AngularJS...26 Entendendo a estrutura do projeto...26 Estrutura de arquivos...27 Componentes... 28 Testes... 28 Ferramentas...29 Instaladores de pacotes de software...30 Pacotes do Bower...30 Aplicação exemplo de e-commerce...31 Capa...31 Catálogo...32 Administração...33 Entendendo os requisitos das aplicações de e-commerce...35 Produto Minimamente Viável para um site de e-commerce...35 Definindo os requisitos...35 Resumo...37 5

6 Construindo uma Aplicação E-commerce com MEAN Capítulo 2 Construindo uma frente de loja com o AngularJS...38 Entendendo o AngularJS e a estrutura de pastas do cliente...39 Estrutura no lado do cliente... 40 Diretivas...41 Módulos...42 Roteamento no AngularUI...43 Controladores e escopos...45 Templates... 46 Criando o layout do MVP de nosso e-commerce...47 Produtos...47 Fábricas e serviços...49 Criando a fábrica de produtos...49 Criando um catálogo...50 Filtros...52 Administrando produtos (com CRUD)...52 Serviços...52 Controladores...55 Rotas...56 Templates...58 Formulários parciais...58 Novo produto...59 Editar produto... 60 Visão do produto... 60 Lista de produtos...61 Estilo da página principal...62 Resumo... 64 Capítulo 3 Construindo um banco de dados flexível com o MongoDB...65 Entendendo o MongoDB... 66 MongoDB: daemons e CLI... 66 MongoDB para quem vem do SQL...67 Conceitos básicos...67 Buscas (queries)...67 Agregadores...68 Implementando CRUD com o Mongoose...69 Schemas...69 Criar (create)...71 Ler (read)...72 Atualizar (update)...73 Apagar (delete)...74

Sumário 7 Mongoose: recursos avançados...74 Métodos de instância...74 Métodos estáticos...75 Virtuais...75 Validações...76 Validação nativa...76 Validações personalizadas...76 Middleware... 77 Revisando modelos e a estrutura no servidor...78 Pasta server...78 Modelos atuais do Mongoose...79 Módulos CommonJS... 80 Modelo user...81 Resumo... 84 Capítulo 4 Criando uma API RESTful com NodeJS e ExpressJS...85 Fundamentos do REST... 86 Criando um esqueleto de API RESTful...87 Inicializando o ExpressJS...87 Entendendo as rotas do ExpressJS... 90 Testes, TDD, BDD e NodeJS...92 Criando o modelo de produtos...93 Testando o modelo de produtos... 94 Implementação do modelo de produtos...95 Implementando a API de produtos...95 Testando a API... 96 Teste das ações de índice... 96 Teste das ações de exibição... 96 Testes das ações de criação...97 Testes das ações de apagamento...97 Controlador de produtos...97 Resumo...97 Capítulo 5 Conectando o AngularJS à API REST do ExpressJS...98 Implementando um serviço de produtos RESTful...98 Montando o catálogo de produtos...100 Conectando o controlador de produtos aos novos métodos RESTful...100 Enviando imagens de produtos...102 Upload de arquivos no Angular...102 Upload de arquivos no Node...106

8 Construindo uma Aplicação E-commerce com MEAN Semeando produtos...108 Testando APIs RESTful no AngularJS...109 Teste de unidades...110 ngmock...110 Configurando os testes...110 Entendendo os testes de Serviços...111 Testando todos os métodos $resource...111 Testando o controlador de produtos...112 Testes fim a fim...112 Limpando o banco de dados a cada execução do e2e...113 Resumo...115 Capítulo 6 Gerenciando autenticação e autorização... 116 Fundamentos sobre estratégias de autenticação...116 Autenticação por sessão... 117 Autenticação por token JWT...118 Autenticação OAuth...120 Entendendo a autenticação no cliente...123 Gerenciamento da autenticação...123 Processo de cadastro...126 Entendendo a autenticação no servidor...130 Autenticação com PassportJS...131 Inicializando o PassportJS...131 Modelo do usuário...133 Estratégias e rotas de autenticação...135 Autenticação local...136 Testes fim a fim para a autenticação local...137 Autenticando com Facebook, Google e Twitter...137 Facebook...138 Twitter...140 Google... 141 Resumo...143 Capítulo 7 Fechando a compra e recebendo o pagamento...144 Configurando um carrinho de compras...144 Instalando o ngcart...145 Usando as diretivas do ngcart...146 Inclui ou exclui item do carrinho...146 Resumo da compra até agora... 147 Página de checkout e integração com Braintree...148

Sumário 9 Configurando o Braintree...151 Chaves da API...151 Gateway...152 Controlador...153 Roteamento...154 Criando um pedido...155 Modificando o modelo de pedido...155 Testando o modelo de pedidos...158 Usando a conta sandbox...160 Resumo...160 Capítulo 8 Busca e navegação... 161 Adicionando busca à barra de navegação...161 Categorias de produtos...163 Adicionando um painel lateral...163 Aprimorando os controladores e modelos de produto...166 Controlador e as rotas de Catalog...167 Modelo Catalog...169 Semeando produtos e categorias...170 Funcionalidade de busca e navegação...172 Adicionando os métodos $resource...172 Rotas e controladores...173 Amarrando tudo... 174 Como a navegação funciona no navegador... 174 Como a busca funciona no navegador...175 Resumo... 176 Capítulo 9 Colocando a aplicação de e-commerce em produção...177 Preparando a aplicação para produção...177 Ambientes de aplicação...177 Otimizações para ambientes de produção...178 Escalonamento de aplicações web...179 Escalonamento vertical um servidor...180 Escalonamento horizontal múltiplos servidores...181 Ambiente de computação em nuvem...182 Platform as a Service...183 Heroku...183 Virtual Private Servers e servidores na nuvem...184 Digital Ocean...184

10 Construindo uma Aplicação E-commerce com MEAN Ambiente multisservidor...186 Configurando o servidor de aplicações NodeJS...186 Configurando o servidor web Nginx...188 Testes de resistência...190 Benchmark de HTTP...190 ApacheBench...190 Benchmark da aplicação no Heroku...190 Benchmark de ambientes VPS multisservidores...190 Arquitetura de produção para escalonar o NodeJS...191 Fase 0 um servidor...191 Fase 1 múltiplas instâncias da aplicação no mesmo servidor...191 Fase 2 múltiplos servidores...192 Fase 3 microsserviços...194 Segurança...195 Resumo...195 Capítulo 10 Adicionando recursos personalizados com alta qualidade...196 Planejamento de novos recursos...196 Wireframe...197 Implementando a solução...198 Página HTML...198 Testando o novo recurso...200 Testes no AngularJS...200 Recursos a implementar (backlog)...203 Deploy de novas versões...204 Zero-downtime...204 Configurando um servidor de produção para zero-downtime...205 Fundamentos do Capistrano...205 Instalação do Capistrano...206 Entendendo o Capistrano...206 Preparando o servidor...207 Variáveis do Capistrano...208 Tarefas do Capistrano...209 Novas tarefas...210 Preparação do Nginx...212 Distribuição de carga (load balance)... 214 Servidor de conteúdo estático...215 WebSockets...215 Resumo...215