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

ECMAScript 6 Entre de cabeça no futuro do JavaScript

Diego Martins de Pinho

Prefácio

O ano era 1995. Estava sendo criada uma nova plataforma de comunicação chamada mIRC (Internet Relay Chat Client), e a Microsoft acabava de lançar seu próprio navegador, o Internet Explorer. Ao mesmo tempo, surgia uma nova linguagem, ainda pouco compreendida e, até certo ponto, ridicularizada. Originalmente chamada de Mocha, posteriormente teve seu nome modificado para LiveScript e, por fim, ganhou a imortalidade como JavaScript.

Passadas mais de duas décadas desde o seu surgimento, é praticamente impossível imaginar a internet sem ela. E como é gratificante trabalhar com uma linguagem que evolui dessa maneira! O JavaScript hoje tem um papel fundamental na evolução da web.

O lançamento do ECMAScript 6, a mais recente atualização da especificação, traz uma série de novas features à linguagem. Recursos estes que vão influenciar diretamente no modo como desenvolvemos em JavaScript.

E, assim, o JS continuará sua evolução constante, como tem feito desde sua origem. Em consequência, você precisará evoluir em conjunto. Lembre-se sempre disso, pois a evolução está cada vez mais rápida.

Neste livro, Diego aborda de forma brilhante as principais mudanças que a ECMAScript 6 trouxe à linguagem. Ele não apresenta somente o conceito, mas sim como aplicá-lo na prática e em situações que todos nós vivemos no dia a dia.

Nós dois estivemos no Vale do Silício durante a iMasters DevTrip 2016, visitando algumas das principais empresas que são referência para nós desenvolvedores. Lá, ficou claro que a grande diferença entre os países não é técnica, mas sim a sua cultura de colaboração.

Lembre-se sempre de que o JavaScript é um código aberto, sem controle centralizado de corporações e de fácil aprendizado. Busque trabalhar em colaboração, integrando-se à comunidade e respeitando as características dessa linguagem criada por Brandan Eich, em 1995.

Conhecimento precisa ser compartilhado, e é exatamente isso que Diego faz neste livro. Parabéns, meu caro!

A você, que segura agora este exemplar, uma excelente leitura. Estude bastante estas páginas e, principalmente, espalhe o seu conhecimento.

Então, vamos começar?

Tiago Baeta — Fundador do iMasters — http://www.imasters.com.br

Introdução

Seja muito bem-vindo a uma nova era na história do JavaScript! Há muitos anos que a linguagem JavaScript não ganhava modificações e funcionalidades novas relevantes, mas isso mudou com a chegada da nova versão da especificação ECMAScript.

Nos últimos cinco anos, o JavaScript ganhou muita força com o "grande boom" do ecossistema Node.js e NPM. A flexibilidade da linguagem tem sido usada a favor não somente do lado do cliente, mas também do lado do servidor. Tudo isso fez com que a comunidade reconhecesse a força da linguagem e finalmente a levasse a sério.

UM BREVE RESUMO DO JAVASCRIPT NA ATUALIDADE

No início da década de 90, começaram a ser desenvolvidas as primeiras aplicações web. A internet estava tomando forma e as páginas começavam a ficar cada vez mais complexas. No entanto, a maior parte dos usuários que tinham acesso à internet utilizava conexões lentíssimas de, no máximo, 28.8 kbps. Você consegue se imaginar usando uma internet dessas hoje em dia? Nem eu.

Como você deve saber, essa velocidade de conexão não estava conseguindo acompanhar a evolução das aplicações web. Elas ficavam maiores e mais complexas, e a velocidade de acesso não conseguia lidar com isso.

Foi nesta época que o JavaScript — também conhecido por nomes como Mocha, LiveScript, JScript e ECMAScript —, uma das linguagens de programação mais famosas do mundo, nasceu. Ela foi criada em 1995 por um engenheiro da Netscape, chamado Brendan Eich. Originalmente batizada de LiveScript, ela foi lançada pela primeira vez com o Netscape 2, no início do ano de 1996, e prometia ajudar os navegadores dos usuários a acompanhar a evolução das aplicações web.

E para tentar embalar no sucesso na época da linguagem de programação Java, da Sun Microsystems (hoje pertencente a Oracle, que a comprou em 2009), a linguagem mudou o seu nome para JavaScript, mesmo tendo muito pouco em comum com a linguagem Java (e isso causa muita confusão até hoje!). Por este e mais tantos outros motivos, o JavaScript sempre foi conhecido por ser a linguagem de programação mais incompreendida do mundo. 

