Async hooks 较旧的实验性API已被删除。 Errors 对Buffer模块错误信息进行了改进。 Node.js 抛错错误号分配和后续逻辑处理改进: buffer: [e79a61cf80] #16352, [dbfe8c4ea2] #13976 child_process: [fe730d34ce] #14009 console: [0ecdf29340] #11340 crypto: [ee76f3153b] #16428, [df8c6c3651] #16453, [0a03e350fb] #16454, [eeada6ca63] #16448, [a78327f48b] #16429, [b8bc652869] #15757, [7124b466d9] #15746, [3ddc88b5c2] #15756 dns: [9cb390d899] #14212 events: [e5ad5456a2] #15623 fs: [219932a9f7] #15043, [b61cab2234] #11317 http: [11a2ca29ba] #14735, [a9f798ebcc] #13301, [bdfbce9241] #14423, [4843c2f415] #15603 inspector: [4cf56ad6f2] #15619 net: [a03d8cee1f] #11356, [7f55349079] #14782 path: [dcfbbacba8] #11319 process: [a0f7284346] #13739, [062071a9c3] #13285, [3129b2c035] #13982 querystring: [9788e96836] #15565 readline: [7f3f72c19b] #11390 repl: [aff8d358fa] #11347, [28227963fa] #13299 streams: [d50a802feb] #13310, [d2913384aa] #13291, [6e86a6651c] #16589, [88fb359c57] #15042, [db7d1339c3] #15665 string_decoder: [eb4940e2d2] #14682 timers: [4d893e093a] #14659 tls: [f67aa566a6] #13476, [3ccfeb483d] #13994 url: [473f0eff29] #13963 util: [de4a749788] #11301, [1609899142] #13293 v8: [ef238fb485] #16535 zlib: [896eaf6820] #16540, [74891412f1] #15618 Child Process 错误发生在 process.nextTick上。 Domains 长期弃用的 dispose() 方法已被删除。 fs fs.ReadStream 和 fs.WriteStream类可以使用destory()方法。 fs 模块的回调函数将在 undefined 上下文中执行。 HTTP/1 解析失败时,将发送 400 Bad Request 状态码。 套接字连接时设置其超时时间。 修复了一个导致请求“error”事件触发两次的bug。 现在除了net.Socket之外,HTTP客户端可以使用通用双工流。 Intl 弃用的 Intl.v8BreakIterator 方法已被删除。 OS os.EOL 成为只读属性。 Timers setTimeout()的时间如果超出了32位无符号整数的最大值, 将会发出警告。 可惜node本身还不支持ES6的module 大概原因可能是node 基于 v8引擎,v8没一直实现的原因吧 现在谷歌浏览器一直也不支持
2018-11-02,版本11.1.0(当前),@ stargos 显着的变化 DEPS ICU更新至63.1。#23715 REPL REPL现在支持顶级for-await-of。#23841 计时器 修复了可能导致计时器进入无限循环的问题。#23870 提交 [ 2c2e2b53ab] - 基准:修复bench-mkdirp使用递归选项(Klaus Meinhardt)#23699 [ 787e13b41c] - build:为插件公开更多openssl类别(Jonathan Cardoso Machado)#23344 [ b8f3bb107e] - build:添加lint-py,它使用flake8(cclauss)#21952 [ 35c3c4ba68] - build:允许覆盖use_openssl_def(Shelley Vohr)#23763 [ 5c35d0db47] - build,meta:在travis上切换到gcc-4.9(Refael Ackermann)#23778 [ 141aec9564] - 加密:添加SET_INTEGER_CONSANT宏(Daniel Bevenius)#23687 [ 4112a10abe] - 加密:从openssl版本中删除不需要的空间(Sam Roberts)#23678 [ 2cc4f5c923] - deps:补丁V8到7.0.276.32(MichaëlZasso)#23851 [ 0312d8b2cd] - deps:修复垫片v8::Value::IntegerValue()(Anna Henningsen)#23898 [ 9011db426e] - (SEMVER-MINOR) deps:将更多折旧移至V8_DEPRECATED(Anna Henningsen)#23414 [ e5b51cc496] - (SEMVER-MINOR) deps:icu 63.1 bump(CLDR 34)(Steven R. Loomis)#23715 [ ab58439916] - deps:icu:应用变通方法补丁(Steven R. Loomis)#23764 [ 3b66a8d893] - deps:修复v8句柄切换的错误默认值(Refael Ackermann)#23801 [ 26510fbd8e] - doc:为样式指南添加品牌(Rich Trott)#23967 [ 33053ec8d7] - doc:使用Node.js而不是Node(Rich Trott)#23967 [ ec009f620c] - doc:修改BUILDING.md(Rich Trott)#23966 [ da494ef889] - doc:用{read,write}文件澄清fd行为(Sakthipriyan Vairamani(thefourtheye))#23706 [ 539e1233b0] - doc:将测试说明移至BUILDING.md(Kamat,Trivikram)#23949 [ cc65fee1d3] - doc:修复印刷问题(Denis McDonald)#23970 [ ee6b0395f5] - doc:sort markdown refs in errors(Sam Roberts)#23972 [ ee299c7ef1] - doc:从queueMicrotask(Rod Vagg)中删除“惯用选择” #23885 [ 147e5d5792] - doc:文件HPE_HEADER_OVERFLOW错误(Sam Roberts)#23963 [ 24c6a02930] - doc:为http.IncomingMessage $ complete添加文档(James M Snell)#23914 [ 82ee6c3e47] - doc:删除邮件列表(Rich Trott)#23932 [ 99fffff6e0] - doc:删除V8选项中的破折号通知(Denys Otrishko)#23903 [ 8b5339da14] - doc:重命名发布密钥的自述文件部分(Rich Trott)#23927 [ 676875195b] - doc:添加关于ABI兼容性的注释(Myles Borins)#22237 [ f01a806276] - doc:向socket.end()添加可选回调(Ajido)#23937 [ 64c205d9bc] - doc:使示例在cluster.md(ZYSzys)#23931中更加清晰 [ 748dbf9778] - doc:简化有效的安全问题描述(Rich Trott)#23881 [ e241398ef6] - doc:简化POSIX和Windows(ZYSzys)#23864上的path.basename() [ 49b32af5ab] - doc:在样式指南中记录nullptr比较(Anna Henningsen)#23805 [ 0ba49fec12] - doc:从README(Rich Trott)#23817中删除有问题的示例 [ d808d27120] - doc:在request.setHeader()示例中使用Cookie(Luigi Pinca)#23707 [ 1baba9b061] - doc:如果setuid root(Ben Noordhuis),则忽略NODE_EXTRA_CA_CERTS #23770 [ dd5afbe05f] - doc:将评论建议添加到require()(erickwendel)#23605 [ db113a24e0] - doc:文件并警告ICU版本是否太旧(Steven R. Loomis)#23766 [ c30de85ca5] - doc:将@phillipj移至emeriti(Phillip Johnsen)#23790 [ 84fdb1cc0e] - doc:添加关于removeListener命令的注释(James M Snell)#23762 [ f4c4b2b41b] - doc:Windows上fs.access的ACL限制(James M Snell)#23772 [ 83b776c864] - doc:必须在群集中调用addMembership的文档(James M Snell)#23746 [ 1851cf4f83] - doc,test:document和test vm timeout escapes(James M Snell)#23743 [ b4b101fed6] - (SEMVER-MINOR) fs:默认打开/ openSync标志’r’的参数(Ben Noordhuis)#23767 [ 1c5ffb3ec5] - (SEMVER-MINOR) lib:添加escapeCodeTimeout作为createInterface的选项(Raoof)#19780 [ 1cda41b7da] - lib:从process.binding(‘config’)迁移到getOptions()(Vladimir Ilic)#23588 [ 22cd53791a] - lib:触发未捕获的微任务异常处理程序(Gus Caplan)#23794 [ 97496f0fd9] - 正API:让per- Context的-ness napi_env明确(安娜汉宁森)#23689 [ 3e512f1897] - os:修复内存泄漏userInfo()(Anna Henningsen)#23893 [ 02f13abde3] - repl:支持顶级for-await-of(Shelley Vohr)#23841 [ 86cf01404c] - repl:从process.binding(‘config’)迁移到getOptions()(Jose Bucio)#23684 [ 4a79b2568f] - src:改进StreamBase写吞吐量(Anna Henningsen)#23843 [ dcaf72311b] - src:node_errors.h的小型重构(Anna Henningsen)#23879 [ fef17b716d] - src:避免额外Persistent的DefaultTriggerAsyncIdScope(Anna Henningsen)#23844 [ ce106df728] - src:使用版本v8 :: Function :: Call(欧阳亚东)#23826 [ 1bdbf8765d] - src:减少tcp_wrap Connect中的重复(Daniel Bevenius)#23753 [ 9fbe91a061] - src:refactor不赞成使用v8 :: String :: NewFromTwoByte调用(Romain Lanz)#23803 [ 48ed81fad2] - src:改进StreamBase读取吞吐量(Anna Henningsen)#23797 [ a6fe2caaae] - SRC:简化TimerFunctionCall()在node_perf.cc(安娜Henningsen的)#23782 [ 30be5cbdb0] - src:使用智能指针的内存管理(Uttam Pawar)#23628 [ df05ddfd72] - src:refactor不推荐使用v8 :: Function ::来电(Romain Lanz)#23804 [ 7bbc072529] - stream:不要在destroy(null)上错误异步迭代器(Matteo Collina)#23901 [ 5ce3b6d7a4] - stream:已结束的流应该解析异步迭代(Matteo Collina)#23901 [ aaddf97d9b] - stream:异步迭代应该与被破坏的流(Matteo Collina)#23785一起使用 [ 871e32789a] - test:在test-buffer-read(Arvind Pandey)中修复错误消息#23957 [ ed10a91e83] - 测试:添加test-benchmark-http2(Rich Trott)#23863 [ 22bbece323] - 测试:使用FIPS(Adam Majer)#23871编译时修复回归 [ 22caa26c69] - test:修复strictEqual()参数顺序(Loic)#23829 [ 572ea60378] - 测试:验证performance.timerify()无节点上下文(Anna Henningsen)#23784 [ 0f00ac9c7a] - 测试:标记测试-vm -timeout- *已知问题测试片状(James M Snell)#23743 [ a80452a1ab] - 测试:添加test-benchmark-napi(Emily Marigold Klassen)#23585 [ 086ee5e57f] - 测试:增加内部/流/流结束的覆盖范围(Tyler Vann-Campbell)#23751 [ ee8fa528e2] - 测试:修复strictEqual()参数命令(Nolan Rigo)#23800 [ 83ddd3e7d0] - 测试:修复片状测试(cjihrig)#23811 [ 1521d8991d] - 测试:为DSA keygen修复无效的modulesLength(Adam Majer)#23732 [ dfecf85ded] - 测试:在Windows上修复test-require-symlink(Bartosz Sosnowski)#23691 [ ddd9ccf1d8] - test:修复strictEqual()参数顺序(Romain Lanz)#23768 [ a666d3ea24] - test:修复strictEqual()参数顺序(Thomas GENTILHOMME)#23771 [ fa1373fc74] - 测试:修复断言参数命令(Elian Gutierrez)#23787 [ 167e99b9a1] - 计时器:修复优先级队列removeAt fn(Anatoli Papirovski)#23870 [ 09f25af16f] - tls:如果协议太长则抛出(Andre Jodat-Danbrani)#23606 [ 45a20a8d78] - 工具:将ESLint更新为5.8.0(cjihrig)#23904 [ c20eb4f2bd] - (SEMVER-MINOR) 工具,icu:如果有多个URL,则实际上是故障转移(Steven R. Loomis)#23715 [ b07cb4810c] - zlib:不要泄密(Mathias Buus)#23734
可以用ts开发,使用es6模块加载方式写,然后编译到 es5,es6都行
import url from ‘url’; import path from ‘path’;
Chrome已经支持ES6的module了吧: nodejs9也已经可以通过–experimental-modules配合mjs文件扩展名来实现ES6的module了
怎么说呢,其实9.0和8.9的差别非常小,主要是因为到了11.1号这个时间点,需要把8.x 切换到 lts,并且新起一个版本用来 current。所以暂时9.0还没多大变化
实在搞不懂,为什么一定要 import? nodejs 因为 import 和 require 是不兼容的所以一直不实现它,只在实验。现在用 webpack 什么的,都是把 import 转成 require,和 es6 的 import 根本不是一回事,如果 nodejs 完全接受 es 的标准引入 import,你确定你还能像现在用 webpack 那样使用它吗?
对于后端,暂时没看出import有什么明显的优势,除非你是ts
@Hyurl 因为 你用require chrome 那边不肯兼容, 就给出两边都中可的方案
async function test(){
await import("module")
}
于是就轮到你们不干了呗, 这个方案我也没用过…
我只用10.13.0开发了,目前没问题
@pretty-foam 支持 import 语法?