Skip to content

NestJS

Use miki-template with NestJS by wiring it into the underlying Express adapter instance.

Setup

NestJS abstracts the HTTP adapter. To use miki-template, access the underlying Express app and call setupExpress().

// main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as miki from 'miki-template';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const expressApp = app.getHttpAdapter().getInstance();
  miki.setupExpress(expressApp, { extension: 'html', views: './views' });
  await app.listen(3006);
}

bootstrap();
const { NestFactory } = require('@nestjs/core');
const { AppModule } = require('./app.module');
const miki = require('miki-template');

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const expressApp = app.getHttpAdapter().getInstance();
  miki.setupExpress(expressApp, { extension: 'html', views: './views' });
  await app.listen(3006);
}

bootstrap();

Using in Controllers

Once setupExpress() is wired, use res.render() normally in Express-style controllers or middleware:

import { Controller, Get, Req, Res } from '@nestjs/common';
import { Request, Response } from 'express';

@Controller()
export class AppController {
  @Get()
  renderHome(@Req() req: Request, @Res() res: Response) {
    res.render('home', { user: req.user });
  }

  @Get('partials/:name')
  renderPartial(@Req() req: Request, @Res() res: Response) {
    res.render(`home#${req.params.name}`, { user: req.user });
  }
}

Partial Rendering

@Get('cards/:id')
renderCard(@Req() req: Request, @Res() res: Response) {
  res.render(`home#card`, { user: req.user });
}

Next Steps

  • Integrations Overview
  • [API Reference: setupExpress param($m) $m.Value -replace '([a-z][a-z0-9-]+).md , '../.md' -replace '([a-z][a-z0-9-]+) , '../.md'