Domanda Come decidere quando utilizzare Node.js?


Sono nuovo a questo genere di cose, ma ultimamente ho sentito molto di quanto sia bello Node.js è. Considerando quanto mi piace lavorare con jQuery e JavaScript in generale, non posso fare a meno di chiedermi come decidere quando utilizzare Node.js. L'applicazione web che ho in mente è qualcosa di simile bitly - prende del contenuto, lo archivia.

Da tutti i compiti che ho fatto negli ultimi giorni, ho ottenuto le seguenti informazioni. Node.js

  • è uno strumento da riga di comando che può essere eseguito come un normale server Web e consente di eseguire programmi JavaScript
  • utilizza il grande Motore JavaScript V8
  • è molto buono quando devi fare parecchie cose allo stesso tempo
  • è basato sull'evento, quindi tutto il meraviglioso Ajaxcose simili possono essere fatte sul lato server
  • ci consente di condividere il codice tra il browser e il back-end
  • ci permette di parlare con MySQL

Alcune delle fonti che ho incontrato sono:

Considerando che Node.js può essere eseguito quasi immediatamente EC2 di Amazon istanze, sto cercando di capire che tipo di problemi richiedono Node.js in opposizione a uno dei potenti re là fuori come PHP, Pitone e Rubino. Capisco che in realtà dipende dall'esperienza che si ha su una lingua, ma la mia domanda ricade maggiormente nella categoria generale di: Quando utilizzare un particolare quadro e quale tipo di problemi è particolarmente adatto?


2200
2018-02-21 05:20


origine


risposte:


Hai fatto un ottimo lavoro nel riassumere ciò che è fantastico su Node.js. La mia sensazione è che Node.js sia particolarmente adatto per le applicazioni in cui si desidera mantenere una connessione persistente dal browser al server. Utilizzando una tecnica conosciuta come "Long-polling", puoi scrivere un'applicazione che invia aggiornamenti all'utente in tempo reale. Facendo lunghi sondaggi su molti dei giganti del web, come Ruby on Rails o Django, creerebbe un carico immenso sul server, perché ogni client attivo mangia un processo del server. Questa situazione equivale a a tarpit attacco. Quando si utilizza qualcosa come Node.js, il server non ha bisogno di mantenere thread separati per ogni connessione aperta.

Questo significa che puoi creare un applicazione chat basata su browser in Node.js che non richiede quasi risorse di sistema per servire moltissimi clienti. Ogni volta che vuoi eseguire questo tipo di polling lungo, Node.js è un'ottima opzione.

Vale la pena ricordare che Ruby e Python hanno entrambi gli strumenti per fare questo genere di cose (eventmachine e contorto, rispettivamente), ma che Node.js lo fa eccezionalmente bene, e da zero. JavaScript è eccezionalmente situato in un modello di concorrenza basato sul callback ed eccelle qui. Inoltre, essere in grado di serializzare e deserializzare con JSON nativo sia sul client che sul server è piuttosto elegante.

Non vedo l'ora di leggere altre risposte qui, questa è una domanda fantastica.

Vale la pena sottolineare che Node.js è ottimo anche per situazioni in cui riutilizzerai molto codice attraverso il gap client / server. Il Struttura meteorica lo rende molto semplice, e molte persone suggeriscono che questo potrebbe essere il futuro dello sviluppo web. Posso dire per esperienza che è molto divertente scrivere codice in Meteor, e gran parte di questo è dedicare meno tempo a pensare a come ristrutturare i dati, quindi il codice che viene eseguito nel browser può facilmente manipolarlo e passarlo indietro.

Ecco un articolo su Pyramid e long-polling, che risulta essere molto facile da configurare con un piccolo aiuto da gevent: TicTacToe e Long Polling con Pyramid.


1359
2018-02-21 05:30



Credo che Node.js sia il più adatto per le applicazioni in tempo reale: giochi online, strumenti di collaborazione, chat room o qualsiasi cosa in cui ciò che un utente (o robot? O sensore?) Fa con l'applicazione deve essere visto immediatamente da altri utenti, senza un aggiornamento della pagina.

Vorrei anche menzionare che Socket.IO in combinazione con Node.js ridurrà la latenza in tempo reale anche oltre rispetto a quanto è possibile con il polling lungo. Socket.IO tornerà al polling lungo come scenario peggiore, e invece utilizzerà socket Web o Flash anche se disponibili.

Ma dovrei anche ricordare che qualsiasi situazione in cui il codice potrebbe bloccare a causa di thread può essere meglio affrontata con Node.js. O qualsiasi situazione in cui è necessario che l'applicazione sia guidata dagli eventi.

Inoltre, Ryan Dahl ha detto in una conferenza che una volta ho assistito al fatto che il Node.js benchmark Nginx strettamente rivale per regolari richieste HTTP vecchie. Quindi, se costruiamo con Node.js, possiamo servire le nostre normali risorse in modo abbastanza efficace, e quando abbiamo bisogno delle cose guidate dagli eventi, è pronto a gestirle.

Inoltre è tutto JavaScript sempre. Lingua Franca sull'intero stack.


