Skip to content

Latest commit

 

History

History
148 lines (89 loc) · 10.8 KB

por-onde-comecar-a-estudar-javascript.md

File metadata and controls

148 lines (89 loc) · 10.8 KB

🏁 Por onde começar a estudar Javascript

Como qualquer linguagem exige muito pratica então nesta issue você verá como iniciar montando seu ambiente e alguns lugares onde buscar conteúdo e alguns exercícios para praticar.


📌 Aprender o Javascript

O primeiro passo é entender que temos dois caminhos um client-side ou seja no navegador e o outro server-side no servidor. Ambos tem pontos em comum vamos iniciar por ele mas lembre-se de certificar se oque esta vendo é do server ou client side.

O básico da linguagem

Tente ver se já sabe algo se tem alguma duvida sobre algum revisite o conhecimento, é muito importante que esta parte esteja muito clara, pois isso ira facilitar tanto se quiser aprender o Javascript para o navegador quanto para o servidor.

📑 Entendendo como a linguagem pode ser usada

Neste ponto vamos entender muitas características dele isso é muito importante para um conhecimento aprofundado. Não se preocupe se não entender todos esses pontos inicialmente, não se apegue neles neste momento mas é muito importante que entenda se quiser ter um profundo conhecimento.

Como disse antes o Javascript pode ser usado quase em qualquer lugar isso graças ao seu interpretador mais famoso a v8 que gera um bytecode que pode ser usado de diferentes formas.

v8 works digram

O Javascript no Navegador

Uma das formas mais importantes onde o Javascript é usando é no navegador no caso por diversas render engines nem todas usam a v8 um exemplo disso é o Gecko a render engine do Firefox que usa o SpiderMonkey um interpretador alternativo a v8.

As principais render engines existentes são o WebKit e primo dele o Blink que são usados por grande parte dos navegadores como Chrome, Opera, Safari, Edge porem elas não são as únicas existentes um exemplo é o Trident usado pelo IE contudo esse projeto foi abandonado hoje o IE se tornou o Edge que também usa o Blink.

Navegadores, suas render engines e suas Javascript engines

Neste caso vamos ver um pouco mais sobre o mais recente e popular deles o Blink. Ele tem esse nome foi influenciado pela tag blink que ele nunca deu suporte.

O Javascript no Servidor

É chamado de NodeJS tem uma versão estável oficial para todos os principais OS, pode ser usado de muitas maneiras diferentes. Abaixo vamos ver como ele funciona e algumas de suas principais caracteristicas.

NodeJS não é uma linguagem

Ele é apenas um Runtime escrito em C/C++ (uma maquina virtual que executa oque é entendido do interpretador). A linguagem usada no Node é Javascript.

O mesmo Javascript que é entendido no navegador com algumas funcionalidades a mais e outras a menos, por exemplo no Javascript que é executado na runtime do Node podemos criar arquivos diretamente no sistema operacional já no navegador não por motivos de segurança.

Como disse antes o interpretador neste caso também é a V8 ela entende o que foi escrito em Javascript e gera o bytecode. Apartir deste bytecode a runtime executa as ações no sistema operacional em linguagem de maquina, por este motivo temos uma runtime para cada sistema operacional, onde todos usam a v8.

O responsável por boa parte das ações no sistema operacional é a LIBUV, uma biblioteca em C++ para lidar com I/O desenvolvida inicialmente para NodeJS porem hoje usada por outras linguagens como Luvit, Julia, pyuv, etc...

arquitetura node

Caracteristicas do Javascript

Como toda linguagem Javascript tem algumas caracteristas importantes, que podem te ajudar a ter mais dominio sobre ela.

Suporte universal

Graças a V8 hoje é possivel usar a linguagem para praticamente qualquer coisa como:

  • Criar uma aplicação web para com NodeJS.
  • Manipular o DOM / HTML no browser.
  • Computação embarcada como Arduino usando [Jhonyfive].

Entre muitas outras possibilidades.

Dinamica

Você consegue executar trechos de códigos digitados em run-time (tempo de execução), graças ao eval

Multi-paradgima

Suporta diferentes paradgimas como orientados a eventos, funcional e imperativos (incluindo orientado a objetos e prototype-based). Para entender um pouco melhor sobre paradgimas veja alguns passos anteriores nas issues.

O fato de você não ter que inferir o tipo não significa que ela não tenha tipos. Em ambos temos vantagens e desvantagens. Com a linguagens fortemente tipadas, identificamos erros no código mias facilmente, por outro lado sua curva de aprendizagem pode se tornar maior.

É Single Thread

A verdade é que a V8 single thread é, não entraremos muito nesse ponto neste momento mais a frente entenderemos como isso funciona. Por hora entenda que ele só pode tratar uma coisa de cada vez, então o processamento de cada uma não pode ser demorado.

Se quiser entender isso neste momento recomendamos essas leituras:

en pt pt

Não é a mesma coisa que EcmaScript

É muito comum as pessoas confundirem afinal o Ecmascript é a especificação de como o Javascript deve ser tanto no navegador quando no runtime do Node.

🔧 Preparando o ambiente

Independente se vai aprender o Javascript para client-side ou para server-side é importante ter o NodeJS instalado na sua maquina pois ele é muito usado para ambos os casos.

Para iniciar precisamos preparar nossa maquina para conseguirmos executar nosso código. Para isso precisamos instalar o NodeJS no ambiente de desenvolvimento geralmente usamos o NVM (Node version manager) isso porque diferentes de outras linguagens o node não controla sua própria versão de maneira automática. Baixe de acordo com seu sistema operacional:

⚠️ Atenção: Se instalou o Node diretamente recomendamos desinstalar e usar o NVM. Isso porque aplicações podem usar diferentes versões do Node e a mudança de uma Versão para a outra pode tomar muito tempo

🔎 Encontrando conteúdo

Como toda linguagem tem lugares em comum que pode ser usado para busca conteúdo. Aqui você verá alguns pontos exclusivos do NodeJS.

  • Acompanhar o futuro da linguagem

TC39 - ECMA262 é quem cuida das especificações Javascript o famoso EcmaScript. Então se quiser antecipar oque pode ser desenvolvido ou até mesmo mandar sua própria sugestão. Repositório oficial do Node é onde esta o código então se quiser saber oque esta sendo desenvolvido pode acompanhar os commits ou as releases.

  • Buscar pacotes como código

NPM aqui é o repositório oficial do node onde tem milhões de pacotes que você pode usar.

  • Coisas para estudar

Node DEV MDN um dos melhores lugares para estudar sobre Javascript.

🧠 Objetivo de aprendizagem

O Objetivo deste estudo é entender a fundo as partes mais conceituais, e os pontos mais comuns por onde começar a estudar.

✔️ Entrega mínima

Escolha onde deseja se aprofunda, como frontend ou backend e estude o básico da linguagem encontrando 2 pontos que não conhece e criando exemplos de uso sobre.