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

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

veja mais detalhes

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

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter