2011-06-26 24 views
15

Come ho capito, node.js è utile per i programmatori Java Script, che ora possono svilupparsi sul lato server. Inoltre, alcuni codici Java Script possono essere portati dal lato client al lato server.Vantaggi di node.js rispetto ad altre tecnologie web

Esistono altri vantaggi per node.js rispetto ad altre tecnologie lato server (framework Web Java, RoR, Django, ecc.)?

+2

duplicato di molte domande. Cerca tra le domande più votate nel tag node.js. il nodo è migliore in termini di prestazioni quindi la maggior parte, ma non è abbastanza buono come haskell/erlang. Sicuramente batte RoR/ASP.NET/J2EE. – Raynos

risposta

18

Gestione dei pacchetti

Rispetto al Maven node.js sistema di gestione dei pacchetti di Java (npm) è il migliore di sempre. Per me solo questo dovrebbe essere sufficiente per cambiare. I pacchetti che vi consiglio di check-out:

  • esprimono
  • socket.io
  • node_redis
  • mangusta
  • everyauth

È possibile cercare i pacchetti usando http://search.npmjs.org/

Veloce

node.js è molto veloce (loop di eventi non bloccante) e ha anche legami nativi molto rapidi (C). Per esempio node_redis (C vincolante) parametri di riferimento:

PING: 20000 ops 46189.38 ops/sec 1/4/1.082 
SET: 20000 ops 41237.11 ops/sec 0/6/1.210 
GET: 20000 ops 39682.54 ops/sec 1/7/1.257 
INCR: 20000 ops 40080.16 ops/sec 0/8/1.242 
LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212 
LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363 
LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287 

sviluppo attivo/comunità

Ryan Dahl sta lavorando molto duramente per il suo progetto. Anche node.js ha ora il supporto attivo (sponsor) di Joyent ad esempio. La comunità sta crescendo rapidamente

+0

pacchetti di ricerca su https://www.npmjs.com/ –

5

node.js è gestito da eventi. Mentre la maggior parte degli altri framework ha questo tipo di funzionalità integrata come componente aggiuntivo (ad esempio tramite la macchina degli eventi), questo è solo "il modo" in node.js. Il pensiero è che un'architettura guidata da eventi può portare a applicazioni più scalabili (spesso motivate da The C10K problem). In secondo luogo, la scrittura in JavaScript riduce la barriera all'ingresso per la maggior parte degli sviluppatori front-end che sono già abituati a lavorare con la lingua. Secondo me è anche molto divertente lavorare, ma non posso dire di averlo implementato per applicazioni ad alto traffico. Ha anche la macchina da hype per farlo. Recentemente mi sono innamorato di lift e scala ma è solo una mia preferenza.

+4

Desiderate * gli sviluppatori di frontend in grado di lavorare con il backend in modo troppo semplice? Gli sviluppatori di frontend e gli sviluppatori di backend hanno una mentalità e un approccio abbastanza diversi a varie cose e non sono affatto convinto che rendere troppo facile per uno lavorare sugli altri è una buona cosa. –

+0

In realtà non compro nessuno degli argomenti che ho dato, ma quelli sono i due più comunemente elencati. Penso che V8 abbia alcuni problemi che saranno problematici per il nodo, specialmente il modello di thread. – bmatheny

+5

@ChrisMorgen @bmatheny abbassare la barriera per entrare è falso. È più semplice raccogliere PHP, quindi imparare node.js. E non c'è niente di sbagliato nel fare lo sviluppo sia front-end che backend, qualsiasi sviluppatore web dovrebbe essere in grado di fare entrambe le cose (ma specializzarsi in uno) – Raynos

11

Le prestazioni sono il vantaggio principale, node.js alloca un piccolo heap per ogni connessione, mentre altre soluzioni lato server creano un thread (2MB) per ogni connessione in ingresso e, naturalmente, la creazione di un thread è molto più lento dell'allocazione della memoria heap. Tra gli altri vantaggi c'è la natura event-oriented e non-blocking di node.js.

+0

sì, sono d'accordo con rcode. E dal punto di vista dello sviluppatore, non dovresti preoccuparti della sincronizzazione dei thread o dei deadlock. scrivere codice minore rispetto ad altri linguaggi di alto livello. Il lavoro pesante di calcolo può essere scritto come un addon C++. – user644745

+0

Non ricordo di aver scritto __new Runnable() {...} __ nello stack web. Mai :) Soprattutto non quando lavoravo con PHP :) – luigi7up

+0

Cosa intendi per natura non bloccante? Vengo da PHP in background facendo asincronizzazioni AJAX tramite JQuery per servire script in PHP restituendo JSON – prince

1

Come sviluppatori di applicazioni è nostra responsabilità applicare la logica per risolvere i problemi. Tutti i problemi che gli sviluppatori front-end hanno controparti simili nello sviluppo back-end. Sì, sono espressi in modo diverso, ma sono fondamentalmente gli stessi problemi.

Nodo esprime semplicemente questo fatto unificando le metodologie in modo discreto e razionale.

Avendo il back-end scritto nello stesso modo, applicando gli stessi percorsi logici , rende il passaggio molto più trasparente allo sviluppatore, semplificando il loro lavoro

Problemi correlati