Node.js ay isang bukas na mapagkukunan at ganap na libreng software na nagbibigay kapangyarihan sa mga web developer na bumuo ng mga scalable at mabilis na mga programa sa network. Ang pagiging batay sa runtime ng Chrome ng Chrome, ang software na Node.js ay lubhang mabisa at magaan, lalo na dahil gumagamit ito ng modelo ng I / O na hindi humahadlang sa kaganapan.
Ang nangungunang plataporma para sa pagpapatakbo ng server-side JavaScript code
Node.js ay kasalukuyang itinuturing na nangungunang plataporma para sa pagpapatakbo ng server-side JavaScript code, na ginagamit sa produksyon sa mga malalaking kumpanya tulad ng Google, eBay, Yahoo, LinkedIn, Microsoft, Cloud9 at marami pang iba.
Ang ipinag-uutos na halimbawa
Ang sumusunod na code ay lilikha ng isang simpleng web server na tumutugon sa "Hello World" para sa bawat kahilingan.
var http = require ('http');
http.createServer (function (req, res) {
res.writeHead (200, {'Content-Type': 'text / plain'});
res.end ('Hello Worldn');
}). makinig (1337, '127.0.0.1');
console.log ('Server na tumatakbo sa http://127.0.0.1:1337/');
Upang mapatakbo ang HTTP server, magkakaroon ka ng code sa itaas sa isang file na tinatawag na & ldquo; example.js & rdquo; (walang mga panipi) at isagawa ito gamit ang command na node mula sa terminal emulator:
% node example.js
Ang server ay tumatakbo sa http://127.0.0.1:1337/
Mga sinusuportahang operating system
Node.js ay isang multi-platform na aplikasyon na matagumpay na sinubukan sa ilalim ng maraming mga distribusyon ng GNU / Linux, kabilang ang Debian, Ubuntu, Arch Linux, Fedora, Red Hat Enterprise Linux, openSUSE, Mageia, Slackware, at iba pa, pati na rin tulad ng sa komersyal na Mac OS X at Microsoft Windows operating system. Ang parehong 64-bit at 32-bit na set ng pagtuturo ng mga arkitektura ay sinusuportahan sa oras na ito.
Sa ilalim ng hood, kinakailangan at availability
Tulad ng nabanggit, ito ay isang multi-platform software. Maaaring ma-download bilang pre-built installer para sa Mac OS X, GNU / Linux at Microsoft Windows operating system, pati na rin ang isang unibersal na archive ng mapagkukunan na maaaring naipon at mai-install sa halos anumang operating system kung saan ang Python ay suportado. >
Ano ang bago sa paglabas na ito:
- console:
- Ang paraan ng console.timeLog () ay naipatupad. # 21312
- deps:
- Mag-upgrade sa libuv 1.22.0. # 21731
- Mag-upgrade sa ICU 62.1 (Unicode 11, CLDR 33.1). # 21728
- http:
- Nagdagdag ng suporta para sa pagpasa sa parehong mga pagpipilian sa timeout at ahente sa http.request. # 21204
- inspector:
- Ilantad ang orihinal na console API sa nangangailangan ('inspector') na console. # 21659
- napi:
- Nagdagdag ng pang-eksperimentong suporta para sa mga function na nakikitungo sa mga numero ng bigint. # 21226
- proseso:
- Ipinatupad ang proseso.hrtime.bigint (). # 21256
- Nagdagdag ng argumento ng - command line ng linya upang i-set ang pamagat ng proseso sa startup. # 21477
- trace_events:
- Nagdagdag ng metadata ng process_name. # 21477
- Nagdagdag ng bagong mga collaborator
- codebytere - Shelley Vohr
Ano ang bago sa bersyon 10.0.0:
- Buong suporta para sa N-API
- Madaling pagsisimula sa Time-Travel Debugging sa pamamagitan ng isang bagong Visual Studio Code Extension
- Suporta ng TTD para sa mga generator at async function
- Suporta para sa Inspector protocol
- Tumaas na katatagan at iba pang mga iba't ibang mga pagpapahusay
Ano ang bagong sa bersyon:
- async_hooks:
- magdagdag ng mga kaganapan sa pagsubaybay sa mga async_hooks (Andreas Madsen) # 15538
- magdagdag ng mga uri ng provider para sa net server (Andreas Madsen) # 17157
- console:
- console.debug ay maaari na ngayong magamit sa labas ng inspector (Benjamin Zaslavsky) # 17033
- deps:
- upgrade libuv sa 1.18.0 (cjihrig) # 17282
- patch V8 to 6.2.414.46 (Myles Borins) # 17206
- module:
- module.builtinModules ay babalik sa isang listahan ng mga built in modules (Jon Moss) # 16386
- n-api:
- magdagdag ng katulong para sa mga addon upang makuha ang loop ng kaganapan (Anna Henningsen) # 17109
- proseso:
- process.setUncaughtExceptionCaptureCallback ay maaari na ngayong magamit upang i-customize ang pag-uugali para sa --abort-on-uncaught-exception (Anna Henningsen) # 17159
- Ang isang humahawak ng signal ay nakakatanggap na ngayon ng signal code na nag-trigger sa handler. (Robert Rossmann) # 15606
- src:
- stream:
- writable.writableHighWaterMark at readable.readableHighWaterMark ay ibabalik ang mga halaga ng stream object ay instantiated sa (Calvin Metcalf) # 12860
- Nagdagdag ng bagong mga collaborator
- maclover7 Jon Moss
- guybedford Guy Bedford
- hashseed Yang Guo
Ang mga embedders ay maaari na ngayong gumamit ng Node :: CreatePlatform upang lumikha ng isang halimbawa ng NodePlatform (Cheng Zhao) # 16981
Ano ang bago sa bersyon 9.2.0:
- crypto:
- Suporta ng gusali na may parehong 1.1.0 at 1.0.2 (David Benjamin) # 16130
- fs:
- fs.realpathSync.native at fs.realpath.native ay nakalantad na ngayon (Ben Noordhuis) # 15776
- proseso:
- ilantad ang process.ppid (cjihrig) # 16839
Ano ang bago sa bersyon 8.5.0:
- bumuo:
- Ang mga snapshot ay muling pinagana sa V8 # 14875
- console:
- Ipatupad ang minimal console.group (). # 14910
- deps:
- upgrade libuv sa 1.14.1 # 14866
- i-update anghttp2 sa v1.25.0 # 14955
- dns:
- Magdagdag ng pagpipilian sa verbatim sa dns.lookup (). Kapag totoo, ang mga resulta mula sa DNS resolver ay ipinasa sa as-ay, nang walang reshuffling na Node.js kung hindi man ay na inilalagay IPv4 address bago IPv6 address. # 14731
- fs:
- magdagdag ng fs.copyFile at fs.copyFileSync na nagbibigay-daan para sa mas mahusay na pagkopya ng mga file. # 15034
- inspector:
- Paganahin ang mga bakanteng async stack # 13870
- module:
- Magdagdag ng suporta para sa ESM. Ito ay kasalukuyang nasa likod ng bandang -experimental-modules at nangangailangan ng extension ng .mjs. node - eksperimental-modules index.mjs # 14369
- napi:
- ipatupad ang pangako # 14365
- os:
- Magdagdag ng suporta para sa CIDR notasyon sa output ng networkInterfaces () na paraan. # 14307
- perf_hooks:
- Isang paunang pagpapatupad ng API Pagganap ng Pagganap para sa Node.js. Ito ang parehong Pagganap Timing API na ipinatupad ng mga modernong browser na may ilang mga tiyak na katangian ng Node.js. Ipinatupad ang pamantayan ng User Timing () at sukatan () API. # 14680
- tls:
- maramihang PFX sa createSecureContext # 14793
- Nagdagdag ng mga bagong collaborator:
- BridgeAR - Ruben Bridgewater
Ano ang bago sa bersyon 8.3.0:
- Ang V8 engine ay na-upgrade na sa bersyon 6.0, na may malaking pagbabago ng profile ng pagganap.
- Iba pang mga kapansin-pansing pagbabago:
- DNS:
- Ang mga resolusyon ng independiyenteng DNS resolver ay sinusuportahan ngayon, na may suporta para sa pagkansela ng mga kaukulang kahilingan.
- N-API:
- Ang maraming mga function ng N-API para sa paghawak ng error ay binago upang suportahan ang pagtatalaga ng mga error code.
- REPL:
- Ang suportang autocompletion para sa nangangailangan () ay napabuti.
- Mga Utility:
- Ang WHATWG Ang Encoding Standard (TextDecoder at TextEncoder) ay ipinatupad bilang isang pang-eksperimentong tampok.
Ano ang bago sa bersyon 8.1.3:
- I-stream ang Dalawang mga regression sa stream stream na naayos:
- Ang pangwakas na kaganapan ay palaging ipapalabas pagkatapos ng error event kung ang isa ay ipinapalabas: [0a9e96e86c] # 13850
- Sa mode ng object, ang mga nabasa na stream ay maaari na ngayong gumamit ng undefined again. [5840138e70] # 13760
Ano ang bago sa bersyon 8.1.2:
- Ayusin ang mga nasira na mga proseso ng pag-aalis ng.release sa 8.1.1 na nagiging sanhi ng kabiguang sumulat ng mga katutubong mga add-on sa mga platform maliban sa Windows. Ito ay isang pag-aayos sa proseso ng pag-build ng Node.js upang walang karagdagang mga code na isinagawa kasama sa itaas ng 8.1.1.
Ano ang bago sa bersyon 7.7.1:
- [c8e34b61f6] - bumuo: magdagdag ng mga nawawalang src / tracing ng mga file ng header (Daniel Bevenius) # 10851
- [96f55f9e59] - src: ilipat ang trace_event.h isama sa panloob na header (Ben Noordhuis) # 10959
- [30c80cbe6f] - src: ayusin ang paglilinis ng TracingController (Jason Ginchereau) # 10623
- [b89b2a7d36] - src: laging magsisimulang sumubaybay sa controller sa agent (Matt Loring) # 10507
- [54e55e05ca] - test: gumawa ng test-intl-no-icu-data na mas matatag (Michael Zasso) # 10992
- [7b253eb3ed] - pagsubok: dagdag na katatagan para sa test-trace-event (Rich Trott) # 11065
- [3dc4a5f1f4] - pagsubaybay: pag-aayos -Wunused-private-field warning (Santiago Gimeno) # 10416
- [8a918bf411] - pagsubaybay: ayusin -Pag-alis ng Wreorder (Santiago Gimeno) # 10416
Ano ang bago sa bersyon 7.4.0:
- buffer:
- Pagbutihin ang pagganap ng laang-gugulin ng Buffer ng ~ 11%. (Brian White) # 10443
- Pagbutihin ang pagganap ng Buffer.from () sa pamamagitan ng ~ 50%. (Brian White) # 10443
- mga kaganapan: Pagbutihin ang pagganap ng EventEmitter.once () sa pamamagitan ng ~ 27%. (Brian White) # 10445
- fs: Payagan ang pagpasa sa Uint8Array sa mga paraan ng fs kung saan sinusuportahan ang mga Buffers. (Anna Henningsen) # 10382
- http: Pagbutihin ang pagganap ng http server sa pamamagitan ng ~ 7%. (Brian White) # 6533
- npm: Mag-upgrade sa v4.0.5 (Kat Marchan) # 10330
Ano ang bago sa bersyon 7.2.1:
- buffer:
- Naibalik ang runtime deprecation ng pagtawag Buffer () nang walang bago. (Anna Henningsen) # 9529
- Naayos na buffer.transcode () para sa pag-encode ng single-byte na karakter sa UCS2. (Anna Henningsen) # 9838
- nangangako: - Ang mga babala na ngayon ay nagbibigay ng mga kapaki-pakinabang na stacktrace para sa mga Babala na pangako. (Anna Henningsen) # 9525
- repl: Nakatakdang isang bug na pumipigil sa tamang pag-parse ng mga function ng generator. (Teddy Katz) # 9852
- V8: Naayos ang isang makabuluhang pagsasaayos ng pagganap. (Franziska Hinkelmann) # 9730
Ano ang bago sa bersyon 7.2.0:
- crypto: Ang mga paraan ng pag-decode setAuthTag () at i-set ngayon ng setAAD.
- dns: Ipinatupad {ttl: totoo} para sa resolve4 () at resolve6 ().
- libuv: Mag-upgrade sa v1.10.1
- Fixed isang potensyal na buffer overflow kapag sumusulat ng data sa console sa Windows 10. (CVE-2016-9551)
- na proseso: Nagdagdag ng bagong panlabas na ari-arian sa data na ibinalik ng memoryUsage ().
- tls: Fixed isang memory leak kapag nagsusulat ay naka-queued sa TLS connection na nawasak sa panahon ng pagkakamay.
- V8 (dep): Mag-upgrade sa v5.4.500.43
- v8: Ang data na ibinalik ng getHeapStatistics () ngayon ay nagsasama ng tatlong bagong field: malloced_memory, peak_malloced_memory, at does_zap_garbage.
Ano ang bago sa bersyon 6.4.0:
- bumuo: mga zlib na simbolo at mga karagdagang simbolo ng OpenSSL ay nahantad na ngayon sa mga platform ng Windows. (Alex Hultman) # 7983 at # 7576
- child_process, cluster: Ang mga proseso ng pag-iwas sa bata at mga manggagawa sa kumpol ngayon ay sinusuportahan ang configuration ng stdio. (Colin Ihrig) # 7811 at # 7838
- child_process: argv [0] ay maaari na ngayong itakda sa mga di-makatwirang mga halaga sa mga proseso ng pagbubuo. (Pat Pannuto) # 7696
- fs: fs.ReadStream ngayon ay naglalantad sa bilang ng mga byte na nabasa na sa ngayon. (Linus Unneback) # 7942
- repl: Sinusuportahan na ngayon ng REPL ang mode ng editor. (Prince J Wesley) # 7275
- gamitin: siyasatin () ay maaari na ngayong i-configure nang globally gamit ang util.inspect.defaultOptions. (Roman Reiss) # 8013
Ano ang bago sa bersyon 6.3.0:
- buffer: Idinagdag buffer.swap64 () upang makadagdag sa swap16 () & amp; swap32 (). (Zach Bjornson) # 7157
- bumuo: Nagdagdag ng bagong mga pagpipilian sa pag-configure para sa pagbubuo ng Node.js bilang isang nakabahaging library. (Stefan Budeanu) # 6994
- Ang mga pagpipilian ay: - binabahagi, - walang-v8-platform & amp; - walang-bundle-v8.
- crypto: Na-update ang mga root certificate. (Ben Noordhuis) # 7363
- debugger: Ang address ng server ay maisasaayos ngayon sa pamamagitan ng --debug = :. (Ben Noordhuis) # 3316
- npm: Naka-upgrade na npm sa v3.10.3 (Kat Marchan) # 7515 & amp; (Rebecca Turner) # 7410
- readline: Nagdagdag ng pagpipilian sa prompt sa tagapagbuo ng readline. (Evan Lucas) # 7125
- repl / vm: sigint / ctrl + c ay magsisimula na sa walang katapusan na mga loop nang hindi humihinto sa halimbawa ng Node.js. (Anna Henningsen) # 6635
- src:
- Nagdagdag ng isang node :: FreeEnvironment public C ++ API. (Cheng Zhao) # 3098
- Kinailangan ng refactored ('constants'), ang mga constants ay magagamit nang direkta mula sa kani-kanilang mga modules. (James M Snell) # 6534
- stream: Pinahusay na readable.read () na pagganap ng hanggang sa 70%. (Brian White) # 7077
- timers: setImmediate () ay ngayon hanggang sa 150% na mas mabilis sa ilang mga sitwasyon. (Andras) # 6436
- gamitin: Nagdagdag ng pagpipiliang breakLength sa util.inspect () upang kontrolin kung paano naka-format ang mga bagay sa mga linya. (cjihrig) # 7499
- v8-inspector: Ang pang-eksperimentong suporta ay naidagdag para sa pag-debug sa Node.js sa protocol ng inspector. (Ali Ijaz Sheikh) # 6792
- Tandaan: Ang tampok na ito ay pang-eksperimentong, at maaaring mabago o maalis.
- Maaari mong subukan ang tampok na ito sa pamamagitan ng pagpapatakbo ng Node.js gamit ang - flag na pinaniniwalaang.
Ano ang bago sa bersyon 6.0.0:
- Buffer:
- Ang mga tagabuo ng Bagong Buffer ay idinagdag # 4682 at # 5833.
- Ang mga umiiral nang Buffer () at SlowBuffer () na mga constructor ay hindi na ginagamit sa mga doc # 4682 at # 5833.
- Naunang tinanggal ang mga naunang Buffer API na # 5048, # 4594.
- Pinabuting paghawak ng error # 4514.
- Ang Buffer.prototype.lastIndexOf () na paraan ay idinagdag # 4846.
- Cluster:
- Manggagawang manggagawa bilang unang argumento sa kaganapan ng 'mensahe' # 5361.
- Pinapalitan ng property.exitedAfterDisconnect na ari-arian ang worker.suicide # 3743.
- Console:
- Ang pagtawag sa console.timeEnd () na may isang hindi kilalang label ngayon ay nagpapalabas ng babala sa proseso sa halip na pagkahagis # 5901.
- Crypto:
- Pinabuting paghawak ng error # 3100, # 5611.
- Pinasimple ang mga bindings sa klase ng Certificate # 5382.
- Pinahusay na kontrol sa FIPS mode # 5181.
- ang pbkdf2 digest overloading ay deprecated # 4047.
- Dependencies:
- Ipatupad ang mga ibinahaging c-ares bumuo ng suporta # 5775.
- V8 ay na-update sa 5.0.71.35 # 6372.
- DNS:
- Magdagdag ng dns.resolvePtr () API upang magtanong ng mga plain DNS PTR record # 4921.
- Mga Domain:
- I-clear ang stack kapag walang error handler # 4659.
- Mga Kaganapan:
- Ang EventEmitter.prototype._events object ay hindi na nagmamana mula sa Object.prototype # 6092.
- Ang Mga Naganap na EventEmitter.prototype.prependListener () at EventEmitter.prototype.prependOnceListener () ay idinagdag # 6032.
- Sistema ng File:
- Ang fs.realpath () at fs.realpathSync () na mga pamamaraan ay na-update upang gumamit ng mas mahusay na pagpapatupad na batay sa libuv. Kasama sa pagbabagong ito ang pag-alis ng argumento ng cache at ang paraan ay maaaring magtapon ng mga bagong error # 3594.
- Maaari na ngayong tanggapin at babalik ng FS apis ang mga landas bilang Mga Buffers # 5616.
- Error sa paghawak at uri ng mga pagpapahusay sa pag-check # 5616, # 5590, # 4518, # 3917.
- Ang interface ng strings ng fs.read ay hindi na ginagamit # 4525.
- HTTP:
- Ang 'clientError' ay maaari na ngayong magamit upang ibalik ang mga custom na error mula sa isang HTTP server # 4557.
- Mga Module:
- Kasalukuyang itinuturo ang kasalukuyang direktoryo para sa mga lokal na paghahanap # 5689.
- Ang mga simbolikong link ay napanatili kapag nangangailangan ng mga module # 5950.
- Net:
- Ang mga pahiwatig ng DNS ay hindi na nakalagay nang hiwalay sa # 6021.
- Pinahusay na paghawak ng error at uri ng pag-tsek # 5981, # 5733, # 2904.
- OS X:
- MACOSX_DEPLOYMENT_TARGET ay na-bumped nang hanggang 10.7 # 6402.
- Path:
- Pag-check sa pinahusay na uri ng # 5348.
- Proseso:
- Ipakilala ang mga babala sa proseso API # 4782.
- Magtapon ng eksepsiyon kapag hindi lumipat ang di-function sa susunod naTick # 3860.
- Querystring:
- Ang object na ibinalik ng querystring.parse () ay hindi na inherits mula sa Object.prototype # 6055.
- Readline:
- Ang pangunahing impormasyon ay pinalabas nang walang kondisyon # 6024.
- Maaaring tahasan na ngayon ang kasaysayan ng # 6352.
- REPL:
- Ang assignment sa _ ay maglalabas ng isang babala # 5535.
- Hindi na makukumpleto ang mga expression kapag ang eval ay nabigo # 6328.
- Mga Timer:
- Mabigo nang maaga kapag ang callback ay hindi isang function # 4362.
- Mga Stream:
- null na ngayon ay isang di-wastong tipak upang isulat sa mode na pang-object # 6170.
- TLS:
- I-rename ang 'clientError' sa 'tlsClientError' # 4557.
- SHA1 na ginamit para sa sessionIdContext # 3866.
- TTY:
- Ang dating hindi na ginagamit na setRawMode wrapper ay inalis na # 2528.
- URL:
- Ang username at password ay bababa sa pamamagitan ng url.resolve () kung ang host ay nagbabago # 1480.
- Magagamit:
- Mga Pagbabago sa pag-format ng bagay na error # 4582.
- Ang paraan ng util._extend () ay hindi na ginagamit # 4903
- Ang paraan ng util.log () ay hindi na ginagamit # 6161.
- Windows:
- Hindi na suportado ang Windows XP at Vista # 5167.
- Zlib:
- Maraming mga pagpapabuti ang ginawa sa pagpoproseso ng Zlib # 5883 at # 5707.
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan