Node em Ação #3

Tempo de leitura: 3 min

Escrito por blackzig
em 18/05/2020

Eu Devo Utilizar const ou let?

Quando decido se utilizo const ou let, você precisa sempre utilizar const. Porque a maioria do sue código será uso de instâncias da própria classe, objetos ou valores que não mudam, você deve utilizar const nessas situações.

Mesmo as instâncias de objetos que tenham propriedades que possam mudar pode ser declarada com const, porque const significa que a referência é apenas leitura, mas seu valor não é imutável.

Node também tem promises e generators nativos. Promises são suportados por várias bibliotecas, permitindo você escrever código assíncronos com um estilo fluente de interface.

Você provavelmente está familiarizado com interfaces fluentes: se você já utilizou uma API como o jQuery ou até mesmo arrays do JavaScript, você já sabe do que estou falando.

O exemplo a seguir mostra como ligar chamadas para manipular um array no JavaScript:

[1, 2, 3]

.map(n => n * 2)

.filter(n => n > 3);

Generators são utilizados para dar a programação síncrona o estilo da assíncrona I/O. Se você quer ver um exemplo de generators no Node na prática, veja a aplicação Koa (https://koajs.com/). Se você utilizar promises ou outro generators com Koa, você pode produzir valores ao invés de aninhar callbacks.

Um recurso útil do ES2015 no Node é o template strings. No ES5, string literais não suportam interpolação ou múltiplas linhas. Agora utilizando o símbolo de crase (), você pode inserir valores e pequenas strings em várias linhas. Isso é útil para aplicativos web:

this.body =

<div>

            <h1>Olá daqui do Node</h1>

            <p>Bem-vindo, ${user.name}!</p>

</div>

`;

Utilizando o ES5, fazendo o mesmo código anterior ficaria assim:

this.body = ‘\n’;

this.body += ‘<div>\n’;

this.body += ‘            <h1>Olá daqui do Node</h1>\n’;

this.body += ‘            <p>Bem-vindo, ‘ + user.name + ‘ </p>\n’;

this.body += ‘<div>\n’;

O estilo antigo utiliza mais código e tem mais chance de introduzir bugs. O grande recurso final, que é importante para programadores Node, é a arrow functions. Arrow functions deixa você melhorar a sintaxe.

Por exemplo, se você escrever um callback que tem um simples argumento e retorna um valor, você pode escrever com poucas linhas:

[1, 2, ,3].map(v => v * 2);

No Node precisamos de dois argumentos, porque o primeiro argumento é um callback é muitas vezes um objeto error. Nesse caso, você precisa utilizar parênteses entre os argumentos:

const fs = require(‘fs’);

fs.readFile(‘package.json’, (err, text) => console.log(‘Length:’, text.length));

Se você precisar utilizar mais de uma linha no corpo da função, você precisa utilizar colchetes. O valor da arrow functions não é apenas na melhoria da sintaxe, isso se ajusta com o escopo do JavaScript.

No ES5 e antes, definíamos funções dentro de outras funções utilizando o this como referência para ser tornar um objeto global. Vamos ver um exemplo que sofre um problema de bug:

Na linha que tem a declaração self.name não pode escrever this.name, porque a função this será um objeto global. Uma gambiarra utilizada para designar um a variável para o this é na entrada da função ou método pai.

Mas as arrow functions faz isso corretamente. No ES2015, o exemplo anterior pode ser reescrito de forma mais intuitiva:

Não só você pode utilizar a const para modelar melhor a database query, mas também não precisa fazer uma gambiarra com a variável self. ES2015 tem muitos outros recursos que faz o código Node mais legível, mas vamos ver o que é isso no Node e como ele se relaciona aos recursos de I/O.

Fonte: Node.js in Action, Second Edition

Você vai gostar também:

Para enviar seu comentário, preencha os campos abaixo:

Deixe um comentário


*


*


Seja o primeiro a comentar!

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

Importante: Este site faz uso de cookies que podem conter informações de rastreamento sobre os visitantes.
Criado por WP RGPD Pro

Aprenda a Criar e Programar Jogos Completos em 2D e 3D!

Seja um Desenvolvedor de Jogos Profissional