Considere as seguintes afirmativas a respeito do Node.js. I. Utiliza programação assíncrona. II. Pode manipular arquivos (abrir, ler, escrever, etc) no cliente. III. Pode manipular arquivos (abrir, ler, escrever, etc) no servidor. Está correto o que se afirma em
- A)I e II, somente.
Esta alternativa reúne as afirmativas I e II, isto é, diz que o Node.js usa programação assíncrona e que ele manipula arquivos no cliente. A primeira parte procede: o Node.js foi projetado com E/S não bloqueante e modelo orientado a eventos, o que o torna tipicamente assíncrono. A segunda parte não procede, porque o Node.js não roda no navegador nem acessa diretamente o sistema de arquivos do cliente; essa manipulação é própria do ambiente servidor.
- B)I e III, somente.
Esta alternativa afirma que o Node.js utiliza programação assíncrona e consegue manipular arquivos no servidor. Isso está correto: o runtime trabalha com I/O não bloqueante, baseado em eventos, e oferece o módulo fs para abrir, ler, escrever e excluir arquivos no lado servidor. Por isso, a combinação de I e III descreve adequadamente o funcionamento do Node.js.
- C)I, II e III.
Aqui se afirma que I, II e III seriam verdadeiras. Embora I e III estejam de acordo com o Node.js, a afirmativa II erra ao atribuir ao cliente a manipulação direta de arquivos pelo Node.js. No uso normal do navegador, não há acesso livre ao disco local por esse runtime; o acesso a arquivos no cliente depende de APIs do próprio browser, não do Node.js.
- D)I, somente.
Esta alternativa diz apenas que o Node.js usa programação assíncrona. Essa característica é real, pois o ambiente privilegia operações de E/S não bloqueantes e programação orientada a eventos. O problema é que a questão também traz a afirmativa III como verdadeira, já que o Node.js pode manipular arquivos no servidor por meio de recursos como o módulo fs.
- E)II e III, somente.
Esta alternativa sustenta que o Node.js manipula arquivos no cliente e no servidor. A parte do servidor está certa, porque o fs permite abrir, ler e escrever arquivos nessa camada. Porém, a parte do cliente está errada, já que o Node.js não tem acesso direto ao sistema de arquivos do navegador ou do computador do usuário nessa condição.
Gabarito: B
Node.js eh um ambiente de execucao do JavaScript fora do navegador, muito usado no lado do servidor. Uma de suas marcas registradas eh o modelo assíncrono, pensado para lidar bem com operacoes de entrada e saida sem travar a aplicacao. Isso faz a afirmativa I estar correta. A afirmativa II esta errada porque, em regra, Node.js nao roda no cliente. No navegador, o JavaScript tem restricoes de seguranca e nao pode sair abrindo, lendo e escrevendo arquivos livremente no computador do usuario. Essa tarefa nao eh do Node.js no ambiente cliente. Ja a afirmativa III esta correta: no servidor, o Node.js pode manipular arquivos usando, por exemplo, o modulo fs, que permite abrir, ler, escrever, renomear e apagar arquivos. E exatamente esse o tipo de operacao que a banca adora cobrar para separar "navegador" de "servidor". Por isso, a resposta certa e a letra B: I e III, somente. Em resumo, Node.js combina muito bem com assíncrono e com manipulacao de arquivos no servidor, mas nao no cliente como a questao afirma.