共享模型
警告
本章仅适用于代码优先方式。
在项目后端使用 TypeScript 的最大优势之一是能够通过通用的 TypeScript 包在基于 TypeScript 的前端应用中复用相同的模型。
但这里存在一个问题:使用代码优先方式创建的模型大量使用了 GraphQL 相关的装饰器。这些装饰器在前端是无关紧要的,会对性能产生负面影响。
使用模型垫片
为了解决这个问题,NestJS 提供了一个"垫片(shim)",允许你通过 webpack(或类似工具)配置将原始装饰器替换为惰性代码。要使用此垫片,需要在 @nestjs/graphql 包和垫片之间配置别名。
例如,对于 webpack,可以这样配置:
typescript
resolve: { // 参见: https://webpack.js.org/configuration/resolve/
alias: {
"@nestjs/graphql": path.resolve(__dirname, "../node_modules/@nestjs/graphql/dist/extra/graphql-model-shim")
}
}