2012-06-28 13 views
5

Ho sviluppato in Node.js per solo 2 settimane e ho iniziato a ricreare un sito web scritto in precedenza in PHP. Fin qui tutto bene, e sembra che io possa fare la stessa cosa in Node (con Express) che è stato fatto in PHP nello stesso o meno tempo.Quali sono i problemi comuni di sviluppo, le insidie ​​e i suggerimenti?

ho imbattuto in cose che si devono solo abituarsi a come l'utilizzo di moduli, non dei moduli che la condivisione delle comuni, e di entrare in un'abitudine di usare callback per il file di sistema e le operazioni di database, ecc

Ma non c'è tutto ciò che lo sviluppatore potrebbe scoprire molto più tardi è piuttosto importante per lo sviluppo nel nodo? Problemi che tutti gli altri sviluppano in Nodo hanno ma non emergono fino a tardi? Le insidie? Qualche cosa che i professionisti conoscono e noobs no?

Apprezzerei qualsiasi suggerimento e consiglio.

+0

Prima cosa: questa domanda non si adatta a StackOverflow. Secondo: in generale la lingua ** non è quasi mai un problema. L'idea, l'architettura di un sistema ** è quasi sempre un problema. – freakish

+0

@freakish yes a volte la lingua È un problema se non si adatta alle esigenze dell'applicazione. Ecco perché probabilmente non programmerai un sito Web in Assembler. –

risposta

19

Qui ci sono le cose che potrebbe non rendersi conto solo più tardi:

  • nodo sospendere l'esecuzione per eseguire il garbage collector fine/periodicamente. Quando questo accade, il tuo server si fermerà per un incidente. Per la maggior parte delle persone, questo problema non è un problema significativo, ma può essere un ostacolo per la creazione di sistemi di prossima generazione. Vedi Does Node.js scalability suffer because of garbage collection when under high load?
  • Il nodo è a processo singolo e, in base all'impostazione predefinita, utilizzerà solo 1 CPU. È disponibile il supporto integrato per il clustering per eseguire più processi (in genere 1 per CPU), e per la maggior parte la comunità Node ritiene che questo sia un approccio solido. Potresti essere sorpreso da questa realtà, però.
  • tracce Stack sono spesso persi a causa della coda di eventi, in modo che il logging e la metodologia di debug deve cambiare in modo significativo

Ecco alcuni ostacoli minori si può incorrere in per un po '(io ancora urtare contro questi

  • Ricordarsi di eseguire callback(null, value) su una richiamata riuscita. Passare null come primo parametro è strano e quindi mi dimentico di farlo. Invece accidentalmente faccio callback(value), che viene interpretato come un errore dal chiamante finché non eseguo il debug in esso per un po 'e mi schiaffo la fronte.
  • dimenticando di utilizzare return quando si richiama il callback in una clausola di guardia e non si desidera che una funzione continui a eseguire oltre quel punto. Talvolta ciò comporta il richiamo del callback due volte, il che causa ogni tipo di comportamento scorretto.

Ecco alcuni NIZZA cose che potrebbe non rendersi conto inizialmente

  • È molto più facile in node.js, utilizzando una delle biblioteche di controllo del flusso impressionante, a fare operazioni complesse come il caricamento 3 rete risorse in parallelo, quindi effettuare 2 chiamate DB in serie, quindi scrivere in 2 file di registro in parallelo, quindi inviare una risposta HTTP. Questa roba è banale e bella nel nodo e dannatamente quasi impossibile in molti ambienti sincroni.
  • Tutti i moduli del nodo sono nuovi e moderni e, nella maggior parte dei casi, è possibile trovare un modulo ben progettato con una grande API per fare ciò che ti serve. Python ha anche ottime librerie, ma confronta il cheerio o il modulo jsdom di Node con Python's BeautifulSoup e vedi cosa intendo. Confrontare il modulo requests di python con il nodo superagent.
  • C'è un vantaggio per la comunità derivante dal lavorare con una piattaforma moderna in cui le persone si concentrano sullo sviluppo del web moderno. Il contrasto tra la comunità dei nodi e la comunità PHP non può essere sopravvalutato.
+0

Grazie per la risposta! –

Problemi correlati