Promoção no ar
Tempo restante da oferta:
15 Horas
13 Min
21 Seg
Assinar →

NestJS com template engine handlebars

Neste artigo vamos aprender a configurar o NestJS com o handlebars, uma template engine que permite criarmos views dinâmicas e robustas.

Wesley Gado 4 anos atrás

Neste artigo, nós mostraremos a você como configurar e utilizar a template engine handlebars com o NestJS. Para começar, é fundamental que você tenha o Node.js instalado e configurado em seu sistema.

Curso Node.js - Fundamentos Conhecer o curso

Você pode conferir um passo a passo detalhado em nosso artigo sobre a Instalação do Node.js para Windows, Mac e Linux.

Instalação e configuração do handlebars

Feito isso, é necessário instalar o NestJS. Para realizar essa instalação, basta executar o seguinte comando:

npm i -g @nestjs/cli

O próximo passo é criar um projeto. Para isso, podemos executar o comando:

nest new project-name

Em “project-name” nós devemos escolher um nome para o projeto, neste exemplo, vamos utilizar o nome “hbs”.

Obs: para este exemplo, nós selecionamos o npm como gerenciador de pacotes.

A aplicação criada terá a seguinte estrutura:

src
	app.controller.spec.ts
	app.controller.ts
	app.module.ts
	app.service.ts
	main.ts

Agora, vamos instalar o handlebars executando o seguinte comando:

npm install --save hbs

Finalmente, a estrutura da aplicação foi criada e a template engine instalada, entretanto, é necessário efetuar algumas configurações para que o NestJS possa utilizar o handlebars. Para isso, vamos configurar o arquivo main.ts da seguinte maneira:

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

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  app.useStaticAssets(join(__dirname, '..', 'public'));
  app.setBaseViewsDir(join(__dirname, '..', 'views'));
  app.setViewEngine('hbs');

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

Nós configuramos o handlebars como template engine padrão no código acima. Além disso, definimos a pasta “public” como diretório estático, que contém arquivos públicos como CSS e JavaScript. É importante destacar que podemos utilizar outras ferramentas, como o Bootstrap, juntamente com o handlebars.

Também apontamos um diretório chamado “views”, que será onde os arquivos do handlebars serão armazenados. Portanto, é fundamental que você crie o diretório “views” na raiz do seu projeto.

Criando e renderizando uma view

Neste momento vamos criar uma view chamada index.hbs dentro da pasta “views”:

<!DOCTYPE html>
<html>
  <head>
    <title>Uma View com Handlebars</title>
  </head>
  <body>
    <h1>NestJS com Handlebars!</h1>
  </body>
</html>

O próximo passo é configurar o app.controller.ts, da seguinte forma:

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

@Controller()
export class AppController {
  @Get()
  @Render('index')
  index() {
    //
  }
}

Veja que criamos o método index(), que recebe dois decorators:

  • “Get”: Responsável por apontar qual o verbo HTTP que será utilizado na requisição.
  • “Render”: Responsável por renderizar a view que será passada como parâmetro.

Observação: Neste caso, será renderizada a view de mesmo nome que se encontra na pasta “views”, conforme configurado no main.ts.

Por fim, podemos testar a aplicação. Para isso, execute o comando npm run start e abra o navegador em http://localhost:3000. A view index.hbs será renderizada:

exibindo uma view handlebars com dados simples

Renderizando dados com handlebars

Curso Nest.js - Fundamentos Conhecer o curso

Uma das vantagens de utilizar uma template engine é a possibilidade de criar views dinâmicas, como, renderizar dados enviados do back-end para o front-end. Então, vamos retornar uma informação do controller para a view da seguinte maneira:

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

@Controller()
export class AppController {
  @Get()
  @Render('index')
  index() {
    return { mensagem: 'Veja a formação de NestJS da TreinaWeb!' };
  }
}

Agora é possível renderizar a string “Veja a formação de NestJS da TreinaWeb!” para a view:

<!DOCTYPE html>
<html>
  <head>
    <title>Uma View com Handlebars</title>
  </head>
  <body>
    <h1>NestJS com Handlebars!</h1>
    <p>{{mensagem}}</p>
  </body>
</html>

Veja no código acima onde adicionamos um parágrafo, o resultado será o seguinte:

exibindo uma view handlebars com dados dinâmicos

Conclusão

Neste artigo, nós aprendemos como configurar a template engine handlebars para ser utilizada em conjunto com o NestJS, permitindo que você crie views dinâmicas e robustas.

Caso tenha ficado alguma dúvida você pode acessar o repositório deste exemplo para futuras consultas neste repositório do GitHub.

Por fim, caso queira aprender mais sobre NestJS saiba que aqui na TreinaWeb temos o curso Nest.js - Fundamentos que possui 02h07 de vídeos e um total de 18 exercícios. Conheça também nossos outros cursos de TypeScript.

Veja quais são os tópicos abordados durante o curso de Nest.js - Fundamentos:

  • Conhecendo a estrutura;
  • Utilizando Nest CLI
  • Entendendo Rotas, Controllers e Views;;
  • Conexão com banco de dados;
  • Usando TypeORM;
  • Template Engine.
Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 15h 13min 21s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora