聊一聊 Node.js V22.5 有啥重要更新

大家好,今天我们来聊聊 Node.js 最新发布的 V22.5 版本。作为一名开发者,每次看到新的版本更新,总是让人期待不已。V22.5 中新增了许多强大且实用的功能,让我们的开发工作更加高效便捷。在这篇文章中,我们将重点讨论以下几个更新:

  1. 新增 node:sqlite 模块(由 Colin Ihrig 提供)#53752

  2. 新增 matchesGlob 方法(由 Aviv Keller 提供)#52881

  3. 新增 postMessageToThread 方法(由 Paolo Insogna 提供)#53682

让我们一探究竟!

node:sqlite 模块

node:sqlite 模块使处理 SQLite 数据库变得更加简便。

go 复制代码
// index.js

const { DatabaseSync } = require('node:sqlite');
const database = new DatabaseSync(':memory:');

// 执行 SQL 语句创建表
database.exec(`
  CREATE TABLE data(
    id INTEGER PRIMARY KEY,
    name TEXT
  );
`);

// 创建一个预处理语句插入数据
const insert = database.prepare('INSERT INTO data (id, name) VALUES (?, ?)');

// 使用绑定值执行预处理语句
insert.run(1, 'Bob');
insert.run(2, 'John');

// 创建一个预处理语句查询数据
const query = database.prepare('SELECT * FROM data ORDER BY id');

// 执行预处理语句并打印结果
console.log(query.all());

// 输出: [ { id: 1, name: 'Bob' }, { id: 2, name: 'John' } ]

以上示例展示了如何使用 node:sqlite 模块创建一个内存数据库,写入数据并读取数据。该内置库在使用 --experimental-sqlite 标志时可用。

go 复制代码
node --experimental-sqlite index.js

作为开发者,我们在使用 Node.js 原生模块的同时,通常还会使用许多外部模块来使服务器功能完善。Node.js 不断努力将这些重要工具集成进自身,例如他们最近添加了对原生测试框架的支持,使得我们从 jest 和 mocha 切换到了原生库。现在,是数据库和 ORM(对象关系映射)的时代了。

这个模块目前是实验性的,离稳定和拥有更多方法还有一段路要走。让我们感谢 Node.js 核心团队的努力。未来我们将只需使用少量外部库,因为大多数关键模块将会原生提供。

matchesGlob 方法

matchesGlob 是另一个实验性方法,用于确定路径是否匹配指定模式。

go 复制代码
path.matchesGlob('/foo/bar', '/foo/*'); // 返回 true
path.matchesGlob('/foo/bar*', 'foo/bird'); // 返回 false

postMessageToThread 方法

最后介绍一个方法,它可以将值发送到另一个由线程 ID 标识的 worker。

以前,我们可以使用消息通道与 worker 线程进行通信。但现在,线程间通信变得更加简单。

以下是获取线程 ID 的方法:

go 复制代码
const { threadId } = require('node:worker_threads');

这是它们之间的通信方式:

go 复制代码
postMessageToThread(id, { message: 'pong' });

首先,你需要有一个监听器来接收消息:

go 复制代码
process.on('workerMessage', (value, source) => {
    console.log(`${source} -> ${threadId}:`, value);
});

source 是发送者的线程 ID,因此如果你想回复消息,可以这样做:

go 复制代码
process.on('workerMessage', (value, source) => {
  console.log(`${source} -> ${threadId}:`, value);
  postMessageToThread(source, { message: 'pong' });
});

如果你想与主线程通信,可以简单地使用 0,因为主线程的 ID 是 0。

go 复制代码
postMessageToThread(0, { message: 'ping' });

Node.js V22.5 带来了诸多令人兴奋的新特性,让我们的开发工具箱更加强大。

希望这篇文章能帮助你更好地理解和利用这些新功能。如果你觉得这篇文章对你有帮助,不妨点赞并分享给更多的开发者朋友。让我们一起期待 Node.js 带来更多的惊喜吧!

相关推荐
八角丶1 小时前
Node 网络编程 —— TLS 模块
javascript·后端·node.js
嘿嘿-666 小时前
Cherry Studio 接入ChatGpt:GPT-5.6 Sol 文本测试与 GPT-Image-2 出图教程
人工智能·gpt·ai·chatgpt·node.js·ai编程
大牧师6 小时前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
逻辑08 小时前
安装 Claude Code 完整指南(用户级 Node.js 环境)
node.js·claude code
Wang's Blog8 小时前
Vibe Coding一人即团队系列54:云服务器 Node.js 与 MySQL 9 环境搭建及配置指南
服务器·人工智能·mysql·node.js
FungLeo8 小时前
成为全栈·Node 后端篇·结构化日志与请求链路追踪
node.js·结构化日志·成为全栈·请求链路
Flynt12 小时前
NestJS 12升级踩坑:从Webpack到Rspack,我折腾了一整个周末
typescript·node.js·nestjs
FungLeo1 天前
成为全栈·Node 后端篇·配置管理:环境变量、多环境与密钥安全
node.js·环境变量·多环境配置·密钥安全
FungLeo1 天前
成为全栈·Node 后端篇·错误处理:异常分层与全局捕获
node.js·错误处理·异常分层·全局捕获·成为全栈
百万运营Pro1 天前
用 Astro + Supabase 从零构建全网盘聚合搜索引擎:PGroonga 中文检索实战
搜索引擎·前端框架·node.js·个人开发·学习方法·ai编程·资源分享