很高兴地正式宣布 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 选项,简化了配置值的封装(特别适用于测试)