NodeJS: Minhas primeiras impressões

Como conheci e como vejo o NodeJS hoje

Rodrigo Nascimento
NodeJS Brasil

--

O início

Admito que não me lembro exatamente como conheci o NodeJS, já fazem alguns anos, mas me lembro muito bem de não ter entendido para que servia.

Nesta época eu trabalhava com JavaScript, isto já era meu sustento, porém, como é de se esperar, eu trabalhava com interfaces, mais especificamente com ExtJS, um framework para criação de interfaces ricas, RIA, com foco principal em interfaces para sistemas.

Eu também trabalhava com PHP, não comercialmente, mas para meus próprios projetos.

Minha primeira reação ao ver o site nodejs.org foi, literalmente "que porra é essa?" quando olhei o código que demonstrava um "hello world":

NodeJS Hello World

Isso me assustou, eu não entendia como JavaScript poderia funcionar no servidor, não havia acesso ao disco, entre outras coisas, isso me pareceu bizarro já que em PHP era simples assim:

PHP Hello World

Então ignorei o NodeJS e segui minha vida entre ExtJS e PHP.

A revelação

Algum tempo depois, e novamente tenho que admitir não lembrar de quando nem porque, voltei a me encontrar com o NodeJS, mas desta vez resolvi estudar um pouco e dar uma chance a ele.

Finalmente eu entendi que eu não entendia como o PHP funcionava! Não eram apenas 3 linhas de código, era necessário instalar o Apache, configurar o Apache, configurar o PHP no Apache, configurar o próprio PHP, ufa.

O PHP era extremamente dependente do Apache, o qual recebia as requisições e então executava o arquivo de PHP chamado pelo browser.

Já o NodeJS funcionava sozinho, ele era responsável por decidir em qual porta escutar, por receber a requisição completa, URL, Headers, Body, e por responder ao Browser. Ele fazia o trabalho do PHP e do Apache, isso o tornava mais complicado, porém muito mais poderoso.

A complexidade

No PHP, se você quer fazer um site com 2 páginas basta criar 2 arquivos no diretório do Apache e chamá-los pelo nome no Browser.

No NodeJS puro, basicamente precisaríamos de um servidor HTTP e um SWITCH para decidir o que responder devido a URL chamada:

NodeJS Example 1

Claro, isso não é fácil, parece confuso e assim certamente o código ficará uma bagunça. Existem várias formas de melhorar isso, podemos separar o código para cada URL em arquivos separados e usar o método global require para carregar estes arquivos e executar o código a cada chamada, ou podemos carregar todos os arquivos e executar funções com o nome de cada url a cada chamada. Mesmo assim, ainda parece confuso.

Tornando as coisas mais fáceis

NPM, o gerenciador de pacotes para NodeJS.

Uma das melhores partes do NodeJS é seu gerenciador de pacotes, ele torna muito fácil criar e usar pacotes.

Através dos pacotes eu conheci o ExpressJS, usando ele eu poderia tornar meu código muito mais organizado:

NodeJS Example 2

Separar o código em rotas torna o código mais fácil de ler. O ExpressJS me proporcionou uma facilidade enorme em organizar o código, eu poderia definir o código das minhas rotas em arquivos, importar estes arquivos no arquivo principal e definir minhas rotas/urls. Não vou me aprofundar muito aqui, é material para outro texto ☺.

CoffeeScript

Logo conheci o CoffeeScript, um pré-processador de JavaScript que uso até hoje. Para mim ele torna o código mais limpo, fácil de ler e de dar manutenção. O próprio JavaScript está se tornando cada vez mais parecido com o CoffeeScript ☺.

Com ele eu poderia tornar o código acima no código abaixo:

Não é meu objetivo aqui evangelizar o CoffeeScript ou ensiná-lo, mas sim mostrar que foi mais uma revelação que tornou minha vida, como programador, menos complicada.

Neste momento eu já não queria mais ver PHP pela minha frente nunca mais. Me sentia com muito mais poder e controle usando NodeJS e estava começando a ver que com o tempo e disseminação ele estava ficando cada vez mais interessante.

Hoje em dia

Conheci grandes projetos em NodeJS, pacotes excepcionais como o PM2 e vi grandes empresas adotando o NodeJS cada vez mais, como Walmart, PayPal, LinkedIn, etc, mais empresas podem ser vistas em nodejs.org/industry.

Decidi focar nesta implementação de JavaScript para servidores e desde então tenho muito mais prazer em fazer projetos web ou até mesmo ferramentas de linha de comando. Entendi melhor como a web funciona e as diferenças entre NodeJS e PHP.

NodeJS é o futuro? Não sei, mas acho que vale muito a pena dar uma chance a ele, olhar, estudar e experimentar. Uma coisa é certa, ele está crescendo rápido e as oportunidades estão pipocando por ai ☺.

A TreeHouse lançou um curso introdutório ao NodeJS, vale dar uma olhada aqui.

PS: Meteor

Há alguns meses conheci uma nova paixão, o Meteor, um grande Framework feito em NodeJS e MongoDB com o grande objetivo de tornar o desenvolvimento de aplicações RealTime mais fáceis tornando a comunicação via WebSockets completamente transparente ao desenvolvedor.

De início novamente não entendi, como aconteceu quando conheci o NodeJS, tudo era muito mágico e me parecia pouco provável que funcionaria bem ou até mesmo que funcionaria!

Dei uma chance a ele e hoje digo com toda certeza, é impressionante. Começo a pensar como seriam meus projetos migrados para Meteor ☺.

Mais uma vez é matéria para outro texto, então por hora apenas aconselho que você de uma olhada e uma chance a ele!

--

--