闽公网安备 35020302035485号
很高兴地正式宣布 NestJS 11 发布!这个版本包含了大量的 bug 修复、增强功能和全新特性。虽然无法一一列举所有更新,但让我们来看看一些最值得关注的亮点!如果你还不了解 NestJS,它是一个 TypeScript Node.js 框架,可以帮助你构建企业级的高效可扩展的 Node.js 应用程序。让我们直接开始吧!
// 堆代码 duidaima.com
const app = await NestFactory.create(AppModule, {
logger: new ConsoleLogger({
json: true,
}),
});
将 json 选项设置为 true 可以确保日志以 JSON 格式输出,这对容器化环境来说是理想的选择。这使得无需第三方工具或库就能轻松解析和分析日志。
const app = await NestFactory.create(AppModule, {
logger: new ConsoleLogger({
json: true,
colors: true,
}),
});
更灵活的微服务import { NatsConnection } from 'nats';
const serviceRef = app.connectMicroservice({
transport: Transport.NATS,
options: {
// 堆代码 duidaima.com
// NATS 连接选项
},
});
const connection = serviceRef.unwrap<NatsConnection>();
console.log(connection.info);
这里使用 NATS 作为示例,但 unwrap 方法适用于所有其他传输器。const serviceRef = app.connectMicroservice({
transport: Transport.NATS,
options: {
// NATS 连接选项
},
});
serviceRef.on<NatsEvents>('disconnect', () => {
console.log('Client disconnected');
});
另一个强大的新增功能是 status 可观察流,它提供了客户端实例当前状态的实时更新:const serviceRef = app.connectMicroservice({
transport: Transport.NATS,
options: {
// NATS 连接选项
},
});
serviceRef.status.subscribe((status) => {
console.log('Status:', status);
});
ClientProxy 类也提供了相同的 API 方法集:constructor(
@Inject(MATH_SERVICE) private readonly client: ClientProxy<NatsEvents>,
) {}
// 监听事件和状态
this.client.on('disconnect', () => console.log('Disconnected'));
this.client.status.subscribe(status => {
console.log('Status:', status);
});
更快的应用启动5.参数名称现在支持有效的 JavaScript 标识符,或者像 :"this" 这样加引号
@Get('users/*')
findAll() {
// 在 NestJS 11 中,这将自动转换为有效的 Express v5 路由
// 虽然它可能仍然工作,但在 Express v5 中不建议使用这种通配符语法
return 'This route should not work in Express v5';
}
要修复这个问题,你可以更新路由以使用命名通配符:@Get('users/*splat')
findAll() {
return 'This route will work in Express v5';
}
“8.ConfigService#get 现在以不同的顺序读取配置值,允许用户从自定义配置工厂覆盖 process.env 值。此外,引入了 skipProcessEnv 选项,简化了配置值的封装(特别适用于测试)