Aqui estão sete projetos mais recentes de JavaScript que você talvez ainda não conheça. Essas ferramentas e frameworks abrangem uma ampla gama de funcionalidades e nos dão uma visão sobre as tendências emergentes no desenvolvimento em JavaScript. Exemplos incluem criação de aplicativos nativos, desenvolvimento full-stack fortemente tipado, uma alternativa de tempo de execução para Node.js, gráficos no navegador e muito mais. Todos esses projetos estão sendo atualmente adotados pelos desenvolvedores, então eles podem não ficar fora do radar por muito tempo. Lembre-se, você ouviu falar deles primeiro aqui!
Tauri: Um framework de JavaScript para aplicativos desktop
Tauri é um framework de JavaScript para construir aplicativos desktop. Talvez "meta-framework" seja um termo melhor. Ele permite que você use qualquer framework web front-end, como React ou Svelte, e o transforme em um cliente "rico" multiplataforma.
Denjell, um dos fundadores do Tauri, compartilhou um pouco sobre o incentivo para desenvolver um novo framework desktop.
"Tauri existe para simplificar o processo de construção de aplicativos. Então, se alguém estiver interessado em construir aplicativos, pode se deparar com o Tauri. Em primeiro lugar, o Tauri constrói aplicativos para Mac, Windows e Linux. Neste verão, lançaremos uma versão estável 2.0 que introduzirá iOS e Android na mistura, também."
O processo de desenvolvimento para o Tauri é bastante interessante. O framework permite que você construa com o pipeline existente que está usando, por exemplo, SvelteKit construído com Vite. O Tauri pode lidar com qualquer stack que construa para JavaScript e HTML. Ele é executado em conjunto com o servidor de desenvolvimento, gerando o cliente desktop nativo para você conforme você avança.
Denjell descreve o processo de desenvolvimento da seguinte maneira:
- Inicie um servidor de desenvolvimento usando Svelte, Solid.js, React, Vue, etc.
- Configure o tauri.conf para ouvir essa porta.
- Inicie uma janela de desenvolvimento do Tauri.
Embora o código do Tauri seja orientado a sistemas e construído em Rust, os desenvolvedores interagem com APIs que são quase todas escritas em JavaScript. O Tauri é uma abordagem convincente para construir aplicativos desktop nativos para o universo de desenvolvedores em JavaScript. Ao contrário de frameworks mais antigos que tentaram façanhas semelhantes, o Tauri busca cumprir a promessa de desenvolvimento multiplataforma usando JavaScript.
tRPC: Desenvolvimento de API com TypeScript
tRPC é uma abordagem sedutora para construir APIs com suporte ao TypeScript. Embora esteja na mesma família de tecnologias que o GraphQL, o tRPC é diferente porque automatiza a interação entre o código front-end e back-end. Ele também tem superpoderes derivados da capacidade do TypeScript de impor o tipo.
Segundo Alex Johansson, criou o tRPC porquê:
"Eu sou um fã de longa data do GraphQL (e ainda sou), mas quando estou construindo meus próprios produtos, muitas vezes sinto que ele me desacelera - eu estava usando TypeScript em ambos os lados. Por que não posso simplesmente usar a própria linguagem em vez de trazer um esquema externo?"
O superpoder do tRPC é usar o que já existe para suportar a imposição e associação de tipos em todo o stack. Ele fornece uma espécie de inferência de tipo bidirecional e faz isso sem o intermediário de metadados ou uma etapa de compilação extra para conectar as definições da API ao código consumidor. Quando eu entendi o que o tRPC se tratava, tive uma sensação de simplicidade sugestiva de genialidade.
Aqui está um aplicativo React full-stack online construído pela equipe do tRPC usando o StackBlitz. O tRPC fornece os pontos finais e o conjunto inteiro é bastante simples, com apenas alguns arquivos necessários. Simplicidade é boa.
No exemplo do StackBlitz, os pontos finais expostos conduzem as informações disponíveis para o IDE. Por exemplo, no front-end, a variável result é populada usando um hook personalizado useQuery do tRPC, assim: const result = trpc.greeting.useQuery({ name: 'client' });. No back-end, isso é tratado por um roteador tRPC.
O front-end pode então usar a variável assim: {result.data.text}. O IDE (e a etapa de compilação do TypeScript) está totalmente ciente e pode fornecer a definição de tipo de result.data. Da mesma forma, o ponto final do roteador tRPC está ciente do front-end, por exemplo, do parâmetro fornecido na consulta.
Em geral, o tRPC é uma maneira única e atraente de construir aplicativos TypeScript full-stack. Está ganhando interesse crescente da comunidade de desenvolvedores, com mais de 22.000 estrelas no GitHub no momento dessa matéria.
Bun.js: Um tempo de execução mais rápido para JavaScript
Bun.js é uma estrela ascendente em JavaScript porque ataca vários fronts em um único pacote. Jarred Sumner, sobre sua motivação e esperanças ao criar o Bun.
"Bun é um agrupador, transpilador, gerenciador de pacotes NPM e tempo de execução JavaScript/TypeScript tudo em um só. Queremos tornar o JavaScript mais rápido para executar e mais simples de escrever. Uma parte importante disso é a compatibilidade com o ecossistema. Bun foi projetado como uma substituição drop-in do Node.js. As pessoas não devem ter que reescrever seu código para usar o Bun. Muitas APIs do Node.js, como a API do módulo nativo do Node (NAPI), fs, path, process e outras, estão integradas ao Bun (embora ainda estejamos trabalhando nisso)."
Bun é tanto uma substituição drop-in para runtimes como Node.js e Deno quanto uma alternativa para ferramentas secundárias como webpack, Vite e Babel. Ele está rapidamente se tornando conhecido por sua velocidade surpreendente na execução de bun install como substituto para npm install ou yarn install. A vantagem de desempenho do Bun é resultado de empurrar grande parte do código para fora do JavaScript e para níveis mais baixos como Zig e C++.
O processamento rápido do Bun, juntamente com sua abordagem all-in-one, o torna uma alternativa atraente para stacks convencionais para JavaScript do lado do servidor. Os desenvolvedores também estão percebendo isso, concedendo ao framework 40.000 estrelas no GitHub até o momento.
Civet: Um framework moderno para TypeScript
E se você pegasse o TypeScript e combinasse com algumas ideias do CoffeeScript e adicionasse alguns recursos extras? Você teria algo como o Civet, um framework projetado para tornar a escrita de código TypeScript mais simples e poderosa.
O criador do Civet, Daniel Moore, observa que "há um rumor circulando de que o Civet é o novo CoffeeScript, mas talvez isso seja algo bom. O CoffeeScript trouxe classes, destructuring, async/await, arrow functions, rest parameters e mais para a especificação oficial do JavaScript".
Interessantemente, o Civet não se limita a aprimorar o TypeScript: ele também consome JSX. Como Erik Demaine (o desenvolvedor do projeto responsável pela maioria dos aprimoramentos do JSX) observou:
O Civet leva essas ideias ainda mais longe, adicionando mais recursos de linguagem altamente desejados (como um operador de pipe, muitas melhorias no JSX e em breve um switch de correspondência de padrão), e construindo em cima do TypeScript (transpilando para ele), para que seja extremamente compatível com as ferramentas existentes. No exemplo abaixo, você pode ver o Civet em ação (retirado da documentação do Civet).
// Civet syntax i .= 0 loop i++ break if i > 5 // TS output let i = 0; while (true) { i++; if (i > 5) { break; } }
Não se esqueça de que o Civet também pode lidar com JSX! Eu sempre sinto que a sintaxe de loop no JSX é estranha, mas o Civet simplifica isso. (Também dê uma olhada na folha de referência do Civet para obter mais informações.)
Tabby: Um terminal para Node.js
Tabby é um terminal com janelas completo, multiplataforma, que substitui aplicativos nativos como cmd, powershell e Terminal. Ele também lida com SSH como o Putty e SFTP como o WinSCP.
Eugeny, criador do Tabby, sobre a decisão de criar um novo aplicativo de terminal:
"Originalmente criei o [Tabby] por frustração ao usar o Hyper (outro aplicativo de terminal baseado em Electron) e desapontamento geral com outros aplicativos presos nos anos 90 (pequenos problemas irritantes como Alt-setas não funcionando para percorrer palavras, que rapidamente se acumulam). Outra inspiração foi o VS Code como um aplicativo que joga convenções pela janela em nome de uma experiência geral melhor. Minhas esperanças seriam crescer a comunidade e eventualmente reescrever [Tabby] para usar o Tauri em vez do Electron para reduzir o tamanho e melhorar o desempenho."
Tabby lhe oferece todas as vantagens, como cores, manipulação de teclas especiais e copiar/colar em uma plataforma que permanece consistente em todos os ambientes.
Pixi.js: Gráficos de alto desempenho em JavaScript
Acesse Pixijs.com e observe o efeito ao mover o cursor sobre a imagem de fundo. Existe um efeito líquido que parece ser muito caro, mas não parece ter um grande impacto no desempenho. Como eles fizeram isso? Usando a biblioteca Pixi.js, é claro!
Pixi fornece uma API avançada orientada ao desempenho para construir interfaces com WebGL e HTML5 Canvas. Pixi existe há algum tempo e é uma biblioteca madura e estável. Você pode encontrar o pacote NPM aqui.
Embora Pixi.js pareça feito sob medida para jogos no navegador, é útil em qualquer lugar em que você precise de gráficos de alto desempenho, incluindo gráficos e efeitos sofisticados em geral. Apenas tenha em mente que foi construído para 2D, não 3D.
Quando combinado com um framework como o Tauri, o Pixi pode ser usado para construir plataformas de desktop e similares. Você pode brincar com o Pixi no playground online do Pixi.
PM2: Monitoramento de aplicativos para Node.js
Estritamente falando, o PM2 não é uma biblioteca JavaScript, mas sim uma ferramenta orientada a sistemas construída em JavaScript. É uma ferramenta de monitoramento de aplicativos muito completa que você pode usar para fazer monitoramento e gerenciamento de processos sofisticados a partir da linha de comando.
O Unix tem ferramentas de monitoramento e gerenciamento como bg/fg, nohup e screen, mas o PM2 faz tudo isso e mais em um pacote amigável para o usuário.
O PM2 possui várias estratégias de reinicialização para lidar com quase todas as situações. Exemplos incluem iniciar com base em um tempo CRON, reiniciar automaticamente quando parado e iniciar quando um critério (como o consumo de memória) é atingido. Ele inclui um sinalizador --watch para reiniciar em alterações de arquivo.
O PM2 vale a pena ser experimentado se você precisar de uma ferramenta para uma variedade de necessidades de gerenciamento de processos Node.js.