da2k / curso-reactjs-ninja

915 stars 322 forks source link

React no frontend #599

Closed fernandomk6 closed 1 year ago

fernandomk6 commented 1 year ago

Olá professor, dessa vez não é um erro é uma duvida com relação ao ambiente no qual o react é realmente executado.

Se o react é um lib que roda no frontend, por que é preciso usar o node? eu sei que o node não é obrigatório, que da para rodar react apenas com um "CDN", e nesse caso ele seria totalmente frontend. Mas com o react no ecossistema node, usando webpack, babel e muitas outras dependências instaladas via npm, o que exatamente é processado no lado do cliente e o que é processado no servidor (no caso o meu localhost)?

Desde já obrigado pela atenção professor. O curso está excelente.

@fdaciuk

fdaciuk commented 1 year ago

Oi @fernandomk6! Excelente pergunta, vamos lá: o ponto principal aqui a se considerar, é que a linguagem JavaScript vem evoluindo muito desde 2015. A cada ano, uma nova versão é lançada com novas features que entram para melhorar a forma como usamos a linguagem.

Como o JavaScript é uma linguagem interpretada (o mesmo código que você escreve é o que o browser vai "ler"), nem sempre o motor de JS do navegador irá entender as features mais recentes da linguagem.

É aí que entram o node, webpack e babel: você escreve JavaScript "do futuro", e o babel consegue transformar esse código que o browser ainda não entende, em uma versão "mais antiga" (ES5), que qualquer browser hoje consegue entender com certeza!

Então a ideia de usar node, webpack e babel, é simplesmente para que, ao desenvolver nossas aplicações, possamos aproveitar o melhor que a linguagem tem a oferecer, sem precisar se preocupar se o navegador suporta aquela feature ou não.

O babel transforma o código JS mais novo em JS "mais antigo", o webpack empacota nossa aplicação para servir da maneira mais performática possível, lida com cache, simula um servidor local, etc., e ele roda em cima do Node.js: todo esse processo de empacotamento e transpilação de código ocorre do lado "do servidor" (no seu computador), por isso no Node é necessário.

Ao executar o comando de "build", que vai gerar a versão de produção da sua aplicação, o node, webpack e babel irão transformar todo o código que você escreveu apenas em arquivos estáticos (html, css e JS), que são os arquivos que, de fato, o browser consegue interpretar =)

Deu pra entender a ideia? =)

fernandomk6 commented 1 year ago

Excelente explicação professor muito obrigado.

Entendi, o node então trabalha (no back) para fornecer o necessário para rodar tudo no frontend. Esse tudo no final das contas acaba sendo o bundle. Correto? Acredito ter pego o fio da meada.

Muito obrigado.

fdaciuk commented 1 year ago

Exatamente! Não só o bundle, mas tudo o que o webpack te oferece, é feito com Node.js =)

fdaciuk commented 1 year ago

No módulo 2 você vai ver mais coisas legais que dá pra fazer com webpack :D

fernandomk6 commented 1 year ago

Show. Valeu professor.