【问题标题】:How to use template engine without using any controller in standalone NestJS Application?如何在独立的 NestJS 应用程序中使用模板引擎而不使用任何控制器?
【发布时间】:2021-08-02 00:01:50
【问题描述】:

我正在尝试使用 nestjs-telegraf 创建电报聊天机器人应用程序

然后我想使用模板引擎,就像 here 所教的那样,为收到的每条消息呈现回复消息。

但是,我没有找到任何方法来做到这一点。我所得到的是每个人都在他们的方法中使用@Res res 参数,然后只是return res.render(...)

有什么办法吗?

我不想通过使用`和使用字符串插值来手动格式化回复消息。

【问题讨论】:

    标签: nestjs chatbot template-engine telegraf.js


    【解决方案1】:

    选择查看引擎

    首先,你必须选择一个视图引擎,它负责渲染模板并进行必要的插值。

    您可以查看这些视图引擎:

    车把https://handlebarsjs.com/

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

    配置应用

    然后,你必须创建一个视图和公共文件夹,通常这个文件夹位于你的项目目录的根层。

    然后,在你的 main.ts 中添加以下代码

    这将告诉 express 视图(模板)和公共(Css 或 Js 文件等)文件的位置。

    添加指示视图引擎的 setViewEngine 方法,在本例中为车把 (hbs)。

    创建模板文件

    通过此配置,您可以开始创建模板文件,让我们看看文档中的示例。

    他在 views 文件夹中创建了一个名为 index.hbs 的文件并编写了该代码,handlebars 基本上是 html 并且花括号表示您可以在该空间上放置一个值。

    渲染文件

    最后要做的是在您的控制器上,创建一个 Get 方法,添加渲染装饰器并放置视图文件的名称,然后返回一个包含您要在模板上插值的值的对象,把手会做其余的。

    如果您需要更多信息或有任何问题,可以给我留言:)

    【讨论】:

    • 感谢您的回答。我读过你在这里写的教程。该教程无法应用,因为聊天机器人将发送消息并且不会触发任何路由。所以,@Get() 永远不会触发。我也使用telefraf-nestjs,它使用装饰器@On('text')
    • 您能解释一下视图的使用吗?你想渲染什么?你什么时候展示它?
    • 好吧,想象一下你正在和机器人聊天(例如 Telegram Bot)。例如,您发送/start。然后,机器人会回复"Hello, {{ telegram user name }}"。视图的用途是为机器人准备回复的模板。
    猜你喜欢
    • 2022-12-14
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多