Mean Full stack JavaScript para aplicações web com MongoDB, Express, Angular e Node
Flávio Almeida
Conteúdo
Já pensou em desenvolver aplicações web ricas com recursos complexos, extremamente performáticos e robustos? É isso que você conseguirá fazer com a stack MEAN.
Unindo várias das principais tecnologias do mercado, como o MongoDB, Express, Angular e Node.js em cima da linguagem JavaScript, é possível criar aplicações em um curto espaço de tempo em uma linguagem sobre a qual todo desenvolvedor web possui algum conhecimento.
Neste livro completíssimo, Flávio Almeida vai ensinar a desenvolver com essa poderosa stack, passando pelos problemas encontrados no dia a dia, destrinchando cada um dos seus elementos fundamentais e indo até o deploy e o teste da aplicação. É um livro que todo desenvolvedor web precisa ler.
Sumário
- 1 Introdução
- 1.1 MEAN Stack
- 1.2 Uma aposta no JavaScript
- 1.3 Vantagens da stack
- 1.4 Visão geral da nossa jornada
- 1.5 Instalação do Node.js
- 2 Express: framework web para Node.js
- 2.1 Express e seu papel
- 2.2 Estrutura do projeto e package.json
- 2.3 Instalando o Express através do Npm
- 2.4 Criando o módulo de configuração do Express
- 2.5 Entendendo variáveis de ambiente e middlewares
- 2.6 View e template engine
- 2.7 Configurando rotas
- 2.8 Criando controllers
- 2.9 Carregando dependências com express-load
- 2.10 Listando contatos
- 2.11 Um pouco sobre REST API
- 2.12 Retornando contato da lista
- 3 Bower: gerenciador de dependências front-end
- 3.1 Instalação
- 3.2 bower.json e nossas dependências
- 3.3 Baixando dependências front-end
- 3.4 Alterando a pasta destino com .bowerrc
- 3.5 Outros comandos
- 4 AngularJS: o framework MVC da Google
- 4.1 Um velho conhecido: DOM
- 4.2 Dificuldades que surgem da manipulação do DOM
- 4.3 Características do AngularJS
- 4.4 Preparando o ambiente
- 4.5 Habilitando o AngularJS em nossa página
- 4.6 Nosso primeiro módulo com AngularJS
- 4.7 Angular expression (AE)
- 4.8 Nosso primeiro controlller
- 4.9 $scope: a cola entre controller e view
- 4.10 AngularJS e o model do MVC
- 4.11 Executando ações no controller através de diretiva
- 4.12 A mágica do data binding
- 4.13 Single page application (SPA) e nosso projeto
- 4.14 O módulo ngRoute
- 4.15 Criando views parciais
- 4.16 Configurando rotas com $routeProvider
- 4.17 O objeto $routeParams
- 4.18 Bootstrap: visual profissional em nossas views
- 4.19 A diretiva ng-repeat
- 4.20 A diretiva ng-model e filtragem da lista
- 4.21 Revisando o que aprendemos
- 5 Integrando AngularJS e Express
- 5.1 O serviço $http
- 5.2 Programação assíncrona e callback HELL
- 5.3 Promises: combatendo o callback HELL
- 5.4 Obtendo contatos com $http
- 5.5 O módulo ngResource: trabalhando em alto nível
- 5.6 Consumindo REST Endpoints com $resource
- 5.7 Adicionando rota de exclusão ao Express
- 5.8 Express: organizando melhor nossas rotas
- 5.9 Removendo contatos da lista
- 5.10 As diretivas ng-hide e ng-show
- 5.11 Exibindo contato selecionado
- 5.12 Salvando um contato
- 5.13 Adicionando rota de gravação ao Express
- 5.14 Serviços: organizando melhor nosso código
- 6 MongoDB: banco de dados baseado em documento
- 6.1 Relacional vs. NoSQL: há banco vencedor?
- 6.2 Buscando a menor impedância possível: JSON “everywhere”
- 6.3 Instalação do MongoDB
- 6.4 Utilizando o mongo shell
- 6.5 O conceito de documento
- 6.6 O tipo ObjectId
- 6.7 Criando o banco da aplicação
- 6.8 Collections e inserção de documentos
- 6.9 Buscando documentos
- 6.10 O objeto cursor
- 6.11 Buscando com critério
- 6.12 Query selectors
- 6.13 Indexando documentos
- 6.14 Retornando documentos parciais
- 6.15 Removendo documentos
- 6.16 Atualizando documentos
- 6.17 Realizando upserts
- 6.18 $set: modificador de atualização
- 6.19 Documentos embutidos (Embedded Documents)
- 6.20 Simulando JOINS no lado da aplicação
- 6.21 DBRefs: database references
- 7 Integrando Express e MongoDB
- 7.1 Mongo Driver
- 7.2 Esquema faz falta?
- 7.3 Mongoose Object-Document Modeler
- 7.4 Gerenciando a conexão
- 7.5 Criando esquemas
- 7.6 Utilizando modelos
- 7.7 Buscando documentos
- 7.8 Buscando pelo ID
- 7.9 Removendo documentos
- 7.10 Atualizando documentos
- 7.11 Funções de persistência no Model ou no documento?
- 7.12 Criando referências
- 7.13 Modificando nossa view para exibir emergências
- 7.14 A diretiva ng-options
- 7.15 A função populate e busca de referências
- 8 Autenticação com Passport
- 8.1 OAuth 2.0
- 8.2 Registro no provedor de autenticação
- 8.3 OAuth 2.0 com Passport
- 8.4 Estratégia de autenticação
- 8.5 Definindo Schema do Usuário
- 8.6 Mongoose e plugins
- 8.7 Serialização e desserialização do usuário
- 8.8 Protegendo recursos
- 8.9 Combinando views do servidor/cliente
- 8.10 Implementando Logout
- 8.11 REST Endpoints: permitindo apenas acesso autenticado
- 9 Tornando sua aplicação ainda mais segura
- 9.1 Helmet: middlewares de segurança
- 9.2 MongoDB/API REST: evitando query selector injection
- 9.3 Evitando o document replace
- 9.4 Tratando 404
- 10 Grunt: automação de tarefas front-end
- 10.1 Bem-vindo ao Grunt
- 10.2 O arquivo Gruntfile.js
- 10.3 Instalando nosso primeiro plugin
- 10.4 Tarefas
- 10.5 Targets
- 10.6 Atalho para tarefas
- 10.7 As técnicas de minificação e concatenação
- 10.8 grunt-usemin: minificação e concatenação com Grunt
- 10.9 As tasks usemin e useminPrepare
- 10.10 Angular e minificação
- 11 Testando a aplicação
- 11.1 Karma: feedback instantâneo de testes de unidade
- 11.2 Jasmine: framework de teste
- 11.3 Criando suítes de testes
- 11.4 Rodando suítes de testes através do Karma
- 11.5 Angular-mocks e integração com Jasmine
- 11.6 $httpBackend: “mockando” nosso back-end
- 11.7 Testando de ponta a ponta
- 11.8 Protractor: testes end-to-end com AngularJS
- 11.9 Configurando o Protractor para a aplicação
- 11.10 Automatizando a autenticação do usuário
- 11.11 Testando cenários
- 11.12 PageObject: melhorando a legibilidade e manutenção de testes
- 12 Integração continua
- 12.1 Travis CI
- 12.2 Configurando .travis.yml
- 12.3 Associando seu repositório ao Travis
- 12.4 TaaS: test as a service com SauceLabs
- 12.5 Preparando a aplicação para diferentes ambientes
- 12.6 Integrando Travis e Sauce Labs
- 13 Criando suas próprias diretivas
- 13.1 DDO Directive Definition Object
- 13.2 Isolando o escopo de nossa diretiva
- 13.3 Transclusion
- 13.4 Separando o DDO de seu template
- 13.5 Mais diretivas
- 13.6 Manipulando DOM através de diretiva
- 13.7 A função $watch
- 13.8 Trabalhando com $broadcast
- 13.9 Testando diretivas
- 13.10 Lidando com templateUrl em testes
- 14 Deploy da aplicação
- 14.1 Deploy contínuo
- 14.2 OpenShift: platform as a service (PaaS)
- 14.3 Configurando o ambiente de deploy
- 14.4 Preparando a aplicação para deploy
- 14.5 Integrando Travis com OpenShift
- 14.6 Considerações finais
- Bibliografia
Autor

Flávio Almeida
Flávio Almeida é desenvolvedor e instrutor na Caelum. Possui mais de 14 anos de experiência na área de desenvolvimento com ampla atuação em segmentos da indústria de shopping centers e varejo. Bacharel em Informática com MBA em Gestão de Negócios em TI, possui Psicologia como segunda graduação e procura aplicar o que aprendeu no desenvolvimento de software e na educação. Trabalha com a plataforma Java desde 2004, mas, atualmente, tem focado na plataforma Node.js e na linguagem JavaScript, tentando aproximar ainda mais front-end e back-end. Participou das edições 2013 e 2014 da MobileConf e costuma contribuir com o Blog da Caelum sobre os mais diversos assuntos. Elabora treinamentos para a plataforma online Alura, atividade que vem se tornando cada vez mais prazerosa. Possui uma conta no Twitter e outra no GitHub.
Dados do produto
- Número de páginas:
- 407
- ISBN:
- 978-85-5519-046-9
- Data publicação:
- 01/2015