3.nestjs设置模板引擎

设置模板引擎

1.安装对应的模板引擎

cnpm i ejs --save

2、配置模板引擎

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

完整示例:Main.ts中配置如下

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { join } from 'path';
// 1.引入NestExpressApplication
import { NestExpressApplication } from '@nestjs/platform-express';

async function bootstrap() {
  // 2.加入到create
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  /* 
   * 3.1.2 设置虚拟路径2 
   * 注:需要引入import { join } from 'path';
   * 访问连接:http://localhost:3000/static/2.jpg
   */
  app.useStaticAssets(join(__dirname, '..', 'public'), {
    prefix: '/static/'
  })

  /* 配置模板引擎,不用引入直接配置 */
  app.setBaseViewsDir('views');
  app.setViewEngine('ejs');

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

3、渲染页面

  1. 创建views文件夹,下面再创建default,admin文件夹,default下创建ejs文件,如下
root
	views
		admin
		default
			index.ejs

2)配置app.controller.ts

// 1.引入Render
import { Controller, Get, Render } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}
  @Get()
  // 2.配置ejs文件路径
  @Render('default/index')
  getHello() {
    // 3.配置内容
    return {"name": "张三"};
  }
}

3)配置index.ejs

<!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>
    我是模板引擎<br>
    <!-- 1.展示变量 -->
    姓名:<%=name%>
</body>
</html>

模板引擎+post数据提交,路由跳转

业务演示:新建user.controller演示

import { Body, Controller, Get, Post, Render, Response } from '@nestjs/common';

@Controller('user')
export class UserController {
    @Get()
    @Render('default/user')
    index() {
    }

    @Post('doAdd')
    doAdd(@Body() body, @Response() res) {
        console.log(body);
        // 需要跳转到制定页面,否则会跳转到http://localhost:3000/user/doAdd
        res.redirect('/user')
    }
}

模板:新建default/user.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 演示加载css -->
    <link rel="stylesheet" href="/static/base.css">
</head>
<body>
    <form action="/user/doAdd" method="post">
        <input type="text" name="username" placeholder="请输入用户名"><br>
        <input type="text" name="age" placeholder="请输入年龄"><br>
        <input type="submit" value="提交">
    </form>
    <br>
    <!-- 演示加载图片 -->
    <img src="/static/1.jpg" alt="">
</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值