Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>Node.js</p><p>Apresentação</p><p>A área de desenvolvimento de software está em constante evolução. Tecnologias novas vêm</p><p>surgindo em ritmo acelerado, novas plataformas e conceitos vêm sendo difundidos e o desafio é</p><p>cada vez maior.</p><p>O desenvolvimento de software para dispositivos móveis é uma área com diversas oportunidades.</p><p>O uso de dispositivos móveis faz parte do cotidiano das pessoas e, diferentemente do passado, em</p><p>que estes eram utilizados para realizar e receber chamadas, atualmente, por meio de diversos</p><p>aplicativos, estão sendo utilizados para infinitas atividades.</p><p>Nesta Unidade de Aprendizagem, você aprenderá sobre a tecnologia Node.js, uma tecnologia</p><p>moderna e que serve de base para outras. Além disso, conhecerá o seu gerenciador de pacotes, o</p><p>NPM. Por fim, verá como iniciar um desenvolvimento de aplicativo com o framework Ionic.</p><p>Bons estudos.</p><p>Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:</p><p>Definir o Node.js e como funciona o seu ambiente.•</p><p>Descrever a utilização do Node.js, npm, ionic e vscode.•</p><p>Praticar o uso do Node.js no desenvolvimento de um pequeno exemplo.•</p><p>Desafio</p><p>No meio de várias tecnologias existentes, é necessário estar preparado para novos desafios.</p><p>Atualmente, existem vários dispositivos móveis no mercado, rodando sistemas diferentes, como o</p><p>Android e o iOS. A linguagem de programação nativa para o desenvolvimento dessas plataformas é</p><p>Java para Android e Swift para iOS. Outra opção disponível é utilizar um framework para</p><p>desenvolvimento híbrido, ou seja, você faz somente um código (utilizando tecnologias como HTML,</p><p>CSS e JavaScript) e o instala para ambas as plataformas. Alguns desses frameworks disponíveis são o</p><p>Ionic e o React Native, cuja base é a tecnologia Node.js.</p><p>Quais pontos você consideraria para escolher a tecnologia que será utilizada? Cite pelo menos</p><p>dois pontos. Justifique a sua resposta.</p><p>Infográfico</p><p>O Node.js é uma tecnologia nova, a qual está sendo usada por grandes empresas como a Netflix, o</p><p>PayPal, entre outras. No meio de diversas outras tecnologias, as características do Node.js fazem</p><p>dele uma boa opção para quem busca desempenho e economia.</p><p>Neste Infográfico, você vai conhecer essa tecnologia, verificando como ela é formada, assim como</p><p>as suas principais características.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>https://statics-marketplace.plataforma.grupoa.education/sagah/b068eb44-a8ba-41cc-a80c-c8f64ecdc163/c83582dc-b97e-4066-b915-0d7ed99300f9.jpg</p><p>Conteúdo do livro</p><p>Em um mercado cada vez mais competitivo, novos paradigmas de desenvolvimento vêm surgindo.</p><p>A área de desenvolvimento de software vem evoluindo cada vez mais, e grandes players do mercado</p><p>estão aderindo tecnologias mais novas com a finalidade de ter um consumo menor dos seus</p><p>recursos computacionais, gerando maior desempenho e economia.</p><p>No capítulo Node.js, da obra Desenvolvimento para dispositivos móveis, base teórica desta Unidade</p><p>de Aprendizagem, você vai conhecer mais sobre essa tecnologia emergente, além de como utilizá-la</p><p>no desenvolvimento de suas aplicações. Além disso, vai verificar o que é utilizado para gerenciar</p><p>módulos de um projeto de maneira fácil, e como iniciar o desenvolvimento de um aplicativo móvel</p><p>utilizando um bom editor de códigos. Por fim, vai ver a criação de uma aplicação utilizando o</p><p>Node.js.</p><p>Boa leitura.</p><p>DESENVOLVIMENTO</p><p>PARA DISPOSITIVOS</p><p>MÓVEIS</p><p>Felipe Andery Reis</p><p>Node.js</p><p>Objetivos de aprendizagem</p><p>Ao final deste texto, você deve apresentar os seguintes aprendizados:</p><p>� Definir o Node.js e como funciona seu ambiente.</p><p>� Descrever a utilização do Node.js, Node Package Manager, Ionic e</p><p>Visual Studio Code.</p><p>� Praticar o uso do Node.js no desenvolvimento de um pequeno</p><p>exemplo.</p><p>Introdução</p><p>As tecnologias em geral estão se revolucionando, e no mundo de</p><p>desenvolvimento de software, isso também ocorre. Se você pensar</p><p>em um passado próximo, perceberá que muitas tecnologias já foram</p><p>e continuam sendo criadas para permitir que os processos de desen-</p><p>volvimento se tornem mais ágeis e eficientes. Em um cenário cada vez</p><p>mais competitivo, as empresas optam por soluções mais simples, cujas</p><p>ferramentas de desenvolvimento sejam mais eficazes para criar seus</p><p>produtos e serviços.</p><p>Neste capítulo, você estudará a plataforma Node.js, sua definição, seu</p><p>funcionamento, sua utilização com um exemplo prático e seus compo-</p><p>nentes, como o gerenciador de pacotes do Node (npm, em inglês node</p><p>package manager); a plataforma Ionic, que cria aplicativos móveis cuja</p><p>base é o Node.js; e o Visual Studio Code (VSCode), um editor de códigos</p><p>para desenvolver programas.</p><p>Plataforma Node.js</p><p>Em 2009, motivado pela ideia de criar uma tecnologia que pudesse oferecer um</p><p>melhor aproveitamento dos recursos de máquina, como central process unit</p><p>(CPU) e memória, e deixar que os processos em execução ficassem o menor</p><p>tempo ociosos, o pesquisador e engenheiro Ryan Dahl criou a plataforma</p><p>Node.js, um ambiente de execução JavaScript orientado a eventos, assíncrono</p><p>e open source.</p><p>A linguagem JavaScript era utilizada nos navegadores e servia para</p><p>criação de animações, efeitos e ações em páginas Web, depois, começou</p><p>a ser empregada em aplicações que fossem desvinculadas do navegador.</p><p>Assim, o Node.js poderia usar seus recursos para criação de aplicações Web</p><p>que rodam ao lado do servidor, como as aplicações back-end e Desktop,</p><p>Application Programming Interface (API), utilitários de linhas de comando,</p><p>etc., abrindo muitas oportunidades para empresas no desenvolvimento de</p><p>produtos e serviços.</p><p>O Node.js é baseado em alguns componentes, como o motor ou engine</p><p>V8, um interpretador JavaScript criado pelo Google e utilizado no navegador</p><p>Chrome; e a Libuv, uma biblioteca que fornece suporte a várias funcionali-</p><p>dades, por exemplo, a conexão de rede ou ao banco de dados, o acesso aos</p><p>dispositivos de entrada e saída, entre outras.</p><p>O motor V8 é um interpretador de JavaScript e WebAssembly, criado pelo Google</p><p>e escrito em C++, open source e com alto desempenho. Ele pode ser executado em</p><p>multiplataformas, como Windows, Mac e Linux, sendo mais utilizado em navegadores</p><p>(p. ex., Chrome) e no Node.js, que a usa em sua base. Para saber mais, acesse o site</p><p>oficial no link a seguir.</p><p>https://v8.dev/</p><p>Inicialmente utilizado no Node.js, o Libuv é um framework que oferece suporte</p><p>multiplataformas e tem como principal objetivo trabalhar como um modelo assíncrono</p><p>de entrada e saída, fazendo determinado processo em execução não atrapalhar outras</p><p>tarefas antes que ele tenha terminado. Suas principais características incluem o suporte</p><p>aos protocolos Transmission Control Protocol (TCP), User Datagram Protocol (UDP) e</p><p>Domain Name System (DNS), bem como as operações com arquivos e sistemas de</p><p>arquivos. Essa biblioteca também é utilizada por outras tecnologias, como Lua, Julia</p><p>e Python. Para saber mais, acesse o site oficial no link a seguir.</p><p>http://libuv.org/</p><p>Node.js2</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>Criado em 2013, o Electron é um framework open source, permite criar aplicativos Desktop</p><p>que podem ser executados em várias plataformas e tem como base a combinação</p><p>dos componentes Chromium e Node.js. Se você deseja utilizar o Node.js para criar</p><p>aplicações Desktop, acesse o link a seguir e saiba mais.</p><p>https://qrgo.page.link/JEMAZ</p><p>Funcionamento</p><p>Muitas aplicações Web empregam um modelo bloqueante, ou blocking</p><p>thread, para lidar com processos de entrada e saída, fazendo os recursos</p><p>utilizados na máquina não funcionarem de forma eficiente. Isso reflete um</p><p>comportamento síncrono, em que uma operação ocorrerá depois de outra</p><p>(PEREIRA, 2013).</p><p>Considerando que a maioria dos servidores tradicionais são multithreaded,</p><p>portanto, para cada requisição no servidor, uma thread é criada, imagine</p><p>uma requisição em um servidor Web para a operação de leitura e escrita</p><p>no banco de dados. Sendo essa tarefa dispendiosa, a thread responsável</p><p>pelo processamento ficará em estado</p><p>de espera (wait) até que a operação</p><p>no banco de dados seja concluída, para logo depois continuar o processo e</p><p>enviar uma resposta à requisição. Caso existam outras requisições no servidor</p><p>nesse tempo, threads serão criadas e ficarão em wait em processos mais</p><p>custosos. Esse tempo em que elas ficam ociosas aguardando a finalização</p><p>do processamento faz a alocação dos recursos computacionais (como a</p><p>memória) não ser eficiente.</p><p>Portanto, ao empregar o modelo bloqueante, pode-se perceber que manter</p><p>uma fila de threads ociosa não é muito interessante. Na Figura 1, você pode</p><p>ver um exemplo desse modelo.</p><p>3Node.js</p><p>Figura 1. Modelo bloqueante.</p><p>Nova</p><p>thread</p><p>Nova</p><p>thread</p><p>Thread</p><p>em espera</p><p>Servidor</p><p>tradicional</p><p>Tarefa dispendiosa</p><p>Requisições</p><p>No Node.js, isso acontece de forma diferente, pois uma nova requisi-</p><p>ção no servidor não gera uma nova thread, ao contrário, ele oferece uma</p><p>arquitetura não bloqueante, baseada em eventos que seguem o modelo de</p><p>thread única (single thread), chamada de Event Loop. Além disso, o Node.</p><p>js fornece um Worker Pool ou pool de threads para lidar com os processos</p><p>mais dispendiosos, como leitura e escrita de arquivos, acesso ao banco de</p><p>dados, entre outros.</p><p>Quando chega uma requisição no Event Loop, ele verifica se a tarefa é</p><p>bloqueante/dispendiosa, caso ela demande um tempo de processamento maior,</p><p>é enviada ao processamento no pool de threads, cuja operação ocorre de forma</p><p>assíncrona. Ele funciona como um laço infinito, processando as requisições</p><p>e enviando as tarefas mais dispendiosas ao pool de threads. Quando existir a</p><p>finalização de alguma tarefa bloqueante, o retorno é enviado ao Event Loop</p><p>para que ele continue sua execução (PEREIRA, 2013). Veja na Figura 2 um</p><p>exemplo de modelo não bloqueante.</p><p>Node.js4</p><p>Figura 2. Modelo não bloqueante.</p><p>Fonte: Adaptada de Kiran (2015, documento on-line).</p><p>Ao ser iniciado, o Node.js realiza a inicialização do Event Loop, processa algum script</p><p>de entrada fornecido, pode fazer chamadas de API assíncronas, agendar cronômetros</p><p>ou chamar processos como o process.nextTick() e, depois, começa a processar o Event</p><p>Loop. Para saber mais sobre o tema, acesse o link a seguir.</p><p>https://qrgo.page.link/AdZ3e</p><p>Vantagens e desvantagens</p><p>Assim como qualquer tecnologia, a plataforma Node.js tem vantagens e des-</p><p>vantagens. A seguir, você pode ver algumas de suas vantagens.</p><p>� Enorme comunidade ativa, milhares de pacotes disponíveis para reu-</p><p>tilização e vários casos de estudo de grandes empresas, como PayPal,</p><p>Netflix, Walmart, entre outros.</p><p>� Poucos recursos computacionais, incluindo baixo consumo de random</p><p>access memory (RAM) e um melhor aproveitamento da CPU.</p><p>5Node.js</p><p>� Curva de aprendizagem é baixa para desenvolvedores Web que já pro-</p><p>gramam em JavaScript.</p><p>� Existência de bibliotecas, pacotes e plug-ins distribuídos pelo npm.</p><p>Já suas desvantagens incluem:</p><p>� Alguns desenvolvedores se sentem incomodados com a utilização da</p><p>linguagem JavaScript.</p><p>� Tecnologia praticamente nova (desde 2009).</p><p>� Não recomendado em aplicações que demandam alto uso da CPU,</p><p>devido à existência de muitos cálculos.</p><p>� Modelo assíncrono se torna um fator complicador devido ao grande</p><p>número de callbacks que possam existir.</p><p>Utilização do Node.js</p><p>Para usar o Node.js e executá-lo em uma máquina local, deve-se configurar</p><p>o ambiente de desenvolvimento. O primeiro passo é fazer o download da</p><p>instalação pelo site oficial da plataforma e seguir seus passos para o sistema</p><p>operacional.</p><p>O download do Node.js pode ser feito pelo site oficial, no qual os pacotes de instalação</p><p>para as plataformas Windows, Mac e Linux estão disponíveis. Para saber mais, acesse</p><p>o link a seguir.</p><p>http://nodejs.org</p><p>Uma vez que o Node.js foi instalado corretamente na máquina, sua versão</p><p>pode ser verificada por meio do comando node –v. Se o Windows for</p><p>o sistema operacional utilizado, pelo prompt de comandos, basta digitar o</p><p>comando conforme você pode ver na Figura 3.</p><p>Node.js6</p><p>spfau</p><p>Realce</p><p>Figura 3. Verificando se o Node.js foi instalado corretamente.</p><p>Para realizar um teste rápido com um trecho de código JavaScript, sem a</p><p>necessidade de criar um arquivo com extensão .js, pode-se utilizar o console</p><p>interativo do Node.js, basta digitar o comando node no prompt de comandos.</p><p>Na Figura 4, você pode ver seu uso para exibir a mensagem “Olá Mundo</p><p>Node.js”, por meio do comando console.log() do JavaScript.</p><p>Figura 4. Exibindo uma mensagem por meio do console interativo do Node.js.</p><p>O console interativo do Node.js é conhecido como read-eval-print loop (REPL). Para</p><p>saber mais sobre o assunto, acesse o site oficial no link a seguir.</p><p>https://nodejs.org/api/repl.html</p><p>Caso você não queira utilizar o console interativo, um arquivo JavaScript</p><p>pode ser criado. Por exemplo, considere que o arquivo app.js contém o</p><p>código console.log(“Olá Mundo Node.js”), portanto, para verificar</p><p>seu funcionamento, basta executá-lo por meio do comando node app.js,</p><p>conforme apresentado na Figura 5.</p><p>7Node.js</p><p>Figura 5. Exibindo uma mensagem por meio do arquivo app.js.</p><p>Você pode deixar sua aplicação Node.js acessível publicamente. Saiba mais sobre</p><p>várias opções para hospedá-la acessando o link a seguir.</p><p>https://qrgo.page.link/HZPfo</p><p>Utilização de um editor de códigos para</p><p>desenvolvimento</p><p>Para desenvolver códigos JavaScript e rodá-los com o Node.js, você pode es-</p><p>colher um entre vários editores ou ambientes de desenvolvimento disponíveis,</p><p>como o VSCode, um editor bem conhecido e utilizado.</p><p>Criado pela Microsoft, o VSCode é um editor de código-fonte gratuito e</p><p>leve, que fornece suporte para diversas operações de desenvolvimento, como</p><p>depuração, execução de tarefas e controle de versão. Ele está disponível para</p><p>multiplataformas (Windows, Mac e Linux), já vem com suporte nativo para as</p><p>tecnologias JavaScript, TypeScript e Node.js, além de ter uma grande quanti-</p><p>dade de extensões para outras linguagens de desenvolvimento. Na Figura 6,</p><p>você pode observar esse tipo de editor.</p><p>Node.js8</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>Figura 6. Editor de códigos VSCode. a) Barra de atividades, que permite alternar as exibi-</p><p>ções do editor. b) Barra lateral, que contém informações sobre o projeto em que você está</p><p>trabalhando e os editores abertos. c) Grupo de editores, que contém a área principal para</p><p>editar seus arquivos de desenvolvimento, podendo abrir vários editores. d) Painéis, em que</p><p>você exibe diferentes painéis, como informações de erros, de saída, depuração de código</p><p>e avisos. Um terminal também pode ser aberto nessa área. e) Barra de status, na qual estão</p><p>localizadas as informações sobre o projeto e os arquivos que serão editados.</p><p>Fonte: Adaptada de Visual... (2019, documento on-line).</p><p>Barra de atividades</p><p>Barra lateral Barra de status</p><p>Grupo de editores</p><p>Painéis</p><p>Para abrir no VSCode o arquivo app.js demonstrado anteriormente,</p><p>basta ir à opção File -> Open File e selecionar o arquivo desejado, conforme</p><p>você pode visualizar na Figura 7.</p><p>Figura 7. Abrindo um arquivo JavaScript pelo editor de códigos.</p><p>9Node.js</p><p>Gerenciamento dos pacotes</p><p>O Node.js possui um gerenciador padrão de pacotes, conhecido como npm, que</p><p>vem na sua instalação. Ele trouxe uma grande facilidade para os desenvolve-</p><p>dores em organizar os pacotes, distribui-los e reutilizá-los em outros projetos.</p><p>Para verificar qual versão do npm foi instalada no sistema operacional,</p><p>basta digitar o comando npm –v no prompt de comandos, conforme você</p><p>pode conferir na Figura 8.</p><p>Figura 8. Verificando se o npm foi instalado corretamente.</p><p>Para instalar um módulo no Node.js e empregá-lo em seu código, deve-</p><p>-se utilizar o comando npm install <nome_módulo>, que buscará</p><p>determinado pacote no repositório público do npm. Lembre-se que módulos</p><p>ou pacotes são bibliotecas JavaScript.</p><p>Em relação ao repositório público do npm, caso você queira pesquisar por determinado</p><p>pacote, contribuir com algum desenvolvimento ou disponibilizar o próprio módulo,</p><p>acesse o link a seguir.</p><p>https://www.npmjs.com/</p><p>Node.js10</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>Para ilustrar o procedimento de instalação de um módulo no Node.js, veja um</p><p>exemplo de como instalar o pacote upper-case, responsável por converter os</p><p>caracteres de uma frase para a letra maiúscula. Para instalar esse pacote, é ne-</p><p>cessário executar o comando npm install upper-case, conforme você</p><p>pode ver na Figura 9.</p><p>Figura 9. Instalação do pacote upper-case.</p><p>Após a instalação, uma pasta node_modules será criada, contendo o pacote</p><p>que foi instalado.</p><p>Um pacote Node.js pode ser instalado de duas formas: localmente ou globalmente.</p><p>Para fazer uma instalação local, basta utilizar o comando npm install <nome_</p><p>modulo>. Assim, o pacote será instalado dentro da pasta node_modules, que é criada</p><p>no diretório de seu projeto.</p><p>Caso você opte por uma instalação global, use o comando npm install –g</p><p><nome_modulo>, no qual -g será responsável por instalar o pacote em um diretório</p><p>node_modules global na máquina de desenvolvimento.</p><p>Para fazer a atualização local de um módulo, utilize o comando npm update</p><p><nome_modulo>. Já para uma atualização global, basta usar o comando npm</p><p>update –g <nome_modulo>.</p><p>Por fim, para remover um módulo, use o comando npm uninstall</p><p><nome_modulo>.</p><p>11Node.js</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>Ao instalar um módulo pelo comando npm, cria-se a pasta node_modules e um</p><p>arquivo chamado package.json, o qual contém informações sobre o projeto e</p><p>suas dependências. Para saber mais sobre esse arquivo, acesse o link a seguir.</p><p>https://qrgo.page.link/sGFHa</p><p>Para incluir algum módulo no código, deve-se utilizar o comando re-</p><p>quire, sendo assim, o pacote upper-case é incluído no arquivo app.js.</p><p>Nesse exemplo, o módulo upper-case se encontra na pasta node_modules</p><p>do projeto. Ao executar o código, a mensagem precisa ser exibida com letras</p><p>maiúsculas, como você pode ver na Figura 10.</p><p>Figura 10. Utilização do módulo upper-case.</p><p>Framework Ionic</p><p>O Node.js é a base de várias tecnologias, entre elas, o framework Ionic,</p><p>um kit de ferramentas open source utilizado no desenvolvimento das</p><p>interfaces de usuário em aplicações móveis e desktop. Ele é muito usado</p><p>por empresas e desenvolvedores para criar aplicações híbridas, que podem</p><p>ser empregadas e portadas para plataformas diferentes, como Android e</p><p>iPhone Operating System (iOS), sem a necessidade de escrever um código</p><p>diferente para cada uma.</p><p>Node.js12</p><p>O Ionic usa tecnologias da Web bem difundidas, como Hypertext Markup</p><p>Language (HTML), Cascading Style Sheets (CSS) e JavaScript, tem as van-</p><p>tagens de ser um framework de alto desempenho e alta qualidade, além de</p><p>possuir uma curva de aprendizagem baixa.</p><p>Como a experiência do usuário em qualquer aplicação é fundamental,</p><p>o Ionic oferece diversos suportes para que isso seja possível, integrando-se</p><p>facilmente às outras bibliotecas ou estruturas, como o suporte ao Angular</p><p>e as tecnologias Vue e React, nas quais o suporte está em desenvolvimento.</p><p>Para você iniciar o desenvolvimento com o Ionic, são necessários alguns</p><p>requisitos.</p><p>� Instalação do Node.js: ele é a base da tecnologia Ionic, por isso, deve</p><p>ser instalado na máquina de desenvolvimento, verificando-se também</p><p>se o npm está instalado.</p><p>� Instalação dos módulos Ionic e Cordova: eles devem ser instalados</p><p>pelo npm e são pacotes fundamentais para o funcionamento do Ionic.</p><p>Já os comandos a seguir realizam a instalação global dos módulos pelo npm:</p><p>� npm install -g ionic</p><p>� npm install -g cordova</p><p>Para verificar se o Ionic e o Cordova foram instalados corretamente, basta</p><p>utilizar os comandos ionic –v e cordova –v, respectivamente. Na</p><p>Figura 11, você pode conferir a execução desses comandos.</p><p>Figura 11. Instalando as dependências do framework Ionic.</p><p>Para iniciar o desenvolvimento do primeiro aplicativo, há alguns templates</p><p>iniciais disponibilizados pelo site oficial do framework. Veja alguns exemplos</p><p>na Figura 12.</p><p>13Node.js</p><p>spfau</p><p>Realce</p><p>spfau</p><p>Realce</p><p>Figura 12. Templates iniciais para o desenvolvimento do primeiro aplicativo.</p><p>Fonte: Adaptada de Free Mobile... (2019, documento on-line):</p><p>Por meio do comando ionic start, cria-se um projeto com o tem-</p><p>plate inicial e inicia-se o desenvolvimento. Os seguintes templates podem</p><p>ser utilizados:</p><p>� tabs.</p><p>� blank.</p><p>� sidemenu.</p><p>Na Figura 13, você pode visualizar como baixar um projeto base com o tem-</p><p>plate sidemenu, executando o comando ionic start myApp sidemenu,</p><p>em que myApp é o nome da pasta do projeto que será criada.</p><p>Figura 13. Iniciando um projeto Ionic com o template sidemenu.</p><p>Neste momento, serão baixados os pacotes essenciais para o projeto exem-</p><p>plo, sendo necessário aguardar alguns instantes. Após a conclusão do último</p><p>comando, a pasta myApp é checada a fim de verificar se ela contém os arquivos</p><p>desse projeto. No Windows, você pode realizar a verificação por meio do</p><p>comando dir, conforme apresentado na Figura 14.</p><p>Node.js14</p><p>Figura 14. Listando os arquivos e diretórios do projeto criado.</p><p>Para executar o aplicativo, deve-se iniciar um serviço e, para isso, utiliza-</p><p>-se o comando ionic serve, como ilustrado na Figura 15. Certifique-se</p><p>que esse comando seja executado dentro da pasta em que o projeto foi criado,</p><p>nesse caso, myApp. Automaticamente, o navegador será aberto no endereço</p><p>localhost e porta 8100, conforme você pode conferir na Figura 16.</p><p>Figura 15. Inicializando o serviço que rodará o aplicativo.</p><p>15Node.js</p><p>Figura 16. Aplicativo sendo exibido pelo navegador Chrome.</p><p>Para visualizar os arquivos do aplicativo, é possível utilizar o editor de</p><p>códigos VSCode. Ao entrar nesse editor, basta abrir a pasta myApp, conforme</p><p>você pode ver na Figura 17.</p><p>Node.js16</p><p>Figura 17. Visualizando os arquivos do projeto.</p><p>Prática com Node.js</p><p>Como já foi observado, ao utilizar o Node.js e a linguagem JavaScript, é</p><p>possível que o desenvolvedor crie aplicações que rodem ao lado do servidor,</p><p>como aplicações back-end e Desktop, API, utilitários, etc..</p><p>Agora, você verá um exemplo prático da utilização da plataforma Node.js,</p><p>partindo de um código que ilustra como ela pode ser usada para hospedar</p><p>uma página Web HTML estática. Ele foi desenvolvido com o editor de código</p><p>VSCode, conforme você pode conferir na Figura 18.</p><p>17Node.js</p><p>Figura 18. Criando um servidor com o Node.js.</p><p>O código completo, adaptado de https://nodejs.org/en/about, pode ser visto</p><p>a seguir:</p><p>const http = require('http');</p><p>const hostname = '127.0.0.1';</p><p>const port = 2000;</p><p>const server = http.createServer((req, res) => {</p><p>res.statusCode = 200;</p><p>res.setHeader('Content-Type', 'text/plain');</p><p>res.end('Ola aluno.\nBem vindo ao capitulo de Node.js!');</p><p>});</p><p>server.listen(port, hostname, () => {</p><p>console.log(̀ Servidor rodando em: http://${hostname}:${port}/̀ );</p><p>});</p><p>Explicação do código de exemplo</p><p>O trecho de código responsável por incluir o módulo Hypertext Transfer Pro-</p><p>tocol (HTTP) do Node.js será demonstrado a seguir, sendo que essa plataforma</p><p>possui várias bibliotecas para trabalhar com os protocolos de rede que já vêm</p><p>por padrão em sua instalação.</p><p>const http = require('http');</p><p>Node.js18</p><p>O trecho a seguir ilustra os parâmetros configurados para o servidor escutar</p><p>as requisições de rede, sendo especificados o nome do host e o número da</p><p>porta do servidor.</p><p>const hostname = '127.0.0.1';</p><p>const port = 2000;</p><p>Veja o método createServer() a seguir, o qual faz parte da biblioteca</p><p>HTTP, responsável por criar outro servidor HTTP. O trecho res.sta-</p><p>tusCode = 200; indica uma resposta bem-sucedida; o trecho res.</p><p>setHeader('Content-Type', 'text/plain'); determina o cabe-</p><p>çalho Content-Type; já o trecho res.end('Ola aluno.\nBem vindo ao</p><p>capitulo de Node.js!'); define a resposta da requisição ao servidor.</p><p>const server = http.createServer((req, res) => {</p><p>res.statusCode = 200;</p><p>res.setHeader('Content-Type', 'text/plain');</p><p>res.end('Ola aluno.\nBem vindo ao capitulo de Node.js!');</p><p>});</p><p>Depois, quando o servidor estiver pronto, uma função de callback será</p><p>chamada</p><p>informando que ele está em execução.</p><p>server.listen(port, hostname, () => {</p><p>console.log(`Servidor rodando em: http://${hostname}:${port}/`);</p><p>});</p><p>Na Figura 19, você pode observar a execução do código e a mensagem</p><p>exibida pela callback informando que o servidor está rodando. Já na Fi-</p><p>gura 20, há a mensagem de retorno do servidor após a requisição ao endereço</p><p>http://127.0.0.1:2000/ pelo navegador.</p><p>Figura 19. Servidor em execução.</p><p>19Node.js</p><p>Figura 20. Retorno do servidor após a requisição.</p><p>Neste pequeno exemplo, você aprendeu como utilizar o Node.js para criação</p><p>de uma aplicação servidora, com a linguagem JavaScript.</p><p>FREE MOBILE App Development: Getting Started with Ionic Apps. Ionic, Madison, 2019.</p><p>Disponível em: https://ionicframework.com/getting-started#cli. Acesso em: 30 jun. 2019.</p><p>KIRAN, R. Node.js Tutorial Series - Getting Started. DotNetCurry, Pune, 17 June 2015.</p><p>Disponível em: https://www.dotnetcurry.com/nodejs/1143/nodejs-tutorial-series-</p><p>-beginner-experienced-developer. Acesso em: 30 jun. 2019.</p><p>PEREIRA, C. R. Aplicações web real-time com Node.js. São Paulo: Casa do Código, 2013.</p><p>185 p.</p><p>VISUAL Studio Code User Interface. Microsoft, Seattle, 2019. Disponível em: https://code.</p><p>visualstudio.com/docs/getstarted/userinterface. Acesso em: 30 jun. 2019.</p><p>Leituras recomendadas</p><p>CAMARGO, L. Node.js — O que é, como funciona e quais as vantagens. Opus Software,</p><p>São Paulo; Toronto; Sorocaba, 5 set. 2018. Disponível em: https://www.opus-software.</p><p>com.br/node-js/. Acesso em: 30 jun. 2019.</p><p>DESIGN Overview — libuv documentation. The libuv team, [S. l.], 2019. Disponível em:</p><p>http://docs.libuv.org/en/v1.x/design.html. Acesso em: 30 jun. 2019.</p><p>INTRODUCTION to Node.js. Github, [S. l.], 2019. Disponível em: https://nodejs.dev/.</p><p>Acesso em: 30 jun. 2019.</p><p>Node.js20</p><p>IONIC - Cross Platform Mobile App Development. Ionic, Madison, 2019. Disponível em:</p><p>https://ionicframework.com. Acesso em: 30 jun. 2019.</p><p>MORAES, W. B. Construindo aplicações com NodeJS. 2. ed. São Paulo: Novatec, 2018. 216 p.</p><p>NODE.js: a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js Foun-</p><p>dation, [S. l.], 2019. Disponível em: https://nodejs.org. Acesso em: 30 jun. 2019.</p><p>O QUE É o NodeJS e quais suas vantagens e desvantagens? ValueHost, São Paulo, 11</p><p>dez. 2018. Disponível em: https://www.valuehost.com.br/blog/o-que-e-o-nodejs/.</p><p>Acesso em: 30 jun. 2019.</p><p>RUBENS, J. Primeiros passos com Node.js. São Paulo: Casa do Código, 2017. 195 p.</p><p>V8 JavaScript Engine: Google’s open source high-performance JavaScript and We-</p><p>bAssembly engine, written in C++. GitHub, [S. l.], 2019. Disponível em: https://v8.dev/.</p><p>Acesso em: 30 jun. 2019.</p><p>VISUAL Studio Code. Microsoft, Seattle, 2019. Disponível em: https://code.visualstudio.</p><p>com/. Acesso em: 30 jun. 2019.</p><p>21Node.js</p><p>Dica do professor</p><p>Com o Node.js você pode criar diversas aplicações. Aplicações servidoras, APIs, programas</p><p>utilitários, desktop, aplicações de tempo real, chatbots e softwares para inteligência artificial.</p><p>Nesta Dica do Professor, você vai ver um exemplo de uma aplicação servidora utilizando o Node.js</p><p>no editor de códigos Visual Studio Code.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/2ea6fca3a174386159a3d40b46764c58</p><p>Exercícios</p><p>1) O Node.js é uma tecnologia inovadora que oferece características para um melhor</p><p>aproveitamento dos recursos computacionais.</p><p>Sobre o seu conceito, assinale a alternativa correta.</p><p>A) É possível definir o Node.js como uma linguagem de programação, assim como Java, PHP e</p><p>outras linguagens orientadas a objetos.</p><p>B) O Node.js é um ambiente de execução JavaScript, baseado no interpretador V8 e na</p><p>biblioteca libuv.</p><p>C) O Node.js é um modelo não orientado a eventos, o qual tem forma síncrona para tratar as</p><p>requisições.</p><p>D) É possível definir a plataforma Node.js como uma tecnologia bloqueante de entrada e saída</p><p>de dados.</p><p>E) O Node.js é uma arquitetura tradicional, a qual emprega um modelo bloqueante,</p><p>representando um comportamento síncrono.</p><p>2) Funciona como um loop infinito, processando as requisições e enviando as tarefas mais</p><p>dispendiosas para o pool de threads. Quando existe a finalização de alguma tarefa</p><p>bloqueante, o retorno é enviado para que ele continue a sua execução.</p><p>Essa afirmação se refere ao que?</p><p>A) Event Loop.</p><p>B) Worker Pool.</p><p>C) Modelo Blocking-Thread.</p><p>D) Modelo Non-Blocking-Thread.</p><p>E) Processo Multithread.</p><p>O Node.js, assim como outras tecnologias, tem suas vantagens e desvantagens. Sendo assim,</p><p>é importante analisar o cenário em que tal tecnologia será utilizada, de modo a escolher a</p><p>3)</p><p>mais apropriada.</p><p>Assinale a alternativa que representa uma vantagem em utilizar o Node.js.</p><p>A) Tem uma comunidade não participativa para criação e compartilhamento de novos módulos</p><p>ou plugins.</p><p>B) Sua forma assíncrona demanda um alto consumo de memória e processamento.</p><p>C) Tem uma curva de aprendizagem baixa para desenvolvedores que já programam em</p><p>JavaScript.</p><p>D) O seu modelo assíncrono pode se tornar um fator complicador quando utilizado um número</p><p>pequeno de callbacks nas requisições.</p><p>E) Grandes empresas como PayPay, NetFlix e Walmart não estão utilizando Node.js devido à</p><p>falta de suporte.</p><p>4) De acordo com o trecho de código a seguir, qual será a mensagem exibida no console ao</p><p>utilizar o comando console.log().</p><p>var upperCase = require('upper-case');</p><p>var lowerCase = require('lower-case');</p><p>var frase = "Ola aluno, bem vindo ao conteudo de Node.js!";</p><p>console.log(upperCase(frase.substring(0,9)))</p><p>A) OLA ALUNO.</p><p>B) OLA ALUNO, bem vindo ao conteudo de Node.js!</p><p>C) ola aluno, bem vindo ao conteudo de node.js!</p><p>D) ola aluno.</p><p>E) bem vindo ao conteudo de Node.js!</p><p>Uma das responsabilidades do gerenciador de pacotes NPM é trazer um determinado</p><p>módulo do repositório público, de modo que ele possa ser utilizado em determinado projeto.</p><p>Qual das alternativas a seguir se refere à finalidade do seguinte comando:</p><p>5)</p><p>npm install -g ionic</p><p>A) Instalação do módulo Ionic localmente.</p><p>B) Instalação do módulo Ionic globalmente.</p><p>C) Atualização do módulo Ionic globalmente.</p><p>D) Atualização do módulo Ionic localmente.</p><p>E) Remoção do módulo Ionic.</p><p>Na prática</p><p>A tecnologia Node.js foi criada com a ideia de oferecer uma melhor utilização dos recursos</p><p>computacionais, fazendo com que as tarefas em execução, principalmente as mais dispendiosas,</p><p>fiquem menos tempo ociosas.</p><p>Existem diversas tecnologias que empregam o modelo bloqueante, fazendo com que alguns</p><p>recursos não funcionem de maneira tão eficaz. E outras, como o Node.js, que permitem que tarefas</p><p>sejam executadas de forma assíncrona, empregando uma arquitetura não bloqueante.</p><p>Neste Na Prática, você vai conhecer o caso da Netflix, uma das maiores provedoras de streaming de</p><p>mídia on-line do mundo, que utilizou a tecnologia Node.js para alcançar desempenho e economia</p><p>em seus produtos.</p><p>Aponte a câmera para o</p><p>código e acesse o link do</p><p>conteúdo ou clique no</p><p>código para acessar.</p><p>https://statics-marketplace.plataforma.grupoa.education/sagah/b85ed095-aea8-46c1-a2cc-43cd19ac657a/3a000404-e529-4ea0-9125-fbf7fc5d842d.jpg</p><p>Saiba +</p><p>Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:</p><p>Comparação de desempenho e avaliação das tecnologias de</p><p>desenvolvimento Webem PHP, Python e Node.js</p><p>Leia o seguinte artigo, o qual tem grande escala, alta simultaneidade e grande quantidade de dados.</p><p>São tendências importantes para a nova geração de websites. O Node.js se torna popular e bem-</p><p>sucedido para criar dados intensivos.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>Benchmark entre diferentes linguagens Server-side</p><p>implementando o TUS: protocolo aberto para upload de</p><p>arquivos recuperáveis</p><p>O seguinte artigo apresenta um comparativo entre as tecnologias Node.js, Java e Go, apresentando</p><p>as diferenças, os pontos fortes e fracos</p><p>e a usabilidade.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>Benchmarks do Framework Web</p><p>A empresa TechEmpower faz pesquisa com diversas tecnologias web medindo o desempenho delas</p><p>em benchmarks de diversos tipos. Confira.</p><p>https://www.researchgate.net/publication/286594024_Performance_Comparison_and_Evaluation_of_Web_Development_Technologies_in_PHP_Python_and_Nodejs?v=661640572</p><p>https://seer.cesjf.br/index.php/cesi/article/view/1168/918</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>Aplicação de armazenamento em nuvem utilizando a</p><p>plataforma Node.js</p><p>O seguinte artigo apresenta uma aplicação para facilitar o acesso e a manipulação de arquivos de</p><p>usuários utilizando o Node.js.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>https://www.techempower.com/benchmarks/#section=data-r17&hw=ph&test=json?v=94275064</p><p>http://revistas.unifenas.br/index.php/RE3C/article/view/160/105</p>

Mais conteúdos dessa disciplina