[英]How to use template engine without using any controller in standalone NestJS Application?
我正在嘗試使用nestjs-telegraf創建電報聊天機器人應用程序
然后我想使用模板引擎,就像從這里教過的一樣,為收到的每條消息呈現回復消息。
但是,我沒有找到任何方法來做到這一點。 我所得到的是每個人都在他們的方法中使用@Res res
參數,然后只return res.render(...)
有什么辦法嗎?
我不想通過使用 ` 和使用字符串插值來手動格式化回復消息。
我認為您可以使用res.render()
的回調參數,如下所示:
import { Response } from 'express';
import { Post, Controller, Res } from '@nestjs/common';
@Controller()
export class MyController {
@Get()
root(@Res() response: Response) {
await response.render(
'index',
{ variable: 'My variable' },
function (error, html) {
console.log(html)
}
);
// return any JSON you want
return response.send({message: 'You HTML was proceed'})
}
}
首先,您必須選擇一個視圖引擎,它將負責渲染模板並進行必要的插值。
您可以檢查這些視圖引擎:
帕格: https://pugjs.org/api/getting-started.html
然后,你必須創建一個視圖和公共文件夾,通常這個文件夾位於你項目目錄的根層。
然后,在您的 main.ts 中添加以下代碼
這將告訴 express 視圖(模板)和公共(Css 或 Js 文件等)文件的位置。
添加指示視圖引擎的 setViewEngine 方法,在本例中為把手 (hbs)。
使用此配置,您可以開始創建模板文件,讓我們查看文檔中的示例。
他在 views 文件夾中創建了一個名為index.hbs的文件並編寫了該代碼,handlebars 基本上是 html 並且花括號表示您可以在該空間上放置一個值。
最后要做的是在您的 controller 上,創建一個 Get 方法,添加渲染裝飾器並放置視圖文件的名稱,然后返回一個 object 包含您要在模板上插入的值,車把將執行 Z6AADFC8ZF8806.
如果您需要更多信息或有任何問題,可以給我留言:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.