Node.js è un software open source e completamente gratuito che consente agli sviluppatori Web di creare programmi di rete scalabili e veloci. Essendo basato sul runtime JavaScript di Chrome, il software Node.js è estremamente efficiente e leggero, soprattutto perché utilizza un modello I / O non bloccante basato sugli eventi.
La migliore piattaforma per l'esecuzione del codice JavaScript lato server
Node.js è attualmente considerata la migliore piattaforma per l'esecuzione di codice JavaScript lato server, utilizzata nella produzione di grandi aziende come Google, eBay, Yahoo, LinkedIn, Microsoft, Cloud9 e molti altri.
Esempio obbligatorio
Il seguente codice creerà un semplice web server che risponde con "Hello World" per ogni richiesta.
var http = require ('http');
http.createServer (function (req, res) {
res.writeHead (200, {'Content-Type': 'text / plain'});
res.end ('Hello Worldn');
}). listen (1337, '127.0.0.1');
console.log ('Server in esecuzione all'indirizzo http://127.0.1.11337/');
Per eseguire il server HTTP, dovrai inserire il codice sopra in un file chiamato & ldquo; example.js & rdquo; (senza virgolette) ed eseguirlo con il comando node da un emulatore di terminale:
% node example.js
Server in esecuzione all'indirizzo http://127.0.0.1:1337/
Sistemi operativi supportati
Node.js è un'applicazione multi-piattaforma che è stata testata con successo in numerose distribuzioni GNU / Linux, inclusi Debian, Ubuntu, Arch Linux, Fedora, Red Hat Enterprise Linux, openSUSE, Mageia, Slackware e altri, come sui sistemi operativi Mac OS X e Microsoft Windows. Al momento sono supportate entrambe le architetture di istruzioni a 64 e 32 bit.
Sotto il cofano, i requisiti e la disponibilità
Come accennato, si tratta di un software multipiattaforma. Può essere scaricato come programmi di installazione precostituiti per i sistemi operativi Mac OS X, GNU / Linux e Microsoft Windows, nonché un archivio sorgente universale che può essere compilato e installato praticamente su qualsiasi sistema operativo in cui è supportato Python.
Novità di in questa versione:
- console:
- Il metodo console.timeLog () è stato implementato. # 21312
- dipendenze:
- Aggiornamento a libuv 1.22.0. # 21731
- Aggiornamento a ICU 62.1 (Unicode 11, CLDR 33.1). # 21728
- http:
- Aggiunto supporto per il passaggio delle opzioni timeout e agent a http.request. # 21204
- ispettore:
- Esporre l'API della console originale in require ('inspector'). console. # 21659
- napi:
- Aggiunto il supporto sperimentale per le funzioni che trattano i numeri bigint. # 21226
- processo:
- Il metodo process.hrtime.bigint () è stato implementato. # 21256
- Aggiunto l'argomento della riga di comando --title per impostare il titolo del processo all'avvio. # 21477
- trace_events:
- Aggiunti i metadati del nome processo. # 21477
- Aggiunti nuovi collaboratori
- codebytere - Shelley Vohr
Novità nella versione 10.0.0:
- Supporto completo per N-API
- Facile avvio con Time-Travel Debugging tramite una nuova estensione di codice di Visual Studio
- Supporto TTD per generatori e funzioni asincrone
- Supporto per il protocollo Inspector
- Maggiore stabilità e altri miglioramenti assortiti
Novità della versione nella versione:
- async_hooks:
- aggiungi eventi di traccia a async_hooks (Andreas Madsen) # 15538
- aggiungi i tipi di provider per net server (Andreas Madsen) # 17157
- console:
- console.debug può ora essere utilizzato al di fuori dell'ispettore (Benjamin Zaslavsky) # 17033
- dipendenze:
- aggiorna libuv a 1.18.0 (cjihrig) # 17282
- patch V8 a 6.2.414.46 (Myles Borins) # 17206
- modulo:
- module.builtinModules restituirà un elenco di moduli incorporati (Jon Moss) # 16386
- n-api:
- aggiungi un helper per i componenti aggiuntivi per ottenere il loop degli eventi (Anna Henningsen) # 17109
- processo:
- process.setUncaughtExceptionCaptureCallback può ora essere utilizzato per personalizzare il comportamento di --abort-on-uncaught-exception (Anna Henningsen) # 17159
- Un gestore di segnale è ora in grado di ricevere il codice segnale che ha attivato il gestore. (Robert Rossmann) # 15606
- src
- embedders ora possono usare Node :: CreatePlatform per creare un'istanza di NodePlatform (Cheng Zhao) # 16981
- flusso:
- writable.writableHighWaterMark e readable.readableHighWaterMark restituiranno i valori con cui l'oggetto stream è stato istanziato con (Calvin Metcalf) # 12860
- Aggiunti nuovi collaboratori
- maclover7 Jon Moss
- guybedford Guy Bedford
- hashseed Yang Guo
Novità nella versione 9.2.0:
- crypto:
- Supporto per la creazione di entrambi con 1.1.0 e 1.0.2 (David Benjamin) # 16130
- fs:
- fs.realpathSync.native e fs.realpath.native sono ora esposti (Ben Noordhuis) # 15776
- processo:
- espose process.ppid (cjihrig) # 16839
Novità nella versione 8.5.0:
- costruzione:
- Le istantanee sono ora riabilitate in V8 # 14875
- console:
- Implementa il minimo console.group (). # 14910
- dipendenze:
- aggiorna libuv a 1.14.1 # 14866
- aggiorna nghttp2 alla v1.25.0 # 14955
- dns:
- Aggiungi l'opzione verbatim a dns.lookup (). Quando è true, i risultati del resolver DNS vengono passati così come sono, senza la modifica di Node.js che altrimenti mette gli indirizzi IPv4 prima degli indirizzi IPv6. # 14731
- fs:
- aggiungi fs.copyFile e fs.copyFileSync che consente una copia più efficiente dei file. # 15034
- ispettore:
- Abilita tracce dello stack asincrono # 13870
- modulo:
- Aggiungi supporto per ESM. Questo è attualmente dietro il flag --experimental-modules e richiede l'estensione .mjs. node --experimental-modules index.mjs # 14369
- napi:
- implementare la promessa # 14365
- os:
- Aggiungi il supporto per la notazione CIDR all'output del metodo networkInterfaces (). # 14307
- perf_hooks:
- Un'implementazione iniziale dell'API di timing delle prestazioni per Node.js. Questa è la stessa API di timing delle prestazioni implementata dai browser moderni con una serie di proprietà specifiche di Node.js. Le API mark Timing utente () e measure () sono implementate. # 14680
- TLS:
- più PFX in createSecureContext # 14793
- Aggiunti nuovi collaboratori:
- BridgeAR - Ruben Bridgewater
Novità nella versione 8.3.0:
- Il motore V8 è stato aggiornato alla versione 6.0, che ha un profilo delle prestazioni significativamente modificato.
- Altre modifiche importanti:
- DNS:
- Le istanze del resolver DNS indipendenti sono ora supportate, con il supporto per l'annullamento delle richieste corrispondenti.
- N-API:
- Più funzioni N-API per la gestione degli errori sono state modificate per supportare l'assegnazione dei codici di errore.
- REPL:
- Il supporto per il completamento automatico di require () è stato migliorato.
- Utilità:
- Lo standard di codifica WHATWG (TextDecoder e TextEncoder) è stato implementato come funzionalità sperimentale.
Novità della versione 8.1.3:
- Stream Sono state corrette due regressioni con il modulo stream:
- L'evento di fine verrà sempre emesso dopo l'evento di errore se ne viene emesso uno: [0a9e96e86c] # 13850
- In modalità oggetto, gli stream leggibili possono ora utilizzare di nuovo undefined. [5840138e70] # 13760
Novità nella versione 8.1.2:
- Corregge le proprietà break.release nel 8.1.1 causando l'errore di compilare componenti aggiuntivi nativi su piattaforme diverse da Windows. Questa è una correzione nel processo di generazione di Node.js quindi non ci sono ulteriori commit di codice inclusi in cima alla 8.1.1.
Novità nella versione 7.7.1:
- [c8e34b61f6] - build: aggiungi i file header di src / tracing mancanti (Daniel Bevenius) # 10851
- [96f55f9e59] - src: move trace_event.h include all'intestazione interna (Ben Noordhuis) # 10959
- [30c80cbe6f] - src: ripara pulizia TracingController (Jason Ginchereau) # 10623
- [b89b2a7d36] - src: inizializza sempre il controller di tracciamento nell'agente (Matt Loring) # 10507
- [54e55e05ca] - test: rendere i dati test-intl-no-icu più robusti (Michael Zasso) # 10992
- [7b253eb3ed] - test: aumenta il rigore per test-trace-event (Rich Trott) # 11065
- [3dc4a5f1f4] - tracing: fix - Avviso campo privato -utilizzato (Santiago Gimeno) # 10416
- [8a918bf411] - traccia: fix-warning Wreorder (Santiago Gimeno) # 10416
Novità nella versione 7.4.0:
- buffer:
- Migliora le prestazioni dell'allocazione del buffer di ~ 11%. (Brian White) # 10443
- Migliora le prestazioni di Buffer.from () di ~ 50%. (Brian White) # 10443
- : migliora le prestazioni di EventEmitter.once () di ~ 27%. (Brian White) # 10445
- fs: consente di passare Uint8Array ai metodi fs in cui sono supportati i buffer. (Anna Henningsen) # 10382
- http: migliora le prestazioni del server http di ~ 7%. (Brian White) # 6533
- npm: upgrade a v4.0.5 (Kat Marchan) # 10330
Eventi
Novità nella versione 7.2.1:
- buffer:
- Ripristinato il deprecation di runtime di chiamare Buffer () senza nuovo. (Anna Henningsen) # 9529
- Risolto il buffer.transcode () per le codifiche di caratteri a byte singolo in UCS2. (Anna Henningsen) # 9838
- promessa: --trace-warnings ora produce utili stacktraces per gli avvisi Promise. (Anna Henningsen) # 9525
- repl: corretto un bug che impediva il corretto parsing delle funzioni del generatore. (Teddy Katz) # 9852
- V8: corretta un'istanza significativa della regressione delle prestazioni. (Franziska Hinkelmann) # 9730
Novità nella versione 7.2.0:
- crypto: i metodi Decipher setAuthTag () e setAAD ora restituiscono questo.
- dns: implementato {ttl: true} per resolve4 () e resolve6 ().
- libuv: upgrade a v1.10.1
- Risolto un potenziale overflow del buffer durante la scrittura dei dati sulla console su Windows 10. (CVE-2016-9551)
- processo: aggiunta una nuova proprietà esterna ai dati restituiti da memoryUsage ().
- tls: risolta una perdita di memoria quando le scritture erano in coda sulla connessione TLS che era stata distrutta durante l'handshake.
- V8 (dep): aggiornamento a v5.4.500.43
- v8: i dati restituiti da getHeapStatistics () ora includono tre nuovi campi: malloced_memory, peak_malloced_memory e does_zap_garbage.
Novità della versione nella versione 6.4.0:
- build: i simboli zlib e i simboli OpenSSL aggiuntivi sono ora esposti sulle piattaforme Windows. (Alex Hultman) # 7983 e # 7576
- child_process, cluster: i processi figlio biforcati e i cluster worker ora supportano la configurazione di stdio. (Colin Ihrig) # 7811 e # 7838
- child_process: argv [0] può ora essere impostato su valori arbitrari nei processi spawn. (Pat Pannuto) # 7696
- fs: fs.ReadStream ora espone il numero di byte letti finora. (Linus Unneback) # 7942
- repl: REPL ora supporta la modalità editor. (Prince J Wesley) # 7275
- util: inspect () può ora essere configurato globalmente usando util.inspect.defaultOptions. (Roman Reiss) # 8013
Novità nella versione 6.3.0:
- buffer: aggiunto buffer.swap64 () per integrare swap16 () & amp; swap32 (). (Zach Bjornson) # 7157
- build: sono state aggiunte nuove opzioni di configurazione per la creazione di Node.js come libreria condivisa. (Stefan Budeanu) # 6994
- Le opzioni sono: --shared, --without-v8-platform & amp; --without-bundle-v8.
- crypto: i certificati di root sono stati aggiornati. (Ben Noordhuis) # 7363
- debugger: l'indirizzo del server è ora configurabile tramite --debug = :. (Ben Noordhuis) # 3316
- npm: versione aggiornata npm alla v3.10.3 (Kat Marchan) # 7515 & amp; (Rebecca Turner) # 7410
- readline: aggiunta l'opzione prompt al costruttore readline. (Evan Lucas) # 7125
- repl / vm: sigint / ctrl + c uscirà da loop infiniti senza arrestare l'istanza Node.js. (Anna Henningsen) # 6635
- src
- Aggiunto un nodo :: API C ++ pubblica FreeEnvironment. (Cheng Zhao) # 3098
- Richiesto refactored ('costanti'), le costanti sono ora disponibili direttamente dai rispettivi moduli. (James M Snell) # 6534
- stream: prestazioni readable.read () migliorate fino al 70%. (Brian White) # 7077
- : setImmediate () è ora fino al 150% più veloce in alcune situazioni. (Andras) # 6436
- util: aggiunta un'opzione breakLength a util.inspect () per controllare il modo in cui gli oggetti vengono formattati attraverso le linee. (cjihrig) # 7499
- v8-inspector: è stato aggiunto il supporto sperimentale per il debug di Node.js tramite il protocollo inspector. (Ali Ijaz Sheikh) # 6792
- Nota: questa funzione è sperimentale e potrebbe essere modificata o rimossa.
- Puoi provare questa funzione eseguendo Node.js con il flag --inspect.
Timer
Novità nella versione 6.0.0:
- Buffer:
- I nuovi costruttori di buffer sono stati aggiunti # 4682 e # 5833.
- I costruttori esistenti di Buffer () e SlowBuffer () sono stati deprecati nei documenti n. 4682 e 5833.
- Le API del buffer precedentemente deprecate sono state rimosse # 5048, # 4594.
- Miglioramento della gestione degli errori n. 4514.
- È stato aggiunto il metodo Buffer.prototype.lastIndexOf () # 4846.
- Cluster:
- Worker emesso come primo argomento nell'evento 'messaggio' # 5361.
- La proprietà worker.exitedAfterDisconnect sostituisce worker.suicide # 3743.
- Console:
- Chiamare console.timeEnd () con un'etichetta sconosciuta ora emette un avviso di processo anziché lanciare # 5901.
- Crypto:
- Miglioramento della gestione degli errori n. 3100, n. 5611.
- Associazioni di classi di certificati semplificate n. 5382.
- Controllo migliorato sulla modalità FIPS # 5181.
- L'overloading di pbkdf2 digest è deprecato # 4047.
- Dipendenze:
- Reintroduci il supporto per la compilazione di c-ares condivisi n. 5775.
- V8 aggiornato a 5.0.71.35 # 6372.
- DNS:
- Aggiungi l'API dns.resolvePtr () per eseguire query sui record PTR DNS n. 4921.
- Domini:
- Cancella stack quando nessun gestore errori # 4659.
- Eventi:
- L'oggetto EventEmitter.prototype._events non eredita più da Object.prototype # 6092.
- I metodi EventEmitter.prototype.prependListener () ed EventEmitter.prototype.prependOnceListener () sono stati aggiunti # 6032.
- File System:
- I metodi fs.realpath () e fs.realpathSync () sono stati aggiornati per utilizzare un'implementazione basata su libuv più efficiente. Questa modifica include la rimozione dell'argomento della cache e il metodo può generare nuovi errori # 3594.
- Le API di FS ora possono accettare e restituire percorsi come Buffers # 5616.
- Gestione degli errori e miglioramenti nella verifica del tipo # 5616, # 5590, # 4518, # 3917.
- l'interfaccia di stringa di fs.read è obsoleta # 4525.
- HTTP:
- 'clientError' può ora essere utilizzato per restituire errori personalizzati da un server HTTP # 4557.
- Moduli:
- La directory corrente ora ha la priorità per le ricerche locali # 5689.
- I collegamenti simbolici vengono mantenuti quando richiedono i moduli # 5950.
- netto:
- I suggerimenti DNS non impostano più implicitamente # 6021.
- Miglioramento della gestione degli errori e del controllo dei tipi # 5981, # 5733, # 2904.
- OS X:
- MACOSX_DEPLOYMENT_TARGET è stato espulso fino a 10.7 # 6402.
- Percorso:
- Controllo dei tipi migliorato # 5348.
- Processo:
- Inserisci l'API di avviso sui processi 4782.
- Genera un'eccezione quando la funzione non passata passa a nextTick # 3860.
- Querystring:
- L'oggetto restituito da querystring.parse () non eredita più da Object.prototype # 6055.
- Readline:
- Le informazioni chiave vengono emesse incondizionatamente # 6024.
- La cronologia ora può essere disabilitata in modo esplicito # 6352.
- REPL:
- L'assegnazione a _ emetterà un avviso # 5535.
- Le espressioni non saranno più completate quando eval fallisce # 6328.
- Timer:
- Fail early quando callback non è una funzione # 4362.
- Streams:
- null ora è un blocco non valido per scrivere in modalità oggetto # 6170.
- TLS:
- Rinomina 'clientError' a 'tlsClientError' # 4557.
- SHA1 utilizzato per sessionIdContext # 3866.
- TTY:
- Il wrapper setRawMode precedentemente deprecato viene rimosso # 2528.
- URL:
- Nome utente e password verranno eliminati da url.resolve () se l'host cambia # 1480.
- Util:
- Passa alla formattazione degli oggetti Error # 4582.
- Il metodo util._extend () è stato deprecato # 4903
- Il metodo util.log () è stato deprecato # 6161.
- Windows:
- Windows XP e Vista non sono più supportati # 5167.
- Zlib:
- Sono stati apportati numerosi miglioramenti all'elaborazione di Zlib # 5883 e # 5707.
Requisiti :
- Python
I commenti non trovato