2015-02-13 10 views
14

Sto cercando di imparare il nodo, ho visto molto materiale (come suggerito in quella famosa domanda SO), il problema è che tutti i libri che ho visto, o tutorial, usano un web framework come express o semplicemente limitarsi a spiegare cosa sia il nodo e non andare più in profondità che spiegare come creare un server http molto basico che ascolti le richieste su qualche porta.
Quindi mi chiedo davvero c'è qualcuno che usa il nodo senza un framework web? Se è così, devono averlo imparato da qualche parte, quindi potresti per favore suggerire dove posso impararlo?
So che questo è un livello molto basso, ma non mi dispiace, ho già una familiarità su come creare server in C.
Mi piacerebbe davvero capire come realmente serviamo il contenuto statico con il nodo (in modo personalizzato organizzato in cartelle) e in che modo introduciamo la logica nel nostro html (ho cercato tutto questo ma ho trovato solo risultati su come farlo usando Express, dove la logica è introdotta da qualcosa come <% // code%>, ma può essere fatto nel nodo puro?).

La domanda simile alla mia che è stata già posta qui non ha una risposta. La migliore risposta suggerisce solo di leggere la documentazione ufficiale di nodejs che è come dire:
c'è un dizionario con milioni di parole in latino, buona fortuna per impararlo.

Quindi, puoi suggerire un libro/tutorial ben documentato e robusto in cui viene mostrato come creare un sito Web reale utilizzando il nodo raw?
In caso contrario, suppongo che dovrò attenermi a php + Apache e cercare di ottimizzare quelli in scala.Raw Node.js senza alcun framework web

+0

Non è 'node.js' stesso un framework web? – Raptor

+4

No, node.js non è di per sé un framework. –

+3

Node.js è solo un motore JavaScript (V8) + libreria standard. Per imparare la libreria standard, dai un'occhiata alla documentazione: http://nodejs.org/api/. Se si desidera utilizzarlo come server Web senza un framework, suppongo che si stia cercando il modulo HTTP: http://nodejs.org/api/http.html –

risposta

11

Node.js è un motore di esecuzione Javascript (basato su V8) che viene eseguito su molte piattaforme diverse e viene fornito con una libreria standard. È in qualche modo analogo a qualsiasi altro linguaggio interpretato con la sua libreria standard (come Python o PHP). Non sarebbe corretto descrivere plain node.js come "piattaforma web" da solo. Ha gli strumenti principali in cui è possibile creare una piattaforma web, ma può anche essere utilizzato per tutti i tipi di altri tipi di usi che non hanno nulla a che fare con l'essere una piattaforma web. Ad esempio, ho creato alcuni strumenti di configurazione da riga di comando per eseguire varie forme di elaborazione del testo (un uso che non crea reti di alcun tipo).

Quindi, suppongo che il nodo "raw" significhi risolvere qualsiasi problema tu voglia risolvere senza costruire su librerie di terze parti (oltre alla libreria standard che include node.js). Personalmente, non sono sicuro del perché tu voglia davvero farlo. Un enorme vantaggio dello sviluppo di node.js è l'intero ecosistema NPM in cui sono presenti migliaia di moduli prefabbricati, gratuiti e open source che risolvono migliaia di problemi. Alcune sono alcune funzioni, ma sono comunque utili e altre sono API complete che risolvono numerosi problemi. La bellezza di NPM e di questo ecosistema è che con un semplice comando è possibile aggiungere uno qualsiasi di questi moduli al progetto e con un paio di linee di codice, è possibile utilizzarlo nel progetto. Lo considererei sciocco per evitare questo vantaggio.

Quindi imparare nodo.js grezzo significa imparare Javascript, imparare gli strumenti usati spesso per lo sviluppo node.js (debugger, NPM, console, ecc ...) e imparare la libreria standard che viene con node.js. Poche persone vogliono mai sedersi e imparare effettivamente ogni funzione nella libreria standard. Di solito ciò che le persone fanno è dare una buona occhiata a tutti i moduli disponibili nella libreria standard, sfogliare ciascuno di essi per avere un'idea di che tipo di cose hanno in loro e poi ritrovarti qualcosa che vuoi costruire e iniziare a costruirlo . Dato che sei costretto a trovare le cose e capire come funzionano dalla documentazione o dalle ricerche di Google o dallo studio di altri codici node.js che trovi, imparerai come funzionano le parti della libreria standard e cosa fa. Se si sta eseguendo I/O (file, rete, ecc.), Si incontreranno rapidamente molte API asincrone nella libreria standard e generalmente si vorrà o sarà necessario acquisire competenze nella gestione delle operazioni asincrone (che in realtà è solo l'apprendimento async Javascript), ma sarà probabilmente importante in un progetto node.js.

Se si vuole veramente "studiare" la libreria standard da sola, sia Amazon che Google dispongono di lunghi elenchi di risorse che è possibile sfogliare per vedere quali sembrano avvicinarsi alle cose nel modo desiderato. Chiedere a noi di trovare una risorsa del genere per te è considerato "off topic" qui su StackOverflow, quindi ti lascerò andare a consultare quegli elenchi e decidere cosa sembra interessante. Io stesso sapevo Javascript sul lato client e ho raccolto node.js semplicemente leggendo alcune risorse web e poi lavorando sui miei progetti. Alla fine, ho creato un sistema node.js che gira su un Raspberry Pi e che si trova nelle mie sonde di temperatura per il monitoraggio dell'attico, che commuta i ventilatori attici in base alle differenze di temperatura e offre un'interfaccia web per controllare, configurare e segnalare tutto ciò che sta succedendo. Si tratta di metà di un'app Web e di un controller di temperatura stand-alone.

