Eu já falei bastante sobre o quão incrível o Node.js é para aplicativos da web em tempo real - coisas que precisam de soquetes, Comet, comunicações pesadas em AJAX e assim por diante. Sei que seu modelo assíncrono e orientado a eventos também é bom para simultaneidade com baixa sobrecarga.
Também vi tutoriais do Node.js. para aplicativos mais simples, "tradicionais" e não em tempo real (por exemplo, o exemplo padrão do blog, que parece ser o "Olá Mundo" padrão para as pessoas que aprendem o desenvolvimento de aplicativos). E também sei que o node-static permite que você sirva ativos estáticos.
Minha pergunta é: existe algum bom motivo para evitar o Node.js para aplicativos da Web tradicionais, como classificados, fóruns, o exemplo de blog acima mencionado ou o tipo de aplicativos CRUD que você cria para aplicativos de negócios internos? Só porque se destaca em todas as coisas descoladas e em tempo real, isso é contra-indicado para usos mais difíceis?
A única coisa que consigo pensar, fora do bastão, é a falta de bibliotecas maduras (embora isso esteja mudando).
(A razão pela qual estou perguntando é que estou pensando em abandonar o PHP no Node.js, principalmente para superar a incompatibilidade de impedância de alternar entre idiomas, mas também para reutilizar o código de validação e outros enfeites. Meu superego me aconselha a escolher o melhor ferramenta para o trabalho ; no entanto, não tenho muito tempo para aprender quinze idiomas e todas as suas bibliotecas de países de usuários apenas para ter um arsenal abrangente.É também tranquilizador que o Node.js possa me proporcionar um caminho de otimização mais fácil do que o PHP / Apache no futuro, quando tiver que começar a pensar em tráfego pesado.)
[EDIT] Obrigado pelas respostas até agora, pessoal; Eu só quero ver se mais alguém vai pesar antes que eu escolha uma resposta. A resposta de @Raynos meio que confirma o que estou pensando, e os links dos comentaristas forneceram boa reflexão, mas quero ver se mais alguém tem alguma resposta específica para o nó, como 'NÃO USE NÓ PARA PROBLEMA X ' (Além das tarefas de alta CPU; eu já sei disso :-)
fonte
Respostas:
Sim, se você tiver N anos na plataforma da Web X, claramente poderá desenvolver um aplicativo na plataforma X mais rapidamente.
Se você deseja fazer Y e a plataforma X possui uma solução pré-fabricada Y que faz X, faça-o.
Todos os motivos genéricos de por que você deve usar uma plataforma sobre outra.
Sim, existem outras plataformas que permitem que você escreva um aplicativo genérico mais rapidamente, e vem à mente o Ruby on Rails.
No entanto, dito isso. Tenho experiência com o nó e não posso afirmar que escolheria outra plataforma sobre o nó, a menos que ele faça uma enorme quantidade de recursos prontos para uso.
Basicamente, é uma simples questão de
Não há razões sólidas para o node.js. ser uma plataforma inconveniente (exceto "odeio javascript")
fonte
Depois de trabalhar com o nó por algumas semanas, eu diria que sim, é muito legal. Mas não necessariamente algo que você gostaria de usar para substituir seus aplicativos da web comuns por ... nem, na verdade, ele pretende ser.
Lembre-se, o nó é seu próprio servidor. Isso apresenta complexidades se você deseja executar mais do que apenas o seu aplicativo node.js. ou seja, se você tiver mais de um site / domínio hospedado em uma máquina. Não é como uma pilha LAMP, onde você pode ter uma dúzia de aplicativos PHP para meia dúzia de domínios diferentes executando no mesmo servidor (na porta 80, pelo menos). Existem estruturas para o nó que provavelmente tornam isso possível, mas isso adiciona complexidade que você simplesmente não precisa se estiver preso às plataformas da web tradicionais. (Obviamente, você também pode configurar proxies colocando um servidor da Web na frente do nó, mas isso acaba com o benefício do uso do nó).
O Node é perfeito para trabalhar em conjunto com um servidor Web tradicional. A maneira como eu tenho as coisas organizadas agora é servir o html / js / images estáticos via apache e lidar com as necessidades de dados em 'tempo real' pesquisando longamente o aplicativo do nó.
fonte
Um bom motivo para ter segundos pensamentos sobre o nó não é técnico - é ótimo e surpreendente no que faz.
São negócios e, especificamente, capital humano, ou seja, programadores que sabem disso, quanto custam e sua disponibilidade. Não é tão difícil de aprender, mas, como em qualquer tecnologia mais recente, o número de pessoas que a conhecem bem (ou desejam) é um subestino dos grupos de trabalhadores maiores.
fonte
Esta é uma pergunta muito boa, que devemos perguntar, para avançar muito o estado da arte.
Fiquei muito curioso para saber (como Paul d'Aoust) onde existem as limitações do Node.JS. Infelizmente, muitas respostas estão cheias de viés subjetivo e lógica temporariamente relevante.
Perguntei-me: PODEMOS FILTRAR BASES SUBJETIVAS E RECOMENDAR PARA RESPOSTAS SÓLIDAS A ESTA PERGUNTA RELEVANTE?
Os pontos restantes parecem ser:
1. O NodeJS não é tão maduro quanto os Frameworks Tradicionais. Como Paul d'Aoust sugere, esse é apenas um motivo temporariamente relevante, não para evitar completamente - mas, ao contrário, revisar e diligenciar. Espera-se fazer o dever de casa como profissionais da web, e é nosso trabalho determinar o melhor ajuste da tecnologia para a organização, suas necessidades, seu futuro, a equipe (e não nós). A maturidade é uma necessidade de esclarecimento e um julgamento por apetite por risco, mas não por evitação.
2. NodeJS como um servidor proxy. Uma sugestão sábia, de discussão prévia, que vale a pena revisar e considerar. É a noção de usar o Nó em correlação com as tecnologias existentes como um padrão de design de proxy da interface front-end. Mas também não é um motivo para EVITAR o uso do nó, mas um motivo para evitar usá-lo como um substituto completo. Em vez disso, optar por uma abordagem corolária.
3. Nó de depuração. Em conversa com os desenvolvedores principais do Nó na Joyent, há muitas complicações relacionadas à depuração e ao rastreamento da causa raiz dos problemas resultantes do núcleo (com base na execução de um único encadeamento e na incapacidade de ver os encadeamentos anteriores). Vale a pena considerar e avaliar - mas (novamente) provavelmente não há aversão ao uso comum apenas em casos extremos que podem forçar o envelope. Talvez suas necessidades específicas se enquadram nessa categoria e talvez não.
4. Recursos humanos. Esta é a melhor razão para EVITAR o uso do JS nesta página e, na minha humilde opinião, é uma verdade gritante e inconveniente. Ele levanta a questão: sua empresa possui os profissionais talentosos certos para assistir ao projeto por todo o ciclo de vida? Caso contrário, não há dúvida de que você precisa evitar o NodeJS. Ou então considere A) localizar o talento correto ou B) Educar o talento existente.
Reclamações: Minha observação das reclamações sobre JavaScript é que muitas resultam mais de erro do usuário do que de falhas consistentes da linguagem. Desmistificamos muitas reivindicações contra "The Hate JavaScript Diatribe" e continuaremos a desmascarar muitas outras. Problemas como - a documentação não é boa o suficiente, não é sexy o suficiente, mas as pessoas não gostam, é câncer, é o diabo, ou é muito "propenso a erros de digitação" (-CRichardson), são subjetivos e reclamações tendenciosas que precisam ser eliminadas para a tomada precisa de decisões corporativas.
No final, a resposta correta pode ser - não há boas razões para EVITAR o NodeJS . Talvez seja por isso que ele esteja experimentando um rápido crescimento, adoção e contribuição. Mas, para todos nós, talvez a resposta aqui seja continuar a avaliar, pesquisar e entender melhor o NodeJS - e procurar aversões concretas. Na busca de estar aberto a entender exatamente onde o Node.JS é imaturo - encontramos exatamente onde precisamos torná-lo melhor. E isso é uma benção.
Boa pergunta. Eu, pelo menos permaneço curioso para que alguém traga uma razão melhor para evitar o NodeJS - do que esses.
fonte
Existe algum benefício em usar o nó sobre X para aplicativos não em tempo real:
Benefício do uso do X sobre Nó para aplicativos não em tempo real:
Minha resposta definitivamente não será válida em 2015. Em 2014, pule o Node para aplicativos da Web não em tempo real, mas fique de olho nele.
Toda estrutura da web tem um ponto forte. Você ficará feliz enquanto estiver usando esse ponto. Aplicativos da web não em tempo real não são o ponto forte das estruturas da web do Node.
fonte
O Node.js é uma plataforma muito popular e possui muitos recursos interessantes blá blá blá, mas o uso de uma ferramenta é uma preferência pessoal. Eu dei quatro vezes ao Node.js e não fiquei feliz com isso. Aqui estão as minhas razões. Lembre-se de que alguns desses motivos estão desatualizados ou simplesmente pessoais: P
fonte
O HTTP é sem estado, portanto, na verdade, não existe um aplicativo da Web que não seja em tempo real e, portanto, não há razão para que você não possa usar o nó para tudo.
Dito isto, o nó é mais adequado para um tipo específico de arquitetura de aplicativo. PHP são arquivos html que contêm um pouco de código. O nó é um código que contém opcionalmente um pouco de html.
Isso significa que, se seu aplicativo for formulários html padrão sem nenhum script do lado do cliente, o PHP será mais fácil. O Node possui ferramentas de modelagem, mas obviamente não é tão maduro quanto algo como PHP.
Se você tiver muitos scripts do lado do cliente e salvar os dados com o ajax, terá uma função estática de chamada de cliente html no servidor. É exatamente nisso que o nó é bom. Embora não seja o modo como os aplicativos CRUD geralmente são criados, você pode produzir algo muito bom com a estrutura certa.
fonte