mar*_*odb 3 node.js express typescript nestjs
我正在使用 nestJs 框架开发 MVC 应用程序,并且使用了 hbs 模板引擎。
根据文档,我必须使用此配置使 nestjs 能够为视图提供服务:
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
app.useStaticAssets(join(__dirname, '..', 'public'));
app.setBaseViewsDir(join(__dirname, '..', 'views'));
app.setViewEngine('hbs');
await app.listen(3000);
}
Run Code Online (Sandbox Code Playgroud)
这种配置假设所有视图都位于一个目录(视图)中,但是如果每个模块都有自己的视图呢?
您可以设置一系列目录:
app.setBaseViewsDir([
join(__dirname, '..', 'users/views'),
join(__dirname, '..', 'books/views'),
]);
Run Code Online (Sandbox Code Playgroud)
在 express 中,您可以设置一组基本路径目录:
应用程序视图的目录或目录数组。如果是数组,则按照它们在数组中出现的顺序查找视图。
但是,nest.js 中的类型不允许数组,请参阅问题。我创建了一个拉取请求,这将改变它。
在合并拉取请求之前,您可以执行以下操作:
app.setBaseViewsDir([
join(__dirname, '..', 'users/views'),
join(__dirname, '..', 'books/views'),
] as any);
Run Code Online (Sandbox Code Playgroud)
合并拉取请求后,您可以删除as any
.