Seguindo o caminho JavaScript
Tags: javascript, learn, study
Published: 2021-09-14 12:08:09

Post original: [link](https://medium.com/@jotanlima/seguindo-o-caminho-javascript-6addf4fd9e17)

Um caminho ao aprendizado completo e eficiente da linguagem mais amada de todos. 

## Milhões de Bibliotecas, quais estudar?

Provavelmente você já deve ter se deparado com uma infinidade de frameworks JavaScript, os do momento são, Angular, React, Vue muitos outros. Essa é a “moda do momento”, mas a um tempo essa mesma “moda” tinha como foco, jQuery, Backbone e outros que talvez você nunca tenha ouvido falar.

**_Mas o que todos eles tem em comum?_**

__Bom, essa pergunta é muito fácil de responder, todos são feitos em JavaScript. Eu sei, é um pouco óbvio, mas tenha calma no final tudo fará sentido rs.__

Cada Framework tem sua função, cada tem um objetivo especifico pra solucionar um determinado “problema”, assim como em padrões de projetos, onde o padrão Observer, enfraquece o acoplamento, criando objetos que são “observáveis” que informam a todos os seus “observadores” quando algum evento acontece.

Nesse momento você deve estar se perguntando.

**__Tudo isso é legal, mas qual eu devo estudar?__**

Essa resposta é simples:

__Todos!__


Eu sei rs, não foi a melhor resposta, mas para que você entenda ela, teremos que responder algumas perguntas, tudo bem?

## __Vamos começar com as perguntas__

_Você domina bem JavaScript?_

Quando falo dominar não é só saber como criar funções, variáveis e etc. Estou falando dos paradigmas da linguagens.

_Sabia que JavaScript é um linguagem funcional?_

_E que ao mesmo tempo pode ser utilizada com o paradigma orientado a objeto e outros?_

_Funções são consideradas objetos de primeira classe?_

Pois como em qualquer outro objeto elas podem:

* Ser criadas por meio de literais.
* Ser atribuídas a variáveis.
* Ser passadas como parâmetros.

__Essa é última eu acho muito legal, já pensou em criar um função que recebe um parâmetro qualquer e o seu segundo parâmetro é uma função, que tem seus próprios parâmetros que se comunicam com o primeiro parâmetro da função?__

São muitos parâmetros em um pequeno texto rs.

O que eu quero dizer é que as possibilidades são infinitas.


E que funções podem ser invocadas de várias formas:

* Invocada como uma simples função, onde seu contexto é global.
* Invocada como um método, onde seu contexto é o objeto “dono” do método.
* Invocada como um construtor, onde seu contexto é um objeto recém-alocado.
* Invocada por meio dos métodos apply e call, onde o contexto pode ser o que quisermos.

**E tem muito mais.**

## Ligando os pontos
Se você respondeu todas essas perguntas com um belo sim, ou já conhecia algumas dessas aplicações da linguagem, parabéns, você está no caminho certo. Mas se você ainda se sente inseguro com esses paradigmas, bom, antes de querer se aventurar pelo mundo dos frameworks, aventure-se no mundo do JavaScript, você irá se surpreender com o que podemos fazer com a linguagem pura. 

Sem jQuery, sem Angular, sem React e etc.

Sabia que muitos desses frameworks que fazem algumas mágicas que achamos incríveis, são apenas a utilização de métodos nativos da linguagem e padrões de projetos, como formData, DataSet, preventDefault, stopPropagation, addClass , MVC, repository e outros.

## Dica de Ouro
Vou deixar alguns dicas de leitura para vocês, são leituras que já fiz e estou fazendo e pretendo fazer.

__Para quem está começando, recomendo livros que são chamados de Guias:__

* YDKJS - Kyle Simpson
* Javascript Guia do programador - Maurício Samy Silva.
* Javascript. O Guia Definitivo - David Flanagan.

__Para testar os códigos desses livros recomendo um playground, eu gosto bastante do, [JSBin] (https://jsbin.com/?html,js,output).__

__Para quem já está em um nível intermediário ou avançado e deseja aprimorar suas habilidades de desenvolvimento com Javascript, recomendo:__

* Segredos do Ninja JavaScript - John Resig e Bear Bibealt.
* Padrões JavaScript - Stoyan Stefanov.
* Javascript de Alto Desempenho - Zakas.
* Javascript Remoto - Ben Vinegar e Anton Kovalyov.
* Eloquent JavaScript - Marijn Haverbeke.
* Understanding ECMAScript 6 - Zakas.
* Testable JavaScript - Ensuring Reliable Code.
* Estruturas de dados e algoritmos em JavaScript - Loaine Groner
* Testing JavaScript Applications

**_É uma boa dar uma olhada em TDD, Mocha, Jest, Sinon, Chai, Supertest e outras libs de testes para Javascript._**

## Por fim

Ter conhecimento da linguagem lhe possibilitará avaliar e escolher a melhor forma de resolver um determinado problema ou a melhor forma de iniciar um bom projeto.

Existem bons frameworks, eles são muitos bons, recomendo que vocês estudem eles e entendam como eles abordam a linguagem e aprendam a reproduzir seus conceitos. Pois talvez daqui à 5 anos, Angular, React e outros da “moda atual” não estejam na crista da onda e se porventura no projeto você precisar de uma solução que se encaixa perfeito com o Angular (lembrando que você não pode usa-lo), o que você vai fazer?, simples, você vai implementar o conceito que o framework utilizou, seja ele componentes ou two data binding. 

__Espero ter ajudado um pouco nessa sua caminhada JavaScript, nenhum framework deve superar seu conhecimento da linguagem pura. Lembre-se os fundamentos são a base de tudo.__

__Fiquem com Deus e até a próxima.__

*Nunca desista de correr atrás dos seus sonhos*