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
- 📑 Entendendo como a linguagem pode ser usada
- 🔧 Preparando o ambiente
- 🔎 Encontrando conteúdo
- 📦 Packages ou pacotes
- 🧠Objetivo de aprendizagem
- ✔️ Entrega mínima
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.
- Sintax e variáveis
- Controle de fluxo
- Laços de repetição
- Funções
- Expressões e operadores
- Formatação de texto
- Números e datas
- Expressões regulares
- Array - Listas indexadas
- Objetos - Listas chaveadas
- Usar objetos
- Prototipar objetos
- Interators ou Generators
- Proxy e Reflect
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.
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.
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.
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.
É 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.
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...
Como toda linguagem Javascript tem algumas caracteristas importantes, que podem te ajudar a ter mais dominio sobre ela.
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.
Você consegue executar trechos de códigos digitados em run-time (tempo de execução), graças ao eval
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:
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.
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
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.
O Objetivo deste estudo é entender a fundo as partes mais conceituais, e os pontos mais comuns por onde começar a estudar.
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.