410
2018-02-21 06:43



Motivi per utilizzare NodeJS:

  • Esegue Javascript, quindi puoi usare il stessa lingua su server e client, e persino condividere un po 'di codice tra di loro (ad esempio per la convalida del modulo o per eseguire il rendering di viste in entrambe le estremità).

  • Il single-threaded il sistema basato sugli eventi è veloce anche quando si gestiscono molte richieste contemporaneamente e anche semplici rispetto al tradizionale multi-thread Giava o quadri ROR.

  • La piscina in continua crescita di Pacchetti accessibile tramite NPM, comprese librerie / moduli client e server-side, oltre a strumenti da riga di comando per lo sviluppo web. Molti di questi sono comodamente ospitati su github, dove a volte puoi segnalare un problema e trovarlo risolto in poche ore! È bello avere tutto sotto lo stesso tetto, con report di rilascio standardizzati e forking facile.

  • È diventato l'ambiente standard defacto in cui eseguire Strumenti relativi a Javascript e altro strumenti relativi al web, inclusi runner, minificatori, abbellitori, ltri, preprocessori, bundler e processori di analisi.

  • Sembra abbastanza adatto per la prototipazione, lo sviluppo agile e rapida iterazione del prodotto.

Motivi non usare NodeJS:

  • Esegue Javascript, che non ha il controllo del tipo in fase di compilazione. Per grandi, complessi sicurezza-critical sistemi o progetti che includono la collaborazione tra diverse organizzazioni, un linguaggio che incoraggia interfacce contrattuali e fornisce controllo di tipo statico potrebbe farti risparmiare tempo per il debug (e esplosioni) a lungo termine. (Sebbene la JVM sia bloccata null, quindi per favore usa Haskell per i tuoi reattori nucleari.)

  • Aggiunto a quello, molti dei pacchetti in NPM sono un po ' crudoe ancora in rapido sviluppo. Alcune librerie per framework precedenti hanno subito un decennio di test e bugfixing e sono molto stabile da adesso. Npmjs.org non ha alcun meccanismo per valutare i pacchetti, che ha portato a una proliferazione di pacchetti facendo più o meno la stessa cosa, da cui una grande percentuale non viene più mantenuta.

  • Callback annidato (Certo che ci sono 20 diverse soluzioni a questa...)

  • Il numero sempre crescente di pacchetti può far apparire un progetto NodeJS radicalmente diverso da quello successivo. Vi è una grande diversità nelle implementazioni a causa dell'enorme numero di opzioni disponibili (ad es.Sails.js/Meteora/Derby). Questo a volte può rendere più difficile per un nuovo sviluppatore entrare in un progetto Node. Contrasto che con a Rails sviluppatore che si unisce a un progetto esistente: dovrebbe essere in grado di familiarizzare con l'app abbastanza rapidamente, perché tutte le app Rails sono incoraggiate ad usare un struttura simile.

  • Trattare con i file può essere un po 'un dolore. Le cose che sono banali in altre lingue, come leggere una riga da un file di testo, lo sono abbastanza strano da fare con Node.js che c'è una domanda StackOverflow su questo con 80+ upvotes. C'è nessun modo semplice per leggere un record alla volta da un file CSV. Eccetera.

Amo NodeJS, è veloce, selvaggio e divertente, ma temo che abbia scarso interesse per la correttezza dimostrabile. Speriamo di poter finalmente unire il meglio di entrambi i mondi. Sono ansioso di vedere cosa sostituirà Node in futuro ... :)


209
2017-11-25 21:47



Per farla breve:

Node.js è adatto per applicazioni che hanno molte connessioni simultanee e ogni richiesta richiede solo pochissimi cicli di CPU, perché il ciclo degli eventi (con tutti gli altri client) è bloccato durante l'esecuzione di una funzione.

È un buon articolo sul ciclo degli eventi in Node.js Blog tecnico di Mixu: informazioni sul ciclo degli eventi node.js.


208
2018-01-15 01:48



Ho un esempio del mondo reale in cui ho usato Node.js. L'azienda in cui lavoro ha un cliente che desidera avere un semplice sito Web HTML statico. Questo sito web è per la vendita di un oggetto utilizzando PayPal e il cliente voleva anche avere un contatore che mostra la quantità di articoli venduti. Il cliente si aspetta un numero enorme di visitatori di questo sito. Ho deciso di creare il contatore utilizzando Node.js e il Express.js struttura.

L'applicazione Node.js era semplice. Ottieni l'importo degli articoli venduti da a Redis database, aumentare il contatore quando l'oggetto è venduto e servire il valore del contatore per gli utenti tramite il API.

Alcuni motivi per cui ho scelto di utilizzare Node.js in questo caso

  1. È molto leggero e veloce. Ci sono state oltre 200000 visite su questo sito in tre settimane e le risorse minime del server sono state in grado di gestire tutto.
  2. Il contatore è davvero facile da fare per essere in tempo reale.
  3. Node.js è stato facile da configurare.
  4. Ci sono molti moduli disponibili gratuitamente. Ad esempio, ho trovato un modulo Node.js per PayPal.

In questo caso, Node.js è stata una scelta fantastica.


127
2018-05-31 06:34



I motivi più importanti per iniziare il tuo prossimo progetto usando il nodo ...

  • Ci sono tutti i tipi più simpatici ... così dovere Sii divertente.
  • Puoi rilassarti al fresco e avere tantissime avventure di Nodo di cui vantarti.
  • Sei un centesimo spaccone quando si tratta di costi di cloud hosting.
  • Ci sono stato fatto con Rails
  • Tu odi le implementazioni di IIS
  • Il tuo vecchio lavoro IT sta diventando noioso e ti piacerebbe che tu fossi in una nuova brillante Start Up.

Cosa aspettarsi ...

  • Ti sentirai sicuro e protetto con Express senza tutti i bloatware server di cui non hai mai avuto bisogno.
  • Funziona come un razzo e scala bene.
  • Lo sogni. L'hai installato. Il repository del pacchetto del nodo npmjs.org è il più grande ecosistema di librerie open source nel mondo.
  • Il tuo cervello avrà il tempo deformato nella terra delle callback annidate ...
  • ... finché non impari a mantenere il tuo promesse.
  • Sequelize e Passaporto sono i tuoi nuovi amici API.
  • Il debug del codice per lo più asincrono otterrà umm ... interessante .
  • Tempo per tutti i Noderi da padroneggiare Dattiloscritto.

Chi lo usa?

  • PayPal, Netflix, Walmart, LinkedIn, Groupon, Uber, GoDaddy, Dow Jones
  • Ecco perché loro passato al nodo.

105
2018-06-12 13:24



Non c'è niente come Silver Bullet. Tutto viene fornito con alcuni costi associati ad esso. È come se mangi cibo oleoso, comprometterai la tua salute e il cibo sano non viene fornito con spezie come il cibo oleoso. È una scelta individuale se vogliono la salute o le spezie come nel loro cibo. Allo stesso modo, Node.js considera di essere utilizzato in uno scenario specifico. Se la tua app non si adatta a questo scenario, non dovresti prenderla in considerazione per lo sviluppo della tua app. Sto solo mettendo il mio pensiero sullo stesso:

Quando usare Node.JS

  1. Se il tuo codice di accesso al server richiede pochissimi cicli di CPU. In altri paesi si sta eseguendo un'operazione non di blocco e non si dispone di algoritmo / lavoro pesante che consuma molti cicli della CPU.
  2. Se vieni da Javascript back ground e sei a tuo agio nello scrivere il codice Single Threaded come il lato client JS.

Quando NON usare Node.JS

  1. La richiesta del server dipende dall'algoritmo / Job che consuma molta CPU.

Considerazioni sulla scalabilità con Node.JS

  1. Node.JS non utilizza tutto il core del sistema sottostante ed è single threaded per impostazione predefinita, è necessario scrivere la logica da soli per utilizzare il processore multi core e renderlo multi-threaded.

Node.JS Alternative

Tuttavia, ci sono altre opzioni da utilizzare al posto di Node.JS Vert.x sembra essere piuttosto promettente e ha molte funzionalità aggiuntive come poligot e considerazioni di scalabilità migliori.


60
2018-04-05 17:17



Un'altra cosa grandiosa credo nessuno ha menzionato Node.js è la comunità sorprendente, il sistema di gestione dei pacchetti (npm) e la quantità di moduli esistenti che è possibile includere semplicemente includendoli nel file package.json.


41
2018-06-06 17:42



Il mio pezzo: nodejs è ottimo per realizzare sistemi in tempo reale come analisi, chat-app, apis, server pubblicitari, ecc. Diavolo, ho fatto la mia prima app di chat usando nodejs e socket.io in meno di 2 ore e anche durante l'esame settimana!

modificare

Sono passati diversi anni da quando ho iniziato a utilizzare nodejs e l'ho usato per creare molte cose diverse tra cui file server statici, analisi semplice, applicazioni di chat e molto altro. Questa è la mia opinione su quando utilizzare nodejs

Quando usare

Quando si realizza un sistema che pone l'accento sulla concorrenza e sulla velocità.

  • Socket solo server come app di chat, applicazioni irc, ecc.
  • Social network che mettono l'accento sulle risorse in tempo reale come la geolocalizzazione, il flusso video, il flusso audio, ecc.
  • Gestire piccoli blocchi di dati molto velocemente come una webapp di analisi.
  • Come esporre un REST solo api.

Quando non usare

È un server web molto versatile, quindi puoi utilizzarlo dove vuoi ma probabilmente non in questi posti.

  • Blog semplici e siti statici.
  • Proprio come un file server statico.

Tieni presente che sto solo facendo il pelo nell'uovo. Per i file server statici, apache è migliore soprattutto perché è ampiamente disponibile. La community di nodejs è diventata più grande e più matura nel corso degli anni ed è sicuro che nodejs può essere utilizzato praticamente ovunque se si dispone della propria scelta di hosting.


37
2018-05-06 13:52