簡體   English   中英

如何在獨立的 NestJS 應用程序中使用模板引擎而不使用任何 controller?

[英]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://handlebarsjs.com/

帕格https://pugjs.org/api/getting-started.html

配置應用程序

然后,你必須創建一個視圖和公共文件夾,通常這個文件夾位於你項目目錄的根層。

查看和公用文件夾

然后,在您的 main.ts 中添加以下代碼

在應用上設置公開和視圖

這將告訴 express 視圖(模板)和公共(Css 或 Js 文件等)文件的位置。

設置hbs引擎

添加指示視圖引擎的 setViewEngine 方法,在本例中為把手 (hbs)。

創建模板文件

使用此配置,您可以開始創建模板文件,讓我們查看文檔中的示例。

車把文件

他在 views 文件夾中創建了一個名為index.hbs的文件並編寫了該代碼,handlebars 基本上是 html 並且花括號表示您可以在該空間上放置一個值。

渲染文件

最后要做的是在您的 controller 上,創建一個 Get 方法,添加渲染裝飾器並放置視圖文件的名稱,然后返回一個 object 包含您要在模板上插入的值,車把將執行 Z6AADFC8ZF8806.

渲染方法

如果您需要更多信息或有任何問題,可以給我留言:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM