当前位置: 首页 > article >正文

刚发布的nodejs 23提供了哪些新能力

Node.js 23版本为开发者带来了许多令人兴奋的新功能和改进,这些变化不仅提升了开发效率,还简化了复杂任务的实现。让我们深入了解这些新特性,并通过实际代码示例展示如何充分利用它们。

内置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('连接已关闭');
});

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('你好');
    controller.enqueue('世界');
    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);

全局Blob和BroadcastChannel API

Blob和BroadcastChannel API现在可以在全局范围内使用,进一步增强了Node.js的功能。

Blob示例:

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

BroadcastChannel示例:

const channel = new BroadcastChannel('test_channel');

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

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

原生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

实验性TypeScript剥离

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

示例代码(hello.ts):

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

console.log(greet('张三'));

运行命令:

node --experimental-strip-types hello.ts

内置文件监视

Node.js 23内置了文件监视功能,无需使用第三方工具如nodemon。

示例代码(app.js):

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

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

运行命令:

node --watch app.js

现在,每当你修改app.js文件时,Node.js会自动重启应用。

原生环境变量支持

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

测试运行器模块

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的这些新特性和改进,使得它成为一个更加强大和易用的JavaScript运行时环境。通过这些实际的代码示例,开发者可以更好地理解和利用这些新功能,从而提升开发效率和代码质量。无论是WebSocket、流处理、模块化开发,还是测试和环境管理,Node.js 23都为现代JavaScript开发提供了更加完善的工具和支持。


http://www.kler.cn/a/537850.html

相关文章:

  • 一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路
  • android selinux 问题
  • PAT乙级( 1009 说反话 1010 一元多项式求导)C语言版本超详细解析
  • mysql 学习11 事务,事务简介,事务操作,事务四大特性,并发事务问题,事务隔离级别
  • zzcms接口index.php id参数存在SQL注入漏洞
  • k8s部署rabbitmq
  • 高效Android Studio编程:快捷键汇总
  • IDEA编写SpringBoot项目时使用Lombok报错“找不到符号”的原因和解决
  • I2C协议—读写EEPROM(24Cxx为例)
  • VSCode 换行符问题
  • Deepseek的起源与发展
  • (六)QT——布局&常用控件——基本的用户输入界面
  • HTTP报文格式
  • 蓝桥杯---力扣题库第38题目解析
  • html css网页制作成品——HTML+CSS爷爷不泡茶的茶网页设计(7页)附源码
  • IDEA安装离线插件(目前提供了MavenHelper安装包)
  • npm中央仓库
  • pycharm ai插件
  • element-plus 解决el-dialog背后的页面滚动问题,及其内容有下拉框出现错位问题
  • 21.[前端开发]Day21-HTML5新增内容-CSS函数-BFC-媒体查询
  • < 评论 > 阿里云 与 腾讯云 国内的轻量应用服务器(VPS)产品对比
  • 【韩顺平linux】部分上课笔记整理
  • 星网锐捷 DMB-BS LED屏信息发布系统taskexport接口处存在敏感信息泄露
  • 机器学习专业毕业设计选题灵感集锦:选题建议
  • C++STL(四)——vector模拟
  • Web自动化测试:如何生成高质量的测试报告