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模块的标志和要求.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
评论没有发现