Sfortunatamente, la documentazione per la libreria standard node.js non è molto descrittiva (io sono gentile lì). È tecnicamente accurato, ma spesso non risponde a molte delle domande più comuni che chiunque voglia utilizzare un'API avrebbe rapidamente. Sembra presumere che tu conosca già molte librerie Unix C in quanto ha molte funzioni simili (in particolare per l'accesso ai file). Inoltre, uno degli svantaggi della documentazione di una gerarchia di oggetti (dove le cose ereditano da altre cose) è che può essere difficile mettere insieme in un unico punto tutto ciò che fa un determinato oggetto. Invece devi raccogliere mentalmente e capire cosa fanno gli oggetti di base e poi cercare di capire come si adatta a ciò che sta facendo l'oggetto root. Questa non è una sfida che affronta solo node.js, molti sistemi orientati agli oggetti hanno questa sfida della documentazione (mi faceva impazzire con YUI).

Quello che ho trovato rapidamente è che ho davvero bisogno di essere in grado di trovare il codice sorgente della libreria pertinente per qualsiasi funzione di libreria standard, così ho potuto vedere come la funzione è stata effettivamente scritta per rispondere alle mie domande. Questo è un enorme vantaggio sia dell'open source sia della ricerca di GitHub (tutte le fonti di libreria standard sono su GitHub).

Quindi, scorrere tutti i moduli nella libreria standard node.js per familiarizzare con ciò che è lì e dove lo si trova. Quindi trova te stesso un'app che vuoi costruire e costruiscila. Se stai creando un'app web, non riesco a pensare a nessuna ragione per cui vorresti farlo senza usare un framework che qualcun altro ha già creato per te (io uso Express). Non c'è motivo di reinventare tutto da solo. Se vuoi essere sicuro di capire il modulo HTTP prima di usare Express, allora costruisci un semplice web server usando solo il modulo HTTP che serve due file statici e usa il modulo HTTP andando dall'altra parte per richiedere una coppia di pagine web da altri server . Quindi, inizia a utilizzare Express per creare la tua app Web.

Per quanto riguarda alcune delle vostre domande più specifiche:

Mi piacerebbe davvero capire come siamo veramente servire contenuti statici con nodo (customly organizzati in cartelle)

Alcuni dei le risposte a this question mostrano un server Web di solo nodo di base che serve contenuto statico da un file system. Altri esempi e spiegazioni here.

come realmente introdurre la logica nel nostro html (ho guardato tutto questo fino ma trovato i risultati solo sul come farlo utilizzando Express, in cui la logica è introdotto da qualcosa come <% // code%>, ma può essere fatto nel nodo puro ?).

Nasce "logica" in codice HTML da zero significa che per la prima volta a costruire un sistema per servire le pagine web statiche e quindi si aggiunge a quella di un sistema per l'analisi attraverso le pagine web (sul server) per trovare direttive quelli che significano che il tuo server dovrebbe fare qualcosa da modificare o aggiungere all'HTML prima di inviarlo al client. Ci sono molti modi diversi per farlo, motivo per cui ci sono probabilmente 50 sistemi diversi là fuori per farlo. Una ricerca per i sistemi di template node.js ti troverà una lista. Ancora una volta, non ho idea del perché vorresti costruirne uno da zero. È un po 'un progetto di ricerca per capire quale delle migliaia di miliardi là fuori corrisponde ai tuoi desideri il meglio (sto usando Handlebars, un derivato di Moustache io stesso), ma dovrebbe essere molto, molto meno lavoro che costruire il tuo stesso sistema da zero. E, anche se si desiderano alcune grandi capacità che non possono essere facilmente ottenute con un sistema azionario, si può anche iniziare con un sistema azionario ed estenderlo.

3

Quello che stai chiedendo sembra essere due cose diverse, vuoi fare il nodo grezzo, ma allo stesso tempo sapere come le persone lo usano nel mondo reale. Praticamente tutti usano perlomeno, Express (o Koa se sei sul filo del rasoio) come il loro framework web. Forniscono le ossa nude per creare un robusto server web. Quindi, per il tuo front-end effettivo, utilizzeresti AngularJS o ReactJS, non eseguirai alcun rendering di template lato server di rendering (ad esempio non <%%> blocchi di codice). Se scegli di percorrere la rotta di React, avrai bisogno di librerie aggiuntive come BaconJS per aiutare con la colla, dato che React è solo il livello di vista, mentre Angular è un framework MVC onnicomprensivo.

Uno dei modi migliori per imparare è quello di vedere il generatore di stack di stack MEAN https://github.com/DaftMonk/generator-angular-fullstack. Usa il generatore per creare un'app e leggi la sua fonte per vedere come è strutturata, e inizia semplicemente a hackerarlo per ottenere ciò che vuoi.

Problemi correlati