Template Engine trong Express.js

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 31 tháng 1, 2025

1. Template Engine là gì?

Template Engine (công cụ template) là một hệ thống giúp tạo ra HTML động bằng cách sử dụng các biến và logic ngay trong file template thay vì phải viết HTML thuần trong mã JavaScript.

Khi sử dụng Template Engine, ta có thể:

  • Tạo HTML động bằng cách truyền dữ liệu từ server vào template.
  • Tái sử dụng các thành phần giao diện bằng cách tạo partial templates (tệp con).
  • Giữ code gọn gàng và dễ bảo trì hơn so với việc sử dụng res.send() với chuỗi HTML thuần.

Express.js hỗ trợ nhiều template engine như:

  • EJS (Embedded JavaScript)
  • Pug (trước đây gọi là Jade)
  • Handlebars (hbs)

2. Cài đặt và sử dụng Template Engine trong Express.js

a. Cài đặt Express.js

Trước khi sử dụng bất kỳ template engine nào, ta cần cài đặt Express:

npm init -y    # Khởi tạo package.json
npm install express   # Cài đặt Express.js

b. Cấu hình Template Engine trong Express

Mặc định, Express không đi kèm template engine, nhưng bạn có thể thiết lập bằng cách:

const express = require('express');
const app = express();

// Cấu hình thư mục chứa views
app.set('views', './views');

// Cấu hình template engine
app.set('view engine', 'ejs'); // Hoặc 'pug', 'hbs' tùy theo bạn chọn engine nào

app.get('/', (req, res) => {
  res.render('index', { title: 'Trang chủ', message: 'Chào mừng đến với Template Engine!' });
});

app.listen(3000, () => {
  console.log('Server chạy tại http://localhost:3000');
});

3. Sử dụng EJS (Embedded JavaScript)

a. Cài đặt EJS

npm install ejs

b. Cấu hình Express sử dụng EJS

app.set('view engine', 'ejs');

c. Tạo file template với EJS

Tạo thư mục views và tạo file index.ejs:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><%= title %></title>
</head>
<body>
    <h1><%= message %></h1>
</body>
</html>

EJS sử dụng <%= %> để hiển thị dữ liệu được truyền từ server.

d. Chạy server và truy cập

Khởi động server:

node app.js

Truy cập: http://localhost:3000

4. Sử dụng Pug (trước đây là Jade)

a. Cài đặt Pug

npm install pug

b. Cấu hình Express sử dụng Pug

app.set('view engine', 'pug');

c. Tạo file template với Pug

Tạo file views/index.pug:

doctype html
html
  head
    title= title
  body
    h1= message

Pug sử dụng cú pháp thụt lề thay vì dấu ngoặc nhọn.

5. Sử dụng Handlebars (hbs)

a. Cài đặt Handlebars

npm install hbs

b. Cấu hình Express sử dụng Handlebars

app.set('view engine', 'hbs');

c. Tạo file template với Handlebars

Tạo file views/index.hbs:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>{{title}}</title>
</head>
<body>
    <h1>{{message}}</h1>
</body>
</html>

Handlebars sử dụng {{ }} để hiển thị dữ liệu.

6. So sánh các Template Engine

Template Engine Ưu điểm Nhược điểm
EJS Dễ học, cú pháp giống JavaScript Cần nhiều dấu <%= %> để hiển thị dữ liệu
Pug Cú pháp gọn gàng, không cần đóng thẻ HTML Khó đọc với người mới
Handlebars Đơn giản, dễ dùng, hỗ trợ partials tốt Không hỗ trợ logic phức tạp như if/else nâng cao

7. Tổng kết

  • EJS: Phù hợp nếu bạn quen với cú pháp HTML thuần.
  • Pug: Phù hợp nếu bạn thích cú pháp ngắn gọn.
  • Handlebars: Phù hợp nếu bạn cần một template engine đơn giản và dễ dùng.

Bạn nên chọn template engine phù hợp với nhu cầu của dự án!

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