NestJs:多视图目录

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)

这种配置假设所有视图都位于一个目录(视图)中,但是如果每个模块都有自己的视图呢?

Kim*_*ern 7

自 v5.7.0

您可以设置一系列目录:

app.setBaseViewsDir([
  join(__dirname, '..', 'users/views'), 
  join(__dirname, '..', 'books/views'),
]);
Run Code Online (Sandbox Code Playgroud)

v5.7.0之前

在 express 中,您可以设置一组基本路径目录

应用程序视图的目录或目录数组。如果是数组,则按照它们在数组中出现的顺序查找视图。

但是,nest.js 中的类型不允许数组,请参阅问题。我创建了一个拉取请求,这将改变它。

在合并拉取请求之前,您可以执行以下操作:

app.setBaseViewsDir([
    join(__dirname, '..', 'users/views'), 
    join(__dirname, '..', 'books/views'),
  ] as any);
Run Code Online (Sandbox Code Playgroud)

合并拉取请求后,您可以删除as any.