Node.js 是一個開源且完全免費的軟件,它使Web開發人員能夠構建可擴展且快速的網絡程序。基於Chrome的JavaScript運行時,Node.js軟件非常高效和輕量級,特別是因為它使用非阻塞,事件驅動的I / O模型。
用於運行服務器端JavaScript代碼的頂級平台
Node.js目前被認為是運行服務器端JavaScript代碼的頂級平台,用於谷歌,eBay,雅虎,LinkedIn,微軟,Cloud9等大公司的生產。
強制性的例子
以下代碼將創建一個簡單的Web服務器,對每個請求都響應“Hello World”。
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('運行於http://127.0.0.1:1337/'的服務器);
為了運行HTTP服務器,您必須將上面的代碼放入一個名為“example.js”的文件中。 (不帶引號)並使用來自終端仿真器的node命令執行它:
%node example.js
服務器運行於http://127.0.0.1:1337/
支持的操作系統
Node.js是一個多平台應用程序,已在眾多GNU / Linux發行版中成功測試過,包括Debian,Ubuntu,Arch Linux,Fedora,Red Hat Enterprise Linux,openSUSE,Mageia,Slackware等。與商用Mac OS X和Microsoft Windows操作系統一樣。目前支持64位和32位指令集架構。
引擎蓋下,要求和可用性
如上所述,這是一個多平台軟件。它可以作為Mac OS X,GNU / Linux和Microsoft Windows操作系統的預構建安裝程序下載,也可以在幾乎任何支持Python的操作系統上編譯和安裝的通用源代碼存檔。
此版本中的新功能:
- 控制台:
- 已實施console.timeLog()方法。 #21312
- DEPS:
- 升級到libuv 1.22.0。 #21731
- 升級到ICU 62.1(Unicode 11,CLDR 33.1)。 #21728
- HTTP:
- 添加了將超時和代理選項傳遞給http.request的支持。 #21204
- 檢查員:
- 在require('inspector')。console中公開原始控制台API。 #21659
- NAPI:
- 為處理bigint數字的函數添加了實驗支持。 #21226
- 過程:
- 已實施process.hrtime.bigint()方法。 #21256
- 添加了--title命令行參數以在啟動時設置進程標題。 #21477
- trace_events:
- 添加了process_name元數據。 #21477
- 添加了新的協作者
- codebytere - Shelley Vohr
10.0.0版中的新功能:
- 完全支持N-API
- 通過新的Visual Studio代碼擴展輕鬆開始時間旅行調試
- TTD對發電機和異步功能的支持
- 支持Inspector協議
- 提高穩定性和其他各種改進
版本中的新功能:
- async_hooks:
- 將跟踪事件添加到async_hooks(Andreas Madsen)#15538
- 為網絡服務器添加提供程序類型(Andreas Madsen)#17157
- 控制台:
- console.debug現在可以在檢查員外面使用(Benjamin Zaslavsky)#17033
- DEPS:
- 將libuv升級到1.18.0(cjihrig)#17282
- 補丁V8至6.2.414.46(Myles Borins)#17206
- 模塊:
- module.builtinModules將返回內置模塊列表(Jon Moss)#16386
- 正API:
- 為插件添加助手以獲取事件循環(Anna Henningsen)#17109
- 過程:
- process.setUncaughtExceptionCaptureCallback現在可用於自定義--abort-on-uncaught-exception的行為(Anna Henningsen)#17159
- 信號處理程序現在能夠接收觸發處理程序的信號代碼。 (羅伯特羅斯曼)#15606
- 的src:
- 嵌入器現在可以使用Node :: CreatePlatform創建NodePlatform實例(程昭)#16981
- 流:
- writable.writableHighWaterMark和readable.readableHighWaterMark將返回流對象實例化的值(Calvin Metcalf)#12860
- 添加了新的協作者
- maclover7 Jon Moss
- guybedford Guy Bedford
- hashseed Yang Guo
版本9.2.0中的新功能:
- crypto:
- 支持使用1.1.0和1.0.2(David Benjamin)建造#16130
- FS
- fs.realpathSync.native和fs.realpath.native現已曝光(Ben Noordhuis)#15776
- 過程:
- 揭示process.ppid(cjihrig)#16839
8.5.0版中的新功能:
- 構建
- 現在在V8#14875 中重新啟用快照
- 控制台:
- 實現最小的console.group()。 #14910
- DEPS:
- 將libuv升級到1.14.1#14866
- 將nghttp2更新為v1.25.0#14955
- DNS:
- 向dns.lookup()添加逐字選項。如果為true,則DNS解析器的結果將按原樣傳遞,而不會重新調整Node.js,否則會將IPv4地址置於IPv6地址之前。 #14731
- FS
- 添加fs.copyFile和fs.copyFileSync,可以更有效地複製文件。 #15034
- 檢查員:
- 啟用異步堆棧跟踪#13870
- 模塊:
- 添加對ESM的支持。這當前位於--experimental-modules標誌後面,需要.mjs擴展名。 node --experimental-modules index.mjs#14369
- NAPI:
- 實施承諾#14365
- OS:
- 將對CIDR表示法的支持添加到networkInterfaces()方法的輸出中。 #14307
- perf_hooks:
- Node.js的Performance Timing API的初始實現。這與現代瀏覽器實現的具有許多Node.js特定屬性的Performance Timing API相同。實現了用戶計時標記()和度量()API。 #14680
- TLS:
- createSecureContext#14793中的多個PFX
- 添加了新的協作者:
- BridgeAR - 魯本布里奇沃特
版本8.3.0中的新功能:
- V8引擎已升級到版本6.0,其性能配置文件已發生顯著變化。
- 其他值得注意的變化:
- DNS:
- 現在支持獨立的DNS解析器實例,並支持取消相應的請求。
- 的N- API:
- 用於錯誤處理的多個N-API函數已更改為支持分配錯誤代碼。
- REPL:
- 改進了對require()的自動完成支持。
- 公用設施:
- WHATWG編碼標準(TextDecoder和TextEncoder)已作為實驗性功能實現。
版本8.1.3中的
新功能:
- 流已修復流模塊的兩個回歸:
- 如果發出錯誤事件,現在將始終發出完成事件:[0a9e96e86c]#13850
- 在對像模式下,可讀流現在可以再次使用undefined。 [5840138e70]#13760
版本8.1.2中的新功能:
- 修復8.1.1中破壞的process.release屬性導致無法在Windows以外的平台上編譯本機加載項。這是Node.js構建過程中的一個修復,因此8.1.1之上沒有包含其他代碼提交。
版本7.7.1中的
新功能:
- [c8e34b61f6] - build:添加缺少的src / tracing頭文件(Daniel Bevenius)#10851
- [96f55f9e59] - src:將trace_event.h包含到內部標題(Ben Noordhuis)#10959
- [30c80cbe6f] - src:修復TracingController清理(Jason Ginchereau)#10623
- [b89b2a7d36] - src:始終在代理中初始化跟踪控制器(Matt Loring)#10507
- [54e55e05ca] - 測試:讓test-intl-no-icu-data更健壯(Michael Zasso)#10992
- [7b253eb3ed] - 測試:增加測試跟踪事件的嚴格性(Rich Trott)#11065
- [3dc4a5f1f4] - 追踪:修復-Wunused-private-field警告(Santiago Gimeno)#10416
- [8a918bf411] - 追踪:修復 - 違規警告(Santiago Gimeno)#10416
7.4.0版中的新功能:
- 緩衝液:
- 將緩衝區分配的性能提高約11%。 (布賴恩懷特)#10443
- 將Buffer.from()的性能提高約50%。 (布賴恩懷特)#10443
- 事件:將EventEmitter.once()的性能提高約27%。 (布賴恩懷特)#10445
- fs:允許將Uint8Array傳遞給支持Buffers的fs方法。 (Anna Henningsen)#10382
- http:將http服務器的性能提高約7%。 (Brian White)#6533
- npm:升級到v4.0.5(Kat Marchan)#10330
版本7.2.1中的新功能:
- 緩衝液:
- 在沒有new的情況下恢復了調用Buffer()的運行時棄用。 (Anna Henningsen)#9529
- 修復了用於UCS2的單字節字符編碼的buffer.transcode()。 (Anna Henningsen)#9838
- 承諾: - trace-warnings現在可以為Promise警告生成有用的堆棧跟踪。 (Anna Henningsen)#9525
- repl:修復了阻止正確解析生成器函數的錯誤。 (泰迪卡茨)#9852
- V8:修復了性能回歸的重要實例。 (Franziska Hinkelmann)#9730
7.2.0版中的新功能:
- crypto:Decipher方法setAuthTag()和setAAD現在返回此值。
- dns:為resolve4()和resolve6()實現{ttl:true}。
- libuv:升級到v1.10.1
- 修復了在Windows 10上向控制台寫入數據時潛在的緩衝區溢出問題。(CVE-2016-9551)
- 進程:為memoryUsage()返回的數據添加了新的外部屬性。
- tls:修復了在握手期間銷毀的TLS連接上排隊寫入時內存洩漏的問題。
- V8(dep):升級到v5.4.500.43
- v8:getHeapStatistics()返回的數據現在包含三個新字段:malloced_memory,peak_malloced_memory和does_zap_garbage。
版本6.4.0中的
新功能:
- build:zlib符號和其他OpenSSL符號現在在Windows平台上公開。 (Alex Hultman)#7983和#7576
- child_process,cluster:分叉子進程和集群工作程序現在支持stdio配置。 (Colin Ihrig)#7811和#7838
- child_process:argv [0]現在可以在生成的進程中設置為任意值。 (Pat Pannuto)#7696
- fs:fs.ReadStream現在公開它到目前為止已讀取的字節數。 (Linus Unneback)#7942
- repl:REPL現在支持編輯器模式。 (J韋斯利王子)#7275
- util:現在可以使用util.inspect.defaultOptions全局配置inspect()。 (羅馬瑞斯)#8013
版本6.3.0中的新功能:
- buffer:添加buffer.swap64()以補充swap16()& swap32()。 (Zach Bjornson)#7157
- build:添加了新的配置選項,用於將Node.js構建為共享庫。 (Stefan Budeanu)#6994
- 選項包括: - shared, - without-v8-platform& --without捆綁-V8。
- 加密:根證書已更新。 (Ben Noordhuis)#7363
- 調試器:服務器地址現在可通過--debug =:進行配置。 (Ben Noordhuis)#3316
- npm:npm升級到v3.10.3(Kat Marchan)#7515& (Rebecca Turner)#7410
- readline:為readline構造函數添加了提示選項。 (埃文盧卡斯)#7125
- repl / vm:sigint / ctrl + c現在將在不停止Node.js實例的情況下突破無限循環。 (Anna Henningsen)#6635
- 的src:
- 添加了一個node :: FreeEnvironment公共C ++ API。 (程昭)#3098
- 重構require('常數'),現在可以直接從各自的模塊獲得常量。 (James M Snell)#6534
- stream:將可讀性.read()性能提高了70%。 (布賴恩懷特)#7077
- 計時器:在某些情況下,setImmediate()的速度提高了150%。 (安德拉斯)#6436
- util:在util.inspect()中添加了一個breakLength選項,用於控制對象跨行的格式。 (cjihrig)#7499
- v8-inspector:已添加實驗支持,用於通過檢查器協議調試Node.js。 (Ali Ijaz Sheikh)#6792
- 注意:此功能是實驗性的,可以更改或刪除。
- 您可以通過使用--inspect標誌運行Node.js來嘗試此功能。
6.0.0版中的新功能:
- 緩衝液:
- 添加了新的緩衝區構造函數#4682和#5833。
- 現有的Buffer()和SlowBuffer()構造函數已在文檔#4682和#5833中棄用。
- 以前棄用的緩衝API將被刪除#5048,#4594。
- 改進了錯誤處理#4514。
- 已添加Buffer.prototype.lastIndexOf()方法#4846。
- 集群:
- 工人在'message'事件#5361中作為第一個參數發出。
- worker.exitedAfterDisconnect屬性替換了worker.suicide#3743。
- 控制台:
- 使用未知標籤調用console.timeEnd()現在會發出進程警告而不是拋出#5901。
- 加密:
- 改進了錯誤處理#3100,#5611。
- 簡化證書類綁定#5382。
- 改進了對FIPS模式的控制#5181。
- pbkdf2摘要重載已棄用#4047。
- 依賴關係:
- 重新引入共享的c-ares構建支持#5775。
- V8更新至5.0.71.35#6372。
- DNS:
- 添加dns.resolvePtr()API以查詢純DNS PTR記錄#4921。
- 域:
- 沒有錯誤處理程序時清除堆棧#4659。
- 活動:
- EventEmitter.prototype._events對像不再繼承自Object.prototype#6092。
- 已添加EventEmitter.prototype.prependListener()和EventEmitter.prototype.prependOnceListener()方法#6032。
- 文件系統:
- fs.realpath()和fs.realpathSync()方法已更新為使用更高效的基於libuv的實現。此更改包括刪除緩存參數,該方法可能會拋出新錯誤#3594。
- FS apis現在可以接受並返迴路徑為緩衝區#5616。
- 錯誤處理和類型檢查改進#5616,#5590,#4518,#3917。
- fs.read的字符串界面已棄用#4525。
- HTTP:
- 'clientError'現在可用於從HTTP服務器返回自定義錯誤#4557。
- 模塊:
- 現在,當前目錄的優先級為本地查找#5689。
- 當需要模塊#5950時,會保留符號鏈接。
- 網:
- DNS提示不再隱式設置#6021。
- 改進了錯誤處理和類型檢查#5981,#5733,#2904。
- OS X:
- MACOSX_DEPLOYMENT_TARGET已升至10.7#6402。
- 路徑:
- 改進了類型檢查#5348。
- 過程:
- 介紹過程警告API#4782。
- 當非功能傳遞給nextTick#3860時拋出異常。
- 查詢字符串:
- querystring.parse()返回的對像不再繼承自Object.prototype#6055。
- 的Readline:
- 無條件發出關鍵信息#6024。
- 現在可以明確禁用歷史記錄#6352。
- REPL:
- 分配給_將發出警告#5535。
- 當eval失敗時,表達式將不再完成#6328。
- 定時器:
- 當回調不是函數#4362時提前失敗。
- 流:
- null現在是在對像模式#6170中寫入的無效塊。
- TLS:
- 將'clientError'重命名為'tlsClientError'#4557。
- SHA1用於sessionIdContext#3866。
- TTY:
- 以前不推薦使用的setRawMode包裝器已刪除#2528。
- URL:
- 如果主機更改了#1480,則url.resolve()將刪除用戶名和密碼。
- 的Util:
- 更改錯誤對象格式#4582。
- 不推薦使用util._extend()方法#4903
- 不推薦使用util.log()方法#6161。
- 視窗:
- 不再支持Windows XP和Vista#5167。
- 的zlib:
- 對Zlib處理#5883和#5707進行了多項改進。
<強>要求強>:
- 的Python
評論沒有發現