[NestJs] Cấu hình các view tương ứng cho backend và frontend

1580 lượt xem 3 năm trước
Ở các FW hiện nay thì views là không thể thiếu đối với các project. Là nơi để hiển thị dữ liệu ra cho người dùng. Đối với nestjs thì mình sẽ sử dụng ViewEngine là hbs

Phần này các bạn tham khảo thêm ở document của nó nhé link tại đây

Các bạn tạo cho mình 2 folder 

  • views
  • public

Hai folder này cùng cấp với src nhé.

Tiếp theo các bạn cài cho mình  template engine là hbs 

npm install --save hbs

Các bạn mở file main.ts lên và thay đổi nội dung như sau

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

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(3001);
  console.log(`Application is running on: ${await app.getUrl()}`);
}
bootstrap();

Ở folder view các bạn tiếp tục tạo cho mình 1 file là index.hbs với nội dung

<html>
  <head>
    <title>Xin Chào</title>
  </head>
<body>
  <h1>nội dung bài viết</h1>
</body>
</html>

Ở file app.controller.ts các bạn thêm cho mình nội dung sau 

@Get('test')
  @Render('index')
  getViewIndex() {
    return { message: 'Hello world!' };
  }

Ở phía trên các bạn nhớ use các thư viện tương ứng nhé

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

Mình giải thích chỗ này một chút nhé

Ở đây mình sẽ có 1 method là get ứng với endpoint là test (domain/test) sẽ gọi view là index ( nằm ở folder views mình vừa tạo ) và truyền data là message 

Và bây giờ các bạn lên trình duyệt gõ cho mình http://localhost:3001/test xem kết quả nhé

Render viewRender view

Tiếp tục mình sẽ tạo tiếp 2 folder backend và frontend nằm trong views nhé và đồng thời tương ứng mình tạo luôn 2 file index.hbs với nội dung sau

views/backend/index.hbs và views/frontend/index.hbs

<html>
<head>
  <title>Xin Chào</title>
</head>
<body>
<h1>{{ message }}</h1>
</body>
</html>

2 view

Ở file app.controller.ts các bạn thêm cho mình 2 endpoint sau

@Get('test-backend')
  @Render('backend/index')
  getViewIndexBackend() {
    return { message: 'Hello world Backend!' };
  }

  @Get('test-frontend')
  @Render('frontend/index')
  getViewIndexFrontend() {
    return { message: 'Hello world Frontend!' };
  }

Ở đây mình sẽ test thử xem nó có gọi và trả dữ liệu đúng view backend và frontend mình vừa tạo hay không.

À phần này các bạn lưu ý giúp mình mình ko run project bằng lệnh npm start nữa vì nó ko tự động render lại route khi mình thêm  mới nên mình sẽ chuyển qua run project bằng lệnh

npm run start:dev

Các bạn lần lượt vào url 

http://localhost:3001/test-backend

http://localhost:3001/test-frontend 

để xem được kết quả các view tương ứng nhé

Bài viết liên quan

123code.net - Tạo cảm giác an toàn, uy tín, chất lượng đến cho mọi người

123code.net mang lại cảm giác an toàn nhất cho bạn, không làm bạn thất vọng, giúp bạn giải quyết được vấn đề đồ án tốt nghiệp ở thời điểm hiện tại và tương lai

- Đưa ra giải pháp, góp ý giúp bạn có được một đề tài đồ án tốt, phù hợp nhất

- Có nhiều tính năng mới, độc giúp thu hút, thuyết phục được giáo viên phản biện cũng như hội đồng bảo vệ đồ án

- Đúng ngày, đúng giờ, đầy đủ yêu cầu - tính năng

=> Nhanh tay đăng ký hoạc liên hệ với admin tại đây để có được một đồ án phù hợp với mình

123code.net

Bài viết nhiều người đọc

Hot Khám Phá Tableau: Phần Mềm BI Hàng Đầu Cho Phân Tích Dữ Liệu và Trực Quan Hoá

2024-12-06 11:40:11

Tableau là công cụ phân tích dữ liệu mạnh mẽ, được sử dụng rộng rãi trong ngành Business Intelligence (BI)

Tạo User và Mật khẩu gán quyền trên vps

2024-12-04 17:35:51

Cách tạo user và mật khẩu cũng như gán quyền trên vps

Cách public port mysql lên url

2024-11-25 09:54:36

Cách public port mysql lên url một cách đơn giản nhưng không nên lạm dụng

Hot Sử dụng Tableau trong Đồ Án Tốt Nghiệp: Bí Quyết Thành Công

2024-11-19 15:03:51

Tableau là một công cụ trực quan hóa dữ liệu mạnh mẽ, được sử dụng rộng rãi trong lĩnh vực phân tích dữ liệu. Với khả năng kết nối đa dạng các nguồn dữ liệu, Tableau giúp sinh viên:

Hot Tổng quan về Tableau: Công cụ phân tích dữ liệu hàng đầu cho đồ án CNTT

2024-11-14 21:14:36

Tableau không chỉ là một công cụ mạnh mẽ mà còn là một lựa chọn tuyệt vời cho các bạn sinh viên và những ai đang làm đồ án CNTT cần phải phân tích và trình bày dữ liệu

Một số gợi ý đề tài đồ án tốt nghiệp do Chatgtp support gợi ý

2023-02-11 15:32:22

Tổng hợp các đề tài đồ án tốt nghiệp khá là hay do AI gợi ý cho chúng ta

Một số tính năng mà đồ án nên có được ChatGtp gợi ý cho chúng ta

2023-02-11 12:54:01

Tổng hợp các tính năng cần có trong đồ án mà công nghệ AI ChatGtp gợi ý cho chúng ta, cùng xem nhé

Một bài giới thiệu code thuê đồ án cntt từ tác giả chatgtp

2023-02-11 11:46:40

Cũng đú đỉnh một chút nay mình thử nhờ chatgtp làm một bài content giới thiệu code thuê đồ án xem như thế nào nhé?

Hot Tổng hợp bài viết hướng dẫn cài đặt và chạy code đồ án bằng php hoạc laravel

2023-01-28 10:33:55

Tổng hợp các bài hướng dẫn cài đặt các phần mềm, ứng dụng, biến môi trường và cách run project bằng mã nguồn php laravel mới nhất

5+ mẫu slide bài tập nhóm lập trình thể hiện tính chuyên nghiệp tức thì

2023-01-06 05:42:33

Giới thiệu đến bạn 5+ các mẫu slide bài tập nhóm lập trình giúp bài báo cáo trở nên chuyên nghiệp tức thì. 123CODE hỗ trợ code bài tập nhóm chính xác, nhanh chóng