如何使用 Handlebars.js 在 nest.js 中设置默认布局?
How to set up a default layout in nest.js using Handlebars.js?
我刚刚开始 nest.js 我以前有一些节点和 express 的经验。
我正在尝试为我的部分和响应渲染设置默认布局。这是我的 main.ts
:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as hbs from 'hbs';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.setBaseViewsDir(__dirname + '/views');
hbs.registerPartials(__dirname + '/views/partials');
app.setViewEngine('hbs');
await app.listen(3000);
}
bootstrap();
我觉得应该在该代码的某处定义默认布局,但我不知道如何继续。我的 Google-fu 失败了,所以有人可以帮我解决这个问题吗?
您可以使用
app.set('view options', { layout: 'index' });
您仍然需要在所有控制器上使用 @Render('valid-layout')
,并且提供的布局名称必须有效。它只会被您的默认布局覆盖。
这适用于 NestExpressApplication:
进口车把:
import * as hbs from 'hbs';
import { join } from 'path';
将 hbs 设置为 viewEngine a
app.setBaseViewsDir(join(__dirname, '..', 'views'));
app.setViewEngine('hbs');
hbs.registerPartials(join(__dirname, '..', '/views/partials'));
还与助手一起工作:
hbs.handlebars.helpers = {
...require('handlebars-helpers')()
};
我刚刚开始 nest.js 我以前有一些节点和 express 的经验。
我正在尝试为我的部分和响应渲染设置默认布局。这是我的 main.ts
:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as hbs from 'hbs';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.setBaseViewsDir(__dirname + '/views');
hbs.registerPartials(__dirname + '/views/partials');
app.setViewEngine('hbs');
await app.listen(3000);
}
bootstrap();
我觉得应该在该代码的某处定义默认布局,但我不知道如何继续。我的 Google-fu 失败了,所以有人可以帮我解决这个问题吗?
您可以使用
app.set('view options', { layout: 'index' });
您仍然需要在所有控制器上使用 @Render('valid-layout')
,并且提供的布局名称必须有效。它只会被您的默认布局覆盖。
这适用于 NestExpressApplication:
进口车把:
import * as hbs from 'hbs';
import { join } from 'path';
将 hbs 设置为 viewEngine a
app.setBaseViewsDir(join(__dirname, '..', 'views'));
app.setViewEngine('hbs');
hbs.registerPartials(join(__dirname, '..', '/views/partials'));
还与助手一起工作:
hbs.handlebars.helpers = {
...require('handlebars-helpers')()
};