Node.js on avoin lähdekoodi ja täysin ilmainen ohjelmisto, joka mahdollistaa web-kehittäjien rakentaa skaalautuvia ja nopeita verkko-ohjelmia. Node.js-ohjelmisto perustuu Chromen JavaScript-suoritusaikaan, ja se on erittäin tehokas ja kevyt, varsinkin koska se käyttää ei-estävää, tapahtumavetoista I / O-mallia.
Yläasema palvelinpuolen JavaScript-koodin suorittamiseen
Node.js pidetään parhaillaan palvelimen puoleisen JavaScript-koodin ylläpitäjänä, jota käytetään tuotannossa suurissa yrityksissä kuten Google, eBay, Yahoo, LinkedIn, Microsoft, Cloud9 ja paljon muuta.
Pakollinen esimerkki
Seuraava koodi luo yksinkertaisen WWW-palvelimen, joka vastaa "Hello World" -toiminnolla jokaisesta pyynnöstä.
var http = vaatia ('http');
http.createServer (funktio (req, res) {
res.writeHead (200, {'Content-Type': 'text / plain'});
res.end ('Hello Worldn');
}). kuuntele (1337, '127.0.0.1');
console.log ('Palvelin käynnissä osoitteessa http://127.0.0.1:1337/');
Jotta HTTP-palvelin voidaan suorittaa, sinun on yllä oleva koodi tiedostoon & ldquo; example.js & rdquo; (ilman lainausmerkkejä) ja suorita se solmupyynnön avulla pääteemulaattorilta:
% solmua example.js
Palvelin, joka toimii osoitteessa http://127.0.0.1:1337/
Tuetut käyttöjärjestelmät
Node.js on monen alustan sovellus, joka on testattu menestyksekkäästi lukuisissa GNU / Linux-jakeluissa, mukaan lukien Debian, Ubuntu, Arch Linux, Fedora, Red Hat Enterprise Linux, openSUSE, Mageia, Slackware ja muut kuten kaupallisissa Mac OS X- ja Microsoft Windows -käyttöjärjestelmissä. Tällä hetkellä tuetaan sekä 64-bittisiä että 32-bittisiä käskyjoukon arkkitehtuureja.
Kannen alla, vaatimukset ja saatavuus
Kuten mainittiin, tämä on monen alustan ohjelmisto. Se voidaan ladata valmiiksi asennettuina asennusohjelmina Mac OS X-, GNU / Linux- ja Microsoft Windows -käyttöjärjestelmille sekä yleislähdetiedosto, joka voidaan koota ja asentaa lähes mihin tahansa käyttöjärjestelmään, johon Python on tuettu.
Uutta strong>:
- konsoli:
- Console.timeLog () -menetelmä on toteutettu. # 21312
- deps:
- Päivitä versioon libuv 1.22.0. # 21731
- Päivitä ICU 62.1 (Unicode 11, CLDR 33.1). # 21728
- http:
- Lisätty tuki aikakatkaisun ja agentin vaihtoehtojen siirtämiseen http.requestille. # 21204
- tarkastaja:
- Näytä alkuperäinen konsoli-sovellusliittymä require ('inspector'). # 21659
- napi:
- Lisätty kokeellinen tuki toiminnoille, jotka käsittelevät suuria numeroita. # 21226
- prosessi:
- Process.hrtime.bigint () -menetelmä on toteutettu. # 21256
- Lisätty --title komentorivi argumentti asettaa prosessin otsikko käynnistyksen yhteydessä. # 21477
- trace_events:
- Lisätty prosessinimen metatiedot. # 21477
- Lisätty uusia yhteistyökumppaneita li>
- codebytere - Shelley Vohr
- Täydellinen tuki N-API: lle
- Helppo aloittaa Time-Travel -vianmääritystoiminnon avulla uuden Visual Studio Code Extensionin avulla
- TTD-tuki generaattoreille ja asynkäyttötoiminnoille
- Tuki Inspector-protokollalle
- Lisääntynyt vakaus ja muut erilaiset parannukset
Uutta strong>
Uutta strong> versiona:
- async_hooks:
- lisää jäljitystuotteet async_hooks (Andreas Madsen) # 15538
- lisää palvelintyypit verkkopalvelimeen (Andreas Madsen) # 17157
- konsoli:
- console.debug voidaan nyt käyttää tarkastajan (Benjamin Zaslavsky) ulkopuolella # 17033
- deps:
- Päivitä libuv 1.18.0: ään (cjihrig) # 17282
- korjaustiedosto V8 - 6.2.414.46 (Myles Borins) # 17206
- moduuli:
- module.builtinModules palauttaa luettelon sisäänrakennetuista moduuleista (Jon Moss) # 16386
- n-api:
- lisää avustaja addonille saadaksesi tapahtumasilmukan (Anna Henningsen) # 17109
- prosessi:
- prosessi.setUncaughtExceptionCaptureCallback voidaan nyt muokata käyttäytymiseen - "unlocked-exception" (Anna Henningsen) # 17159
- Signaalinkäsittelylaite voi nyt vastaanottaa käsittelijän laukaisevan signaalikoodin. (Robert Rossmann) # 15606
- src:
- Sulautetut käyttäjät voivat nyt käyttää Node :: CreatePlatformia luomaan NodePlatform (Cheng Zhao) -esimerkin # 16981
- stream:
- writeable.writableHighWaterMark ja readable.readableHighWaterMark palauttavat arvot stream-objektin instantiated (Calvin Metcalf) # 12860
- Lisätty uusia yhteistyökumppaneita li>
- maclover7 Jon Moss
- guybedford Guy Bedford
- hashseed Yang Guo
- crypto
Uutta strong> versiossa 9.2.0
Uutta strong> versio 8.5.0:
- build:
- Valokuvia on nyt otettu uudelleen käyttöön V8 # 14875 -kohdassa
- konsoli:
- Toteuta minimaalinen console.group (). # 14910
- deps:
- Päivitä libuv 1.14.1: ään # 14866
- Päivitä nghttp2 v1.25.0 # 14955
- dns:
- Lisää todellinen vaihtoehto dns.lookup (): iin. Kun tosi on, DNS-resolverin tulokset siirretään as-is -muodossa ilman uudelleenjärjestelyä, jonka mukaan Node.js muussa tapauksessa tuo IPv4-osoitteet ennen IPv6-osoitteita. # 14731
- FS:
- Lisää fs.copyFile ja fs.copyFileSync, joka mahdollistaa tiedostojen tehokkaamman kopioinnin. # 15034
- tarkastaja:
- Ota käyttöön asynkolun jäljet # 13870
- moduuli:
- Lisää tukea ESM: lle. Tämä on tällä hetkellä --experimental-modules-lippua takana ja vaatii .mjs-laajennuksen. solmu --experimental-modules index.mjs # 14369
- napi:
- toteuta lupaus # 14365
- OS:
- Lisää CIDR-merkinnän tuki verkonInterfaces () -menetelmään. # 14307
- perf_hooks:
- Suoritusajoitus-sovellusliittymän ensimmäinen toteutus Node.js. Tämä on sama Suoritusajoitus-sovellusliittymä, jota modernit selaimet käyttävät useilla Node.js-ominaisuuksilla. Käyttäjän ajoitusmerkki () ja mittaus () -sovellusliittymät toteutetaan. # 14680
- TLS:
- useita PFX-tiedostoja createSecureContext # 14793
- Lisätty uusia yhteistyökumppaneita:
- BridgeAR - Ruben Bridgewater
Uutta strong> versiossa 8.3.0:
- V8-moottori on päivitetty versioon 6.0, jolla on merkittävästi muuttunut tehokkuusprofiili.
- Muita merkittäviä muutoksia:
- DNS:
- Riippumattomat DNS-resolveritapahtumat tuetaan nyt, ja ne tukevat vastaavien pyyntöjen peruuttamista.
- N-API:
- Virheenkäsittelyn useat N-API-toiminnot on muutettu tukemaan virhekoodien osoittamista.
- KORV:
- Vaatimuksen () autentikoinnin tuki on parannettu.
- Utilities:
- WHATWG-koodausstandardi (TextDecoder ja TextEncoder) on toteutettu kokeelliseksi ominaisuudeksi.
Uutta strong> versiossa 8.1.3:
- Stream Kaksi regressiota stream-moduulilla on korjattu:
- Lopetustapahtuma lähetetään aina virhetapahtuman jälkeen, jos lähetetään: [0a9e96e86c] # 13850
- Objektimuodossa luettavat tietovälineet voivat nyt käyttää määrittelemätöntä uudelleen. [5840138e70] # 13760
Uutta strong> versiossa 8.1.2:
- Korjaa rikkoutuneet prosessin.tulostusominaisuudet kohdassa 8.1.1, mikä aiheuttaa epäonnistuneiden natiivien lisäosien kääntämisen muilla alustoilla kuin Windowsissa. Tämä on korjaus Node.js -rakentamisprosessissa, joten 8.1.1: n yläpuolella ei ole ylimääräisiä koodikomiteoita.
Uutta strong> versiossa 7.7.1:
- [c8e34b61f6] - build: Lisää puuttuvat src / jäljitysotsikot (Daniel Bevenius) # 10851
- [96f55f9e59] - src: siirrä trace_event.h sisällytettävä sisäiseen otsikkoon (Ben Noordhuis) # 10959
- [30c80cbe6f] - src: korjaa TracingController cleanup (Jason Ginchereau) # 10623
- [b89b2a7d36] - src: alusta aina jäljitysohjain agenttiin (Matt Loring) # 10507
- [54e55e05ca] - testi: tee test-intl-no-icu-data vankempi (Michael Zasso) # 10992
- [7b253eb3ed] - testi: lisää testausjäljen (Rich Trott) tarkkuutta # 11065
- [3dc4a5f1f4] - jäljitys: korjaus -Wunused-private-field varoitus (Santiago Gimeno) # 10416
- [8a918bf411] - jäljitys: korjaus -Wreorder-varoitus (Santiago Gimeno) # 10416
Uutta strong> versio 7.4.0:
- puskuri:
- Puskurijakelun tehokkuuden parantaminen ~ 11%: lla. (Brian White) # 10443
- Paranna Buffer.from (): n suorituskykyä ~ 50%: lla. (Brian White) # 10443
- tapahtumat: Parantaa EventEmitter.once (): n suorituskykyä ~ 27%: lla. (Brian White) # 10445
- fs: Salli kulkea Uint8Array fs-menetelmille, joissa Buffereita tuetaan. (Anna Henningsen) # 10382
- http: Parantaa http-palvelimen suorituskykyä ~ 7%: lla. (Brian White) # 6533
- npm: Päivitä versioon v4.0.5 (Kat Marchan) # 10330
Uutta strong> versio 7.2.1:
- puskuri:
- Vastasi soittavan puskurin () käyttämättömän käytön hylkäämisen ilman uutta. (Anna Henningsen) # 9529
- Kiinteä buffer.transcode () yksitavuisen merkkikoodauksen UCS2: lle. (Anna Henningsen) # 9838
- lupaus: --Trace-varoitukset tuottavat nyt hyödyllisiä stacktraceja Promise-varoituksille. (Anna Henningsen) # 9525
- repl: Korjattu virhe, joka estää generaattorifunktioiden oikean jäsentämisen. (Teddy Katz) # 9852
- V8: Korjattu merkittävä suorituskyvyn regressio. (Franziska Hinkelmann) # 9730
Uutta strong> versio 7.2.0:
- crypto: Palautusmenetelmät setAuthTag () ja setAAD nyt palauttavat tämän.
- dns: Toteutettu {ttl: true} ratkaise4 () ja resolve6 ().
- libuv: Päivitä versioon v1.10.1
- Korjattu potentiaalinen puskurin ylivuoto kirjoitettaessa tietoja konsoliin Windows 10: ssä. (CVE-2016-9551)
- prosessi: lisätään uusi ulkoinen ominaisuus muistiin tallennettuihin tietoihin ().
- tls: Kiinteä muistivuoto, kun kirjoitukset oli jonossa TLS-yhteydellä, joka tuhoutui kättelyn aikana.
- V8 (dep): Päivitä versioon v5.4.500.43
- v8: getHeapStatistics (): n palauttamat tiedot sisältävät nyt kolme uutta kenttää: malloced_memory, peak_malloced_memory ja does_zap_garbage.
Uutta strong> versio 6.4.0:
- rakentaa: zlib-symboleja ja muita OpenSSL-symbolia paljastetaan nyt Windows-alustoilla. (Alex Hultman) # 7983 ja # 7576
- child_process, klusteri: Forked-lapsiprosessit ja klusterityöntekijät tukevat nyt stdio-kokoonpanoa. (Colin Ihrig) # 7811 ja # 7838
- child_process: argv [0] voidaan nyt asettaa mielivaltaisille arvoille kuteissa. (Pat Pannuto) # 7696
- fs: fs.ReadStream paljastaa nyt tähän mennessä lukemien tavujen määrän. (Linus Unneback) # 7942
- repl: REPL tukee nyt editointitilaa. (Prince J Wesley) # 7275
- util: inspect () voidaan nyt määrittää maailmanlaajuisesti käyttämällä util.inspect.defaultOptions-asetuksia. (Roman Reiss) # 8013
Uutta strong> versio 6.3.0:
- puskurin: Lisätty buffer.swap64 () täydentää swap16 () & amp; swap32 (). (Zach Bjornson) # 7157
- build: Uusia konfigurointivaihtoehtoja on lisätty rakentamaan Node.js jaettua kirjastoa. (Stefan Budeanu) # 6994
- Vaihtoehdot ovat: - jaettu, - ilman v8-alustaa & amp; --without niputetaan-V8.
- crypto: Root-todistukset on päivitetty. (Ben Noordhuis) # 7363
- debuggeri: Palvelimen osoite on nyt konfiguroitavissa --debug = :. (Ben Noordhuis) # 3316
- npm: Päivitetty npm v3.10.3 (Kat Marchan) # 7515 & amp; (Rebecca Turner) # 7410
- readline: Lisätty nopea vaihtoehto readline-konstruktorille. (Evan Lucas) # 7125
- repl / vm: sigint / ctrl + c katkeaa ääretön silmukoita pysäyttämättä Node.js-instanssia. (Anna Henningsen) # 6635
- src:
- Lisätty solmu :: FreeEnvironment julkinen C ++ API. (Cheng Zhao) # 3098
- Refactored vaatii ("vakiot"), vakioita on nyt saatavilla suoraan niiden moduuleista. (James M Snell) # 6534
- stream: Parannettu readable.read () -suorituskyky jopa 70%: lla. (Brian White) # 7077
- ajastimet: setImmediate () on nyt jopa 150% nopeampi joissakin tilanteissa. (Andras) # 6436
- util: Lisätty breakLength-vaihtoehto util.inspect () -toimintoon sen määrittämiseksi, miten objekteja muotoillaan rivien välille. (cgjig) # 7499
- v8-tarkastaja: Kokeellinen tuki on lisätty Node.js: n virheenkorjaukseen tarkistusprotokollan kautta. (Ali Ijaz Sheikh) # 6792
- Huomaa: tämä ominaisuus on kokeellinen ja sitä voidaan muuttaa tai poistaa.
- Voit kokeilla tätä toimintoa suorittamalla Node.js: n --inspect lippu.
Uutta strong> versiossa 6.0.0:
- Puskuri:
- Uusia puskurin rakentajia on lisätty # 4682 ja # 5833.
- Nykyiset puskurin () ja SlowBuffer () -rakentajat on hylätty asiakirjoissa # 4682 ja # 5833.
- Aikaisemmin vanhentuneet puskurin sovellusliittymät poistetaan # 5048, # 4594.
- Parannettu virheenkäsittely # 4514.
- Buffer.prototype.lastIndexOf () -menetelmä on lisätty # 4846.
- Cluster:
- Työntekijä lähetetään ensimmäiseksi argumentiksi "viesti" -tapahtumassa # 5361.
- Work.exitedAfterDisconnect-ominaisuus korvaa työntekijän.suicide # 3743.
- Console:
- Soittaminen console.timeEnd () tuntemattomalla etiketillä lähettää prosessiharjoituksen sijasta # 5901.
- Crypto:
- Parannettu virheenkäsittely # 3100, # 5611.
- Yksinkertaistettu varmenteen luokat-sidos # 5382.
- Parannettu FIPS-tilan valvonta # 5181.
- pbkdf2 pilkko ylikuormitus on vanhentunut # 4047.
- riippuvuuksien
- Palauta yhteinen c-ares -rakennustuki # 5775.
- V8 päivitetty versioon 5.0.71.35 # 6372.
- DNS:
- Lisää dns.resolvePtr () API kyselyyn pelkkää DNS PTR -tietoketta # 4921.
- Verkkotunnukset:
- Tyhjennä pino, kun virheenkäsittelijää ei ole # 4659.
- Tapahtumat:
- EventEmitter.prototype._events-objekti ei enää perinnäkään Object.prototype # 6092: sta.
- EventEmitter.prototype.prependListener () ja EventEmitter.prototype.prependOnceListener () -menetelmät on lisätty # 6032.
- Tiedostojärjestelmä:
- Fs.realpath () ja fs.realpathSync () -menetelmät on päivitetty käyttämään tehokkaampaa libuv-pohjaista toteutusta. Tämä muutos sisältää kätkön argumentin poistamisen ja menetelmä voi heittää uusia virheitä # 3594.
- FS apis voi nyt hyväksyä ja palauttaa polut Buffers # 5616: ksi.
- Virheiden käsittely ja tyypin tarkistusparannukset # 5616, # 5590, # 4518, # 3917.
- fs.readin merkkijono rajapinta on vanhentunut # 4525.
- HTTP:
- "ClientError" voidaan nyt käyttää palauttamaan mukautetut virheet HTTP-palvelimelta # 4557.
- Moduulit:
- Nykyinen hakemisto on nyt ensisijainen paikallisten haun # 5689 osalta.
- Symboliset linkit säilyvät, kun vaaditaan moduuleja # 5950.
- Net:
- DNS-vihjeet eivät enää implisiittisesti asetu # 6021.
- Parannettu virheenkäsittely ja tyyppitarkistus # 5981, # 5733, # 2904.
- OS X:
- MACOSX_DEPLOYMENT_TARGET on kasaantunut jopa 10,7 # 6402.
- Polku:
- Parannettu tyyppikysely # 5348.
- Process:
- Esitä prosessin varoituksia API # 4782.
- Poimi, kun toiminto ei ole toiminnassa siirretty NextTick # 3860: een.
- QueryString:
- querystring.parse () palauttaa objektin ei enää peri Object.prototype # 6055: sta.
- Readline:
- Tärkeät tiedot lähetetään ehdoitta # 6024.
- Historia voidaan nyt nimenomaan poistaa käytöstä # 6352.
- KORV:
- Tehtävä _ lähettää varoituksen # 5535.
- Lausekkeet eivät enää täyty, kun eval epäonnistuu # 6328.
- Timers:
- Varo aikaisin, kun soittopyyntö ei ole toiminto # 4362.
- Virrat:
- null on nyt virheellinen komento, joka kirjoittaa objektimuotoon # 6170.
- TLS:
- Muuta 'clientError' uudelleen 'tlsClientError' # 4557.
- SHA1 käytetään sessionIdContext # 3866: lle.
- TTY:
- Aiemmin vanhentunut setRawMode-kääre poistetaan # 2528.
- URL:
- Käyttäjänimi ja salasana pudotetaan url.resolve () jos isäntä muuttuu # 1480.
- Util:
- Muutokset virheisiin objektin muotoiluun # 4582.
- Util._extend () -menetelmä on hylätty # 4903
- Util.log () -menetelmä on hylätty # 6161.
- Windows:
- Windows XP ja Vista eivät ole enää tuettuja # 5167.
- Zlib:
- Useita parannuksia on tehty Zlib-käsittelyyn # 5883 ja # 5707.
Vaatimukset
- Python
Kommentteja ei löytynyt