🚀🚀🚀 深入探索 Node.js v22.18.0 新特性;默认支持运行 ts 文件了!

前言

最近看到 Node.js 发布了新版本,详细的更新内容来了!

往期精彩推荐

正文

Node.js v22.18.0Node.js 长期支持版本(LTS)的最新迭代,这一版本聚焦于提升开发者体验、增强应用性能和安全性,引入了多项新功能!

以下是 v22.18.0 的核心更新和新特性的详细介绍。

新特性与改进

默认启用 TypeScript 类型剥离(实验性)

Node.js v22.18.0 引入了一项实验性功能:默认启用 TypeScript 类型剥离(Type Stripping)。这一功能极大简化了 TypeScript 开发者的工作流。

然而,由于其实验性,存在一些限制,开发者可以通过 --no-experimental-strip-types 标志禁用此功能。

ESM import.meta.main 支持

对于使用 ECMAScript 模块(ESM)的开发者,v22.18.0 实现了 import.meta.main 功能。这一特性允许开发者检查模块是否为应用程序的主入口点,适用于需要条件逻辑的场景。

示例

javascript 复制代码
if (import.meta.main) {
  console.log("这是主模块!");
}
文件系统事件 AsyncIterator 优化

文件系统事件(fs-events)在使用 AsyncIterator 时得到了优化,能够更好地处理突发事件(burst)。这一改进提升了文件监视的效率和可靠性,适用于需要实时监控文件变化的场景。

ts 复制代码
for await (let found of fs.watch('my dir')) {
  console.log(found);
  await sleep(10000); // any events happening during these 10seconds will  be missed;
}
进程权限模型标志传播

在使用 spawn 创建子进程时,权限模型标志现在会自动传播。这一功能增强了子进程的安全性,确保它们继承正确的权限设置。

ts 复制代码
const { spawnSync } = require('node:child_process')

const out = spawnSync(process.execPath, ['-p', '1 + 1'], { env: {
  'NODE_DEBUG_NATIVE': 'PERMISSION_MODEL'
} })

console.log(out.status)
console.log(out.stdout.toString())
SQLite readBigInts 选项

SQLite 模块新增了 readBigInts 选项,支持在数据库连接级别处理大整数。这一功能对于需要精确处理大数值的应用非常有用。

Addon 权限模型支持

Addon 现在支持 permission.has(addon),允许开发者检查特定 Addon 的权限。

URL fileURLToPathBuffer API

URL 模块新增了 fileURLToPathBuffer API,用于将文件 URL 转换为 Buffer 格式。在处理文件路径时提供了更大的灵活性,适用于需要以 Buffer 形式操作路径的场景。

新增 --watch-kill-signal 标志

监视模式新增了 --watch-kill-signal 标志,允许开发者指定终止进程的信号。这一功能提供了对监视模式行为的更精细控制。

Worker 异步可释放

Worker 类现在实现了异步可释放模式(async disposable),简化了 Worker 资源清理的过程。

ts 复制代码
await using worker = new Worker(...);
监视模式标志文档完善

Node.js 的监视模式(watch mode)相关标志现已全部记录在 node.1 文档中。

Amaro 更新至 1.1.0

AmaroNode.js 构建系统(特别是与 V8Bazel 和依赖版本管理)相关的一个辅助工具。

Amaro 工具现已更新至 1.1.0 版本,通常包括 bug 修复和性能优化。

最后

Node.js v22.18.0 的发布为开发者带来了丰富的功能更新和优化,每一项变化都旨在提升开发效率和应用质量!

详细更新内容可以看这里:nodejs.org/en/blog/rel...

今天的分享就这些了,感谢大家的阅读!如果文章中存在错误的地方欢迎指正!

往期精彩推荐

相关推荐
知识分享小能手8 小时前
微信小程序入门学习教程,从入门到精通,微信小程序常用API(上)——知识点详解 + 案例实战(4)
前端·javascript·学习·微信小程序·小程序·html5·微信开放平台
清灵xmf9 小时前
CSS field-sizing 让表单「活」起来
前端·css·field-sizing
文火冰糖的硅基工坊9 小时前
[光学原理与应用-480]:《国产检测设备对比表》
前端·人工智能·系统架构·制造·半导体·产业链
excel9 小时前
Qiankun 子应用生命周期及使用场景解析
前端
weixin_446260859 小时前
Django - 让开发变得简单高效的Web框架
前端·数据库·django
ObjectX前端实验室10 小时前
【react18原理探究实践】异步可中断 & 时间分片
前端·react.js
SoaringHeart10 小时前
Flutter进阶:自定义一个 json 转 model 工具
前端·flutter·dart
努力打怪升级10 小时前
Rocky Linux 8 远程管理配置指南(宿主机 VNC + KVM 虚拟机 VNC)
前端·chrome
brzhang11 小时前
AI Agent 干不好活,不是它笨,告诉你一个残忍的现实,是你给他的工具太难用了
前端·后端·架构
brzhang11 小时前
一文说明白为什么现在 AI Agent 都把重点放在上下文工程(context engineering)上?
前端·后端·架构