Node.js não é adequado para projetos genéricos da web (II)

Parte I • Parte II • Parte IIIParte IVParte V


Heathens versus Infidels

Em segundo lugar, o desenvolvimento da web / software e as linguagens de programação são quase sempre assuntos religiosos , e há muitas pessoas por aí que acreditam que o JavaScript não é uma linguagem de programação “real” . Bem, pode não ser o ideal, mas é real o suficiente para ser o mais usado na Internet hoje .

O “inferno de callback”

Como a maioria dos desenvolvedores de Node.js deve saber, devido à sua natureza baseada em eventos, é bastante difícil fazer coisas sequenciais em Node.js. Na minha opinião, essa talvez seja a maior fraqueza e ao mesmo tempo a maior força do Node.js. Força, porque, se você conhece suas coisas, estabelece a base para lidar com uma quantidade incrível de conexões simultâneas, talvez uma ordem de magnitude maior do que você obteria com PHP, .NET ou RoR. Fraqueza, porque a maioria das pessoas fica intimidada por algo parecido com isto:

Inferno de retorno de chamada do Node.js

Cada operação em segundo plano retorna seu resultado (ou erro) em um retorno de chamada. A parte boa é que seu servidor de aplicativos não está bloqueado esperando a conclusão da tarefa em segundo plano, mas livre para fazer outras coisas enquanto isso. Como atender a outra solicitação, para manter seu site ou aplicativo ágil e seus visitantes felizes. A parte ruim é que se você estiver tendo muitas operações em segundo plano (como acessar qualquer tipo de fonte de dados), seu código começa a parecer feio e incompreensível.

A boa notícia é que existem muitas maneiras elegantes de atenuar isso: Async.js é provavelmente a mais conhecida, mas se você estiver usando CoffeeScript, você definitivamente deve considerar ir um passo adiante para “simplificar de forma simples e poderosa seu fluxo de controle assíncrono” com IcedCoffeeScript .
Não pensei muito nisso quando abordei o Node.js pela primeira vez, mas agora, depois de usá-lo em alguns projetos, não consigo imaginar codificar sem awaite defer. Acho que é a solução ideal para o cenário de uso mais comum, quando você tem uma série de operações sequenciais ou uma combinação de tarefas sequenciais / paralelas:

IcedCoffeeScript - inferno de retorno de chamada extinto


> PRÓXIMA PÁGINA

Parte I • Parte II • Parte IIIParte IVParte V