NestJS使用模板引擎ejs

在这里插入图片描述

模板引擎​

模板引擎是一种用于生成动态内容的工具,它通过将预定义的模板与特定数据结合,来生成最终的输出。​

在NodeJS开发中,我们会使用模板引擎来渲染一些常用的页面,比如渲染代表404的Not Found 页面,502的Bad Request页面等,在部分后端渲染的项目中,也会使用模板引擎来渲染页面,而不会用VUE或者是React等前端框架。​

本文章会用Ejs模板引擎作为例子,在使用了NestJS的项目中,渲染一个​list页面。

配置Ejs​

首先第一步,必须得是在我们的项目 中引入Ejs模板引擎

npm install ejs

接着,在我们的目录中创建一个folder,个人会将其命名为views,作用是存放我们的不同的模板,在此文件夹中,我会在此创建一个名为List.ejs的​文件,作用是显示出列表数据。
即然有了存放ejs的地方,那么我们就需要在我们的项目中设置该文件夹内的模板供我们使用,因为是全局,所以我们会在main.ts中去设置​

  //ejs
  app.setBaseViewsDir('views');
  app.setViewEngine('ejs');

需要注意的是,由于本地创建的​NestJS项目中。app没有具体的类型,可能会导致报错说app这个instance上没有这两个方法,所以建议如下操作,替换掉创建​app的方法。

  const app = await NestFactory.create<NestExpressApplication>(AppModule);

整个main.ts的代码如下

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);//ejs
  app.setBaseViewsDir('views');
  app.setViewEngine('ejs');await app.listen(3000);
}
bootstrap();

使用Ejs

配置之后,我们手动使用如下指令创建一个新的controller,在新生成的控制类中写我们的代码。

nest g controller list

自己手动写一个最简单的get请求的处理代码

import { Controller, Get } from '@nestjs/common';
​
@Controller('article')
export class ListController {
    
  @Get('list/index')
  getList(): string {
    return '获取列表成功';
  }
}

接下来,我们需要将其设置为返回一个列表信息的页面,所以我们需要先配置@Render这个注释器​,并且在代码的最后返回定制好的数据,即下面的代码

import { Controller, Get, Render } from '@nestjs/common';
​
@Controller('list')
export class ListController {
  @Render('list')
  @Get('index')
  getList(): { list: { id: number; name: string }[] } {
    return {
      list: [
        { id: 1, name: 'name1' },
        { id: 2, name: 'name2' },
      ],
    };
  }
}


上述的代码中,模拟了从数据库中查询出数据,并且将其返回到我们的Ejs模板中去渲染。

同样的,我们需要在我们的Ejs文件中去接受并渲染数据,对​list参数做for循环渲染。代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <ul>
        <% for (var i = 0; i < list.length; i++) { %>
            <li><%= list[i].name %></li>
        <% } %>
    </ul>
</body>
</html>

​效果如下:

在这里插入图片描述

使用Ejs有一个好处,当你只想做一个很少页面的项目时候,你可以使用模板引擎来减少前端的工作量,且​能很好的保护你的代码。

在这里插入图片描述


个人公众号,求关注,不定时更新前端技术文章

公众号文章求关注

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值