Node.js 10 LTS 值得关注的特性:
Node.js 10 正式进入 LTS(Long Term Support)版本,为生产环境提供了可靠且长期维护的支持。以下是该版本中值得关注的几个特性:
1. HTTP/2 支持
2. BigInt 支持
- 描述:Node.js 10 实现了 BigInt 的支持,有助于更加精确地处理大整数类问题。
- 背景:JS 的 Number 类型实现的是 IEEE-754 双精度浮点型的标准,计算精度有限,最大能安全标示整数范围为 -2^53 ~ 2^53(不包含头尾区间),且分母包含非 2 的因数的小数无法精确表示。
- 优势:BigInt 的支持解决了大整数计算精度的问题,尽管小数计算精度问题仍存在,但这是一个重要的进步。
3. fs.mkdir 和 fs.mkdirSync 支持递归参数
- 描述:这两个 API 对应于 Linux mkdir 指令,但在之前版本中不支持 -p 参数来递归创建目录。Node.js 10 增加了 recursive 选项,简化了备戚陆目录创建过程。
- 优势:无需再使用第三方模块(如 mkdirp),直接通过内核能力递归创建目录,提高了开发效率。
4. CLI Flag 自动补全
- 描述:Node.js 10 提供了 CLI Flag 的自动补全功能。
- 优势:无需频繁查阅文档,通过 TAB 键即可快速补全命令,提高了开发效率。
5. Windows 安装包优化
- 描述:Node.js 10 的 Windows MSI 安装包中包含了“是否安装 Node.js 本地编译工具套件”的选项。
- 优势:解决了 Windows 下原生模块安装编译的问题,降低了 Windows 环境下开发 Node.js 项目的门槛。
6. 代码覆盖率提升
- 描述:Node.js 10 在内核中直接引入了 V8 的能力,用于实现代码覆盖率统计。
- 优势:无需依赖第三方工具(如 Istanbul),通过环境变量即可收集和分析覆盖率,提升了开发者体验。
7. 废弃功能
- 描述:Node.js 10 强制废弃了直接调用 Buffer 构造函数的 API,要求使用 Buffer.from()、Buffer.alloc() 和 Buffer.allocUnsafe() 方法替代。
- 原因:基于安全考虑,废弃该 API 可以减少潜在的安全风险。
8. 实验性 API
- fs.promises:提供了 fs 原始方法的 promise 版本,简化了异步文件操作。
- Worker Threads:引入了 Worker Threads 实验性 API,用于提升 CPU 密集型计算的性能。但需注意,该 API 处于实验性阶段,随时可能变动甚至消失,不建议在线上使用。
9. 其他
- OpenSSL 1.1.0i 支持:正式支持 openssl@1.1.x,增加了对 ChaCha20-Poly1305 加密算法的支持。
- 支持 PEM 级别的加密:广泛应用到各个方面,成为一种事实上的通用加密数据格式。
综上所述,Node.js 10 LTS 版本带来了多项重要特性和改进,为开发者提供了更加高效、安全和可靠的编程环境。