繁体   English   中英

如何在 nestjs 框架中使用 nunjucks 模板?

[英]How do I use nunjucks template in nestjs framework?

如何以正确的方式在 NestExpressApplication 下使用 nunjucks 模板?

 import { join } from "path"; import { NestFactory } from "@nestjs/core"; import { NestExpressApplication } from "@nestjs/platform-express"; import * as nunjucks from "nunjucks"; import * as helmet from "helmet"; import { ApplicationModule } from "./app.module"; async function bootstrap() { let options: any = {}; if (process.env.NODE_ENV === "product") options.logger = false; const app = await NestFactory.create<NestExpressApplication>( ApplicationModule, options ); app.use(helmet()); // app.useGlobalPipes( // new ValidationPipe({ // whitelist: true, // validationError: { target: false, value: false }, // }), // ); app.useStaticAssets(join(__dirname, "..", "public"), { prefix: "/static/" }); const environment = nunjucks.configure( [ join(__dirname, "..", "template"), join(__dirname, ".", "system_template") ], { autoescape: true, throwOnUndefined: false, trimBlocks: false, lstripBlocks: false, watch: true, noCache: process.env.NODE_ENV === "local" ? true : false, express: app } ); app.engine("njk", environment.render); app.setViewEngine("njk"); app.set("view cache", true); await app.listen(process.env.APP_PORT); } bootstrap();

对于那些想要在NestJS框架中使用Nunjucks模板引擎并发现这个问题的人,这里是一个最小的例子:

import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
import * as nunjucks from 'nunjucks';
import * as path from 'path';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  const express = app.getHttpAdapter().getInstance();

  const assets = path.join(__dirname, '..', 'assets'); // Directory with static HTML/CSS/JS/other files
  const views = path.join(__dirname, '..', 'views'); // Directory with *.njk templates

  nunjucks.configure(views, { express });
  
  app.useStaticAssets(assets);
  app.setBaseViewsDir(views);
  app.setViewEngine('njk');

  await app.listen(3000);
}
bootstrap();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM