Boa noite Marcelo, tudo certo?
Você trouxe ótimas dúvidas nesse tópico e vou tentar respondê-lo:
1- Quando estamos no Express/Node/Back End, estamos criando rotas e recursos. Ou seja, estamos definindo ali quais URLs
estarão disponíveis e qual é a resposta de cada um desses endereços.
Já no JavaScript do navegador/Front End, estamos apenas acessando uma rota ou recurso. Ou seja, estamos fazendo uma requisição à um servidor naquele endereço e naquela rota e passando algumas informações.
2- Você entregou parte da resposta no final. O Front End precisa acessar o DOM para buscar as informações que o usuário inseriu na página e em seguida precisa colocar essas informações no corpo da requisição e enviar essas informações para o Back End. Sendo assim, quando essa requisição chega no Back End, o objeto req.body
vai ter esses campos acessíveis.
3- Essa dúvida mistura um pouco as responsabilidades: normalmente as chamadas do tipo fetch ficam no Front End para acessar o Back End e as rotas ficam no Back End representando os recursos que podem ser acessados. Isso não impede que o seu Back End utilize outro serviço, assim como é mostrado no curso NodeJS: Streaming de dados e Repositório, mas normalmente não é utilizado o método fetch()
pois ele é um método que depende do browser até onde sei. (É possível utilizar um pacote npm
chamado node-fetch
, mas não é uma ferramenta nativa do Node).
4- As portas que são utilizadas por cada uma das aplicações são convenções, então se no ambiente de desenvolvimento você garantir que está utilizando portas diferentes e que os endereços das aplicações foram inseridos corretamente nas outras aplicações provavelmente você não terá nenhum problema. Usualmente, páginas web utilizam as portas 8000
ou 8080
. Em caso de dúvidas você pode checar se existe alguma sugestão na documentação da ferramenta que você está utilizando.
5- Alguns provedores utilizam o que é chamado variável de ambiente. Essa variável contém o valor da porta que deve ser utilizada para acessar sua aplicação, e você pode acessar esse valor no node, por exemplo, como process.env.nomeDaVariavel
. Ou seja, você pode fazer algo no seu código como:
const portaDaAplicação = process.env.PORT || 5000;
e ele vai checar se uma variável do sistema existe com o nome PORT
. Se ela não existir, vai ser atribuído o valor 5000
. Lembrando que nem todos provedores te dão essa opção e podem ter uma forma diferente de lidar com as portas. Essa experiência que estou relatando é como acontece no Heroku e eu acho que é uma ótima prática a ser seguida, mas você deve entrar em contato com o seu provedor e tirar essa dúvida.
Espero que eu tenha resolvido as dúvidas. O aprendizado de tecnologia às vezes é bem confuso mesmo e pode parecer desafiador demais, mas diminuindo em problemas menores como você fez nos deixa mais próximo de conquistar esse mundo da programação. Caso tenha alguma questão restante não hesite em fazê-la.
Caso este post tenha resolvido sua dúvida, por favor, marque o tópico como solucionado ✓.Bons Estudos!