5 dicas para criar melhores aplicações usando Node.js
Neste artigo, recolhemos algumas dicas que achamos que os desenvolvedores Node.js podem seguir. Sinta-se livre para brincar e aprender com as dicas abaixo.
#1: Comece a usar async
- await
Async — await
chegou no Node 8 como um boom. E isso mudou a maneira como lidamos com eventos assíncronos e simplificou as incompreensíveis bases de código que existiam até então. Se você ainda não está usando async — await
, leia as postagens JavaScript Assíncrono — Introdução e Async Await, JS assincronamente síncrono no nosso blog.
Atualizando seu conhecimento sobre a programação assíncrona, nossa postagem sobre Promises no JavaScript também pode ajudar.
const axios = require("axios"); async function requestUserData() { try { const userPromise = axios("https://randomuser.me/api/"); const namePromise = axios("https://uinames.com/api/"); /* Aguardando as duas promises retornarem * para armazenar o resultado em nossas próprias variáveis */ const [randomUser, randomName] = await Promise.all([ userPromise, namePromise ]); console.log(randomUser.data, randomName.data); } catch (e) { console.error(e); // error } } requestUserData();
#2: Familiarize-se com import
e import()
ES modules são amplamente usados com transpilers ou com a lib @std/esm. Eles são suportados nativamente desde o Node.js 8.5 com a flag --experimental-modules
, mas ainda há um longo caminho até se tornarem estáveis para rodar em produção. Sugerimos que você aprenda as bases atuais e continue acompanhando o progresso em 2018. Você pode encontrar um tutorial de ES modules simples com o Node.js no blog do Dr. Axel Rauschmayer. // --util.js-- export default function sum(...numbers) { return numbers.reduce((total, value) => total + value); } // --test.js-- import sum from "./util"; console.log("== Using sum method from file =="); console.log("SUM =", sum(1, 2, 3)); // 6 // try import() button.addEventListener("click", event => { import("./modal.js") .then(modal => { modal.open(); }) .catch(error => { /* Error handling */ }); });
#3 Proteja suas aplicações Node.js São grandes e numerosas as brechas de segurança e novas vulnerabilidades encontradas todos os anos e 2017 não foi exceção. Segurança é um tópico em rápida mudança que não pode ser ignorado. Para começar a entender como manter suas aplicações Node.js seguras, leia 13 boas práticas para tornar segura uma aplicação com Node.js. #4: Adote o uso de microservices Se você tiver problemas de implantação ou projetos de grande escala, talvez seja hora de adotar a arquitetura dos microservices. Aprenda sobre as duas ferramentas abaixo para se manter atualizado na cena dos microservices de 2018. Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. Docker is a software technology providing containers, which wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools and system libraries. Antes de se aprofundar em containers
e orchestration
, você pode ir melhorando seu código existente. Siga a metodologia da aplicação de 12 fatores e você terá um tempo muito maior para fazer containers e deploy dos seus serviços. Dicas rápidas sobre miscroservices com Node.js Build your first Node.js microservice How To Do Microservices with Node.js senecajs is a microservices toolkit for Node.js. #5: Torne-se familiar com HTTP/2 HTTP/2 está disponível desde o Node.js 8.8 sem o uso de flag. Ele tem push e multiplexação do servidor, que abre caminho para o carregamento de módulos nativos eficientes aos navegadores. Alguns frameworks, como Koa e Hapi, o suportam parcialmente, enquanto alguns outros, como Express e Meteor, estão trabalhando no suporte. O HTTP/2 já não é um experimento desde o Node.js 9.0.0. Você pode aprender mais sobre o tópico na maravilhosa Introdução ao HTTP/2 no blog Web Fundamentals do Google. // --http2-server.js-- const http2 = require("http2"); const fs = require("fs"); const path = require("path"); const utils = require("./utils"); const { HTTP2_HEADER_PATH } = http2.constants; const server = http2.createSecureServer({ cert: fs.readFileSync(path.join(__dirname, "/server.crt")), key: fs.readFileSync(path.join(__dirname, "/key.pem")) }); function push(stream, path) { const file = utils.getFile(path); if (!file) { return; } stream.pushStream({ [HTTP2_HEADER_PATH]: path }, pushStream => { pushStream.respondWithFD(file.content, file.headers); }); } server.on("stream", (stream, headers) => { push(stream, "/assets/main.js"); push(stream, "/assets/preset.css"); push(stream, "/assets/base.css"); const file = utils.getFile("/index.html"); // Serve file stream.respondWithFD(file.content, file.headers); }); server.listen(3000);
// --utils.js-- "use strict"; const fs = require("fs"); const mime = require("mime"); module.exports = { getFile: function(path) { const filePath = `${__dirname}/public${path}`; try { const content = fs.openSync(filePath, "r"); const contentType = mime.lookup(filePath); return { content, headers: { "content-type": contentType } }; } catch (e) { console.log('error => ', e) return null; } } };
Se você quiser ver esse código completo, acesse o repositório http2-server-push-example no GitHub. Qual é a sua dica para desenvolvedores Node.js? O que mais você recomendaria aos seus colegas desenvolvedores do Node.js para obterem maior sucesso com suas aplicações em 2018? Deixe sua opinião na seção de comentários! 7 tips for a Node.js padawan 6 Tips and Techniques to Speed Up and Improve Your Node.js Performance 10 Node.js Best Practices: Enlightenment from the Node Gurus 8 Tips to Build Better Node.js Apps in 2018