首页 前端技术 Node.js 23 新特性与改进详解

Node.js 23 新特性与改进详解

Node.js 23 版本为开发者带来了众多新特性和改进。让我们深入探讨这些变化,并通过实际代码示例展示如何使用这些新功能。

Node.js 23 新特性

1. 内置 WebSocket 客户端 API

Node.js 23 现在内置了 WebSocket 客户端 API,消除了使用第三方库的需要。这极大地简化了 WebSocket 的使用。

代码示例

const WebSocket = require('node:ws');

const ws = new WebSocket('ws://example.com:8080');

ws.on('open', function open() {
  console.log('连接已建立');
  ws.send('你好,服务器!');
});

ws.on('message', function incoming(data) {
  console.log('收到消息:', data.toString());
});

ws.on('close', function close() {
  console.log('连接已关闭');
});

2. Web Streams API

Node.js 23 引入了 Web Streams API,使得处理流数据更加方便。

代码示例

const { ReadableStream, WritableStream, TransformStream } = require('node:stream/web');

const readableStream = new ReadableStream({
  start(controller) {
    controller.enqueue('Hello');
    controller.enqueue('World');
    controller.close();
  },
});

const transformStream = new TransformStream({
  transform(chunk, controller) {
    controller.enqueue(chunk.toUpperCase());
  },
});

const writableStream = new WritableStream({
  write(chunk) {
    console.log(chunk);
  },
});

readableStream.pipeThrough(transformStream).pipeTo(writableStream);

3. 全局 Blob 和 BroadcastChannel API

现在可以在 Node.js 中全局使用 Blob 和 BroadcastChannel API。

Blob 示例

const blob = new Blob(['你好,世界!'], { type: 'text/plain' });
const text = await blob.text();
console.log(text); // 输出:你好,世界!

BroadcastChannel 示例

const channel = new BroadcastChannel('test_channel');

channel.postMessage('你好,通道!');

channel.onmessage = (event) => {
  console.log('收到消息:', event.data);
};

4. 本机 ESM 支持

Node.js 23 进一步增强了对 ECMAScript 模块(ESM)的支持。

示例代码(math.mjs)

export function add(a, b) {
  return a + b;
}

export function multiply(a, b) {
  return a * b;
}

使用模块(main.mjs)

import { add, multiply } from './math.mjs';

console.log(add(5, 3)); // 输出:8
console.log(multiply(4, 2)); // 输出:8

5. 实验性 TypeScript 剥离

Node.js 23 引入了实验性的 TypeScript 剥离功能,允许直接运行 TypeScript 文件。

示例代码(hello.ts)

function greet(name: string): string {
  return `你好,${name}!`;
}

console.log(greet('Leavescn'));

运行命令

node --experimental-strip-types hello.ts

6. 内置文件监控

Node.js 23 内置了文件监控功能,消除了使用 nodemon 等第三方工具的需要。

示例代码(app.js)

console.log('服务器正在运行...');

// 模拟服务器逻辑
setInterval(() => {
  console.log('处理请求...');
}, 2000);

运行命令

node --watch app.js

现在,每次修改 app.js 文件时,Node.js 都会自动重启应用程序。

7. 本机环境变量支持

Node.js 23 支持直接加载 .env 文件,无需使用 dotenv 等库。

示例 .env 文件

DB_HOST=localhost
DB_USER=root
DB_PASS=password123

示例代码(config.js)

console.log(process.env.DB_HOST);
console.log(process.env.DB_USER);
console.log(process.env.DB_PASS);

运行命令

node --env-file=.env config.js

8. 测试运行器模块

Node.js 23 引入了实验性的 node:test 模块,便于创建和运行 JavaScript 测试。

示例代码(test.js)

const test = require('node:test');
const assert = require('node:assert');

test('简单加法测试', (t) => {
  assert.strictEqual(1 + 2, 3);
});

test('异步测试', async (t) => {
  const result = await Promise.resolve(42);
  assert.strictEqual(result, 42);
});

运行测试

node --test test.js

总结

Node.js 23 引入了许多新特性和改进,使 Node.js 成为一个更强大、更用户友好的 JavaScript 运行时环境。通过这些实际代码示例,开发者可以更好地理解和利用这些新功能,提高开发效率和代码质量。

站心网

Node.js 23 版本为开发者带来了众多新特性和改进。让我们深入探讨这些变化,并通过实际代码示例展示如何使..

为您推荐

如何开发VSCode插件

要开发 VSCode 插件,你需要遵循以下步骤:安装 Node.js:确保你的计算机上安装了 Node.js。你可以从官方网站 https://nodejs.org/ 下载和安装最新版本。安装 Yeoman 和 VSCode 插件生成器:Yeoman 是一个用于生成项..

发表回复

返回顶部