Por que escolhi Node.js em vez de Ruby on Rails

Após um período de desenvolvimento web usando PHP e mais tarde Ruby on Rails, decidi colocar todos os meus ovos na cesta de Node.js. Aqui está o porquê.

Primeiro, um aviso: este título não foi feito para acender chamas. É apenas meu ponto de vista subjetivo baseado em minha experiência pessoal. Como muitas pessoas, tenho gostado de desenvolvimento web, front e backend, há alguns anos. Em termos de back-end, comecei com ASP em algum lugar no início dos anos 2000 e, mais tarde, mudei para PHP e, em seguida, para Ruby on Rails (3) em 2010. Agora decidi usar Node.js e finalmente me sinto em casa. Aqui estão minhas razões.

Um idioma para governar todos

Em primeiro lugar, e o mais importante para mim, adoro Javascript. É a primeira linguagem de desenvolvimento web que aprendi como um adolescente viciado em web, e tem me seguido ao longo da minha carreira desde então. Sendo uma linguagem principalmente do lado do cliente na época, JS e eu rapidamente nos tornamos bons amigos. Eu sei, e você não precisa soletrar para mim, tem todo tipo de falhas. Alguns deles são até ridículos, mas você certamente pode entender minha empolgação neste caso, quando o Javascript foi introduzido pelo Node como um servidor web de backend, tornando possível compilar um projeto completo com apenas uma linguagem de programação, compartilhar módulos, desfrutar de sua flexibilidade e melhorar rapidamente seu código aberto comunidade. Embora naquela época eu me sentisse confortável o suficiente com PHP e Ruby, essas novas opções eram inegavelmente atraentes. Mas não só eles.

Mantenha-o simples, mantenha-o rápido

Eu tenho que admitir. Tenho o fetiche por manter os aplicativos da web tão simples e leves quanto possível. Às vezes, ao preço de livrar-se de aprimoramentos extravagantes de front-end, às vezes ao preço de dispensar pacotes ou estruturas com recursos caros no servidor. Sempre recomendo aos meus clientes que mantenham as coisas simples e enxutas, para não dizer minimalistas. O site em que você está lendo este post é um bom exemplo.

Então, para alimentar ainda mais meu entusiasmo, o Node.js trouxe consigo algumas características que me fascinaram. Em primeiro lugar, baseado no V8 do Google, era extremamente rápido. Você podia sentir isso instantaneamente, localmente (como parte do TDD) e remotamente, outras pilhas simplesmente não competiam. Não vou criticar outros ambientes (tenho o maior respeito por cada um deles), nem iniciar uma discussão de configuração, mas apenas abordá-la como está: em sua categoria, o Node é realmente muito rápido. Além disso, e ainda mais importante, o I / O sem bloqueio foi perfeito para maximizar a utilização da CPU e eliminar gargalos conhecidos, abrindo caminho para um excelente desempenho no tratamento de uma vasta gama de conexões simultâneas e soquetes de tempo de execução. Eu sabia que era um home run.

Eu venho para você na virada da maré

Mas nem tudo é brilhante e elegante, claro, e isso tem que ser dito. Principalmente, por enquanto, a sensação é que embora a comunidade de Node esteja se espalhando e crescendo imensamente, ela ainda não é tão madura quanto outras comunidades, a de Rails, por exemplo. O próprio nó não está nem em 1.0, não que ele permita que alguém o desconsidere, mas precisa ser mencionado. E embora a comunidade tenha amplamente adotado o robusto Express para ser um suporte fundamental na maioria dos projetos e pacotes, ainda há um grande debate e confusão sobre qual seria o próximo framework definitivo que permite o desenvolvimento coeso de MVC ou Realtime. Existem alguns segundos classificados (uma grande lista pode ser encontrada aqui , meu favorito é o CompoundJS), mas todos os esforços estão sendo dispersos e, embora tenha algumas vantagens, como uma ampla variedade de pacotes NPM para escolher e a oportunidade de compor sua própria pilha ideal, falta alguma unidade.

Meu precioso

Gosto de desenvolver em Node e sei que estou me apegando a isso. Eu soube disso desde a primeira vez que coloquei os olhos nele ou escrevi minha primeira função de back-end de E / S assíncrona. Esta foi apenas uma breve visão geral de alguns dos meus insights mais imediatos quando se trata deste tópico. Eu poderia, e iria, elaborar no futuro sobre outros grandes ativos fornecidos pelo Node e sua comunidade diversa e ativa (como Grunt , Moment.js, MEAN.io e muitas outras ferramentas poderosas).

Continue lendo:

Node para desenvolvedores Rails: usando Compound.js