Embora ela tenha sido ridicularizada por muitos anos por ser uma “linguagem de brincadeira”, hoje, praticamente após 20 anos do seu lançamento, ela cresceu absurdamente na comunidade de desenvolvedores, tornou-se mais robusta, poderosa e é usada em uma infinidade de aplicações de alto nível, tanto no front-end quanto no back-end das aplicações. Ela é a tecnologia por trás de ferramentas, frameworks e bibliotecas consagradas no mercado, tais como: Angular, Ember, React, Backbone, jQuery, Grunt... A lista é enorme. Atualmente, é essencial que um profissional de TI tenha domínio desta tecnologia, tanto para aplicações web, aplicativos mobile e/ou desktop.

É exatamente para isto que este livro foi escrito. Para que você seja capaz de entender todas as mudanças que vieram com o ECMAScript 6, aprimorar suas habilidades como desenvolvedor e se destacar no mercado de trabalho que hoje é tão concorrido.

A QUEM SE DESTINA ESTE LIVRO

Este livro é destinado aos desenvolvedores web que tenham, pelo menos, conhecimentos básicos da linguagem JavaScript. A seguir, seguem os principais tópicos que é necessário ter pelo menos um conhecimento básico para melhor aproveitamento do conteúdo: Declaração de funções e variáveis; Estrutura de dados: objetos e arrays; Funções anônimas e de callback; Escopos; Herança por prototipagem.

Ter domínio desses conceitos, mesmo que seja somente o básico, será essencial. Ao longo do livro, tomei o cuidado de fazer revisões nos principais tópicos da linguagem, mas é imprescindível ter um conhecimento prévio.

Caso você ainda não esteja totalmente seguro sobre os seus conhecimentos nestes tópicos, procure ler alguns livros e artigos, assistir videoaulas, fazer alguns cursos e pequenos experimentos com a linguagem. A internet está recheada de material gratuito de altíssima qualidade sobre o assunto. Dê uma olhada no capítulo de recomendações para ver algumas dicas legais.

Uma vez que você conheça pelo o básico destes tópicos, estará pronto para seguir em frente! 

O QUE VOU APRENDER NESTE LIVRO?

Neste livro, abordaremos as principais mudanças que a nova versão da especificação trouxe para a linguagem. Aprenderemos não somente o conceito, mas como aplicá-lo na prática em situações reais. Dentre elas, estão: Novas maneiras de iterar objetos e coleções; Declaração de variáveis com let e const; Melhorias em funções com arrow functions; As novas de estruturas de Map, WeakMap, Set e WeakSet; Modularização e classes; Geradores e símbolos; E muito mais. 

COMO DEVO ESTUDAR COM ESTE LIVRO?

Este livro foi estruturado de modo que os tópicos apresentados se complementem e se tornem gradualmente mais complexos ao decorrer da leitura. Em todos eles, serão apresentados diversos conceitos, sempre apoiados por códigos contextualizados em casos de uso reais, seguindo as boas práticas. Você notará não somente a evolução dos conceitos, mas também a dos códigos apresentados à medida que a leitura for seguindo.

Como acredito que somente com a prática que aprendemos a programar e fixar o conhecimento, no repositório deste livro no GitHub, você encontrará uma série de exercícios elaborados pensando na prática dos tópicos apresentados. Junto aos exercícios, você também encontrará o gabarito comentado. No final do livro, também há uma série de recomendações de livros, artigos e cursos para que você se aprofunde nos estudos. 

Consulte o livro sempre que surgirem dúvidas e entre contato sempre que sentir necessidade. Leia e releia até compreender os conceitos. Não tenha pressa.

Em caso de dúvidas, estarei sempre a disposição. Não deixe de comentar e participar das discussões sobre o livro e os exercícios no site oficial e nos nossos canais de comunicação! O site e o repositório continuarão sendo atualizados com novos exercícios, artigos, notícias e projetos de exemplo. Vamos aprender juntos! E o mais importante: nunca deixe de praticar! 

 

Sumário

  • 1 ECMAScript x JavaScript
    • 1.1 Implementações da especificação
    • 1.2 Breve histórico
    • 1.3 Futuro
  • 2 Precisamos falar sobre o Babel
    • 2.1 Outras ferramentas
  • 3 Métodos auxiliares para Array
    • 3.1 A maneira tradicional de iterar um Array
    • 3.2 forEach
    • 3.3 map
    • 3.4 filter
    • 3.5 find
    • 3.6 every
    • 3.7 some
    • 3.8 reduce
  • 4 Iteração com iteradores e iteráveis
    • 4.1 Iteradores
    • 4.2 Iteráveis
    • 4.3 Iteradores e iteráveis na prática
  • 5 Iteração com o laço for...of
    • 5.1 Diferenças entre o for...of e for...in
    • 5.2 break e continue
    • 5.3 Voltando para o Chapéu Seletor
  • 6 As novas estruturas de Map e WeakMap
    • 6.1 Map
    • 6.2 WeakMap
    • 6.3 Administrando uma biblioteca
  • 7 Listas sem repetições com Sets e WeakSets
    • 7.1 Set
    • 7.2 WeakSet
  • 8 Declaração de variáveis com const e let
    • 8.1 Constantes com const
    • 8.2 let é o novo var
    • 8.3 Qual a diferença, no final das contas?
  • 9 Manipulação de textos com template strings
    • 9.1 Template strings simples
    • 9.2 Template strings marcado
  • 10 Arrow functions
    • 10.1 São menos verbosas
    • 10.2 O contexto de execução é diferente
  • 11 Melhorias em objetos literais
    • 11.1 Declaração de propriedades
    • 11.2 Índices de propriedades computadas
    • 11.3 Objetos literais x JSON
  • 12 Parâmetros predefinidos em funções
    • 12.1 Atribuindo valores padrões
    • 12.2 Valores undefined
    • 12.3 Referenciando outros valores padrões
    • 12.4 Referenciando variáveis internas
    • 12.5 Utilizando funções como valores padrões
    • 12.6 Tornando parâmetros obrigatórios
  • 13 Parâmetros infinitos com operador Rest
    • 13.1 Entenda o que arguments faz
    • 13.2 Arguments X Operador Rest
    • 13.3 Particularidades do operador Rest
    • 13.4 Podemos utilizar em conjunto com parâmetros “fixos”
  • 14 Expansão com o operador Spread
    • 14.1 Fazendo compras com o Spread
    • 14.2 Adicionando itens a um Array
    • 14.3 Operador Spread em chamadas de funções
    • 14.4 Operador Rest x Operador Spread
  • 15 Desestruturamento de Arrays e Objetos
    • 15.1 Rotulando propriedades
    • 15.2 Desestruturamento de vários objetos
    • 15.3 Desestruturamento em retorno de chamadas de métodos
    • 15.4 Desestruturamento de Arrays
    • 15.5 Desestruturando Arrays — Parte 2
  • 16 Modelando com classes
    • 16.1 Utilize classes do ES6
    • 16.2 Estendendo classes
    • 16.3 Hoisting em classes
    • 16.4 Declaração por meio de expressões
    • 16.5 Métodos estáticos
    • 16.6 Atributos privados com WeakMap
    • 16.7 Últimas considerações
  • 17 Módulos
    • 17.1 CommonJS x AMD
    • 17.2 Importar e exportar módulos
    • 17.3 Exportando classes
    • 17.4 Rótulos em módulos
    • 17.5 Últimas considerações
  • 18 Funções geradoras
    • 18.1 O que são funções geradoras?
    • 18.2 Iterações com geradores
    • 18.3 Entendendo o Symbol.iterator
    • 18.4 Delegação de funções geradoras
  • 19 Operações assíncronas com promises
    • 19.1 O que são promises?
    • 19.2 Os estados das promises
    • 19.3 O esqueleto de uma promise
    • 19.4 Operações assíncronas
    • 19.5 Aninhamento de then e catch
    • 19.6 Como lidar com erros inesperados
  • 20 Metaprogramação com proxies
    • 20.1 O que é metaprogramação?
    • 20.2 Voltando para os proxies
    • 20.3 Validações de inputs com proxies e traps
    • 20.4 Desativando um proxy
    • 20.5 Últimas considerações
  • 21 Um futuro brilhante para o JavaScript
  • 22 Recomendações
  • 23 Referências

Dados do produto

Número de páginas:
206
ISBN:
978-85-5519-258-6
Data publicação:
03/2017

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter