Express Framework trong Node.js được xây dựng để đơn giản hóa quá trình phát triển ứng dụng web, cung cấp nhiều tính năng mạnh mẽ cho việc xây dựng cả ứng dụng single-page và multi-page.
Khám phá Express Framework trong Node.js
Đọc tiếp bài viết dưới đây của Mytour để khám phá và làm quen với Express Framework trong Node.js.
1. Express là gì?
2. Cài đặt và sử dụng Express
3. Khái Niệm Route
4. Tạo Web Server Template với Express.js
1. Khám Phá Express.js
Express.js là một framework máy chủ ứng dụng web cho Node.js, được thiết kế đặc biệt để xây dựng ứng dụng web single-page, multi-page, và các ứng dụng web lai, làm cho nó trở thành lựa chọn phổ biến nhất cho phát triển Node.js.
Express đóng vai trò là thành phần backend quan trọng trong bộ công cụ MEAN. MEAN, một bộ công cụ mã nguồn mở JavaScript miễn phí, được sử dụng để xây dựng các trang web động và ứng dụng chứa các thành phần sau:
1. MongoDB - Hệ thống quản lý cơ sở dữ liệu NoSQL tiêu biểu.
2. Express.js - Framework ứng dụng web mạnh mẽ.
3. Angular.js - Framework JavaScript MVC phổ biến trong phát triển ứng dụng web.
4. Node.js - Framework phát triển ứng dụng mạng và máy chủ có khả năng mở rộng.
Framework Express.js giúp đơn giản hóa việc xử lý nhiều loại yêu cầu như GET, PUT, POST và DELETE trong quá trình phát triển ứng dụng.
2. Cài đặt và Sử dụng Express
Express có thể được cài đặt thông qua Node Package Manager (npm). Đơn giản mở terminal và nhập lệnh sau:
npm install express
Lệnh trên sẽ yêu cầu npm tải và cài đặt module express cho bạn.
Tiếp theo, sử dụng Framework Express đã cài đặt để tạo một ứng dụng Hello World đơn giản:
Ứng dụng sẽ tạo ra một module máy chủ đơn giản, lắng nghe trên cổng 3000. Trong ví dụ này, khi một request được thực hiện thông qua trình duyệt web trên cổng này, máy chủ sẽ phản hồi với chuỗi 'Xin chào thế giới' đến máy khách.
Trong đoạn mã trên:
1. Dòng đầu tiên sử dụng hàm require để nhập module express.
2. Trước khi sử dụng module express, chúng ta cần tạo một đối tượng của module express.
3. Ở đây, chúng ta tạo một hàm callback. Hàm này sẽ được gọi mỗi khi người dùng truy cập thư mục root của ứng dụng web được tạo, là http://localhost:3000
4. Trong hàm callback, chuỗi 'Xin chào thế giới' được gửi lại máy khách. Tham số 'res' được sử dụng để gửi nội dung trở lại trang web.
5. Sử dụng hàm listen để máy chủ ứng dụng lắng nghe các yêu cầu từ máy khách trên cổng 3000 hoặc bạn có thể chỉ định một cổng khác.
Nếu lệnh trên được thực thi thành công, đầu ra sẽ có dạng như sau khi bạn chạy mã trên trình duyệt:
Kết quả đầu ra:
- Rõ ràng khi duyệt đến URL của localhost trên cổng 3000, chuỗi Hello World sẽ xuất hiện trên trang.
- Trong đoạn mã này, chúng ta đặt máy chủ lắng nghe trên cổng 3000 cụ thể, vì vậy khi truy cập URL này, chúng ta sẽ thấy kết quả.
3. Route là gì?
Route (định tuyến) là cách chúng ta xác định cách ứng dụng xử lý yêu cầu từ máy khách đến một điểm kết thúc cụ thể.
Ví dụ, máy khách có thể thực hiện yêu cầu http GET, POST, PUT hoặc DELETE đến các URL khác nhau, như sau:
http://localhost:3000/sach
http://localhost:3000/sinhvien
Trong ví dụ này:
- Nếu thực hiện yêu cầu GET đối với URL đầu tiên, phản hồi sẽ là danh sách các loại sách khác nhau.
- Nếu thực hiện yêu cầu GET đối với URL thứ hai, phản hồi sẽ là danh sách sinh viên.
- Dựa trên URL được truy cập, một hàm khác trên máy chủ web sẽ được gọi và phản hồi sẽ được gửi đến máy khách. Điều này được gọi là khái niệm định tuyến (route).
Mỗi route có thể chứa một hoặc nhiều hàm xử lý, được thực thi khi route khớp.
Dưới đây là cú pháp chung cho một route:
app.METHOD(PATH, HANDLER)
Trong đó:
- Biến app là biến thể của module express.
- METHOD đại diện cho phương thức request HTTP (GET, POST, PUT hoặc DELETE).
- PATH là đường dẫn trên máy chủ.
- HANDLE là hàm được thực thi khi route khớp với nhau.
Tham khảo ví dụ sau để hiểu rõ về route. Trong ví dụ này, chúng ta sẽ tạo 3 route:
1. Route A /Node sẽ hiển thị chuỗi 'Hướng dẫn Node' khi được truy cập.
2. Route A /Angular sẽ hiển thị chuỗi 'Hướng dẫn Angular' khi được truy cập.
3. Một route mặc định sẽ hiển thị chuỗi 'Chào mừng đến với Mytour'.
Đối với cơ bản, đoạn mã Mytour sử dụng vẫn giống như các ví dụ trước. Dưới đây là một phần bổ sung để hiển thị cách route được triển khai:
var express = require('express');
var app = express();
app.route('/Node').get(function(req, res)
{
res.send('Hướng dẫn Node');
});
post(function(req, res)
{
res.send('Hướng dẫn Angular');
});
put(function(req, res)
{
res.send('Chào mừng đến với Mytour');
}));
Trong đoạn mã này:
1. Ở đây chúng ta định nghĩa một route khi URL http://localhost:3000/Node
Hàm này có 2 tham số chính:
- Chúng ta sử dụng tham số 'res' để gửi thông tin cho máy khách.
- Tham số 'req' chứa thông tin về các yêu cầu được thực hiện. Đôi khi, các tham số bổ sung có thể được gửi như một phần của yêu cầu, vì vậy tham số 'req' có thể được sử dụng để truy xuất các thông số bổ sung được gửi.
2. Sử dụng hàm send để gửi chuỗi 'hướng dẫn Node' trở lại cho máy khách nếu route Node được chọn.
3. Ở đây, chúng ta định nghĩa một route khi URL http://localhost:3000/Angular
4. Sử dụng hàm send để gửi chuỗi 'hướng dẫn Angular' trở lại cho máy khách nếu route Angular được chọn.
5. Đây là route mặc định được chọn khi người dùng truy cập route của ứng dụng - http://localhost:3000
Kết quả đầu ra sẽ có dạng như sau:
Từ kết quả đầu ra:
- Nếu truy cập URL localhost trên cổng 3000, bạn sẽ thấy chuỗi 'chào mừng đến với Mytour' hiển thị trên trang.
- Trong đoạn mã trên, chúng ta đề cập đến URL mặc định sẽ xuất hiện trong thông báo này.
- Nếu thay đổi URL thành /Node, route Node tương ứng sẽ được kích hoạt và chuỗi 'hướng dẫn Node' sẽ xuất hiện.
- Nếu URL được thay đổi thành /Angular, route Node tương ứng sẽ được kích hoạt và chuỗi 'hướng dẫn Angular' sẽ xuất hiện.
4. Tạo Web Server với Express.js
Từ ví dụ trên, bạn có thể thấy cách chúng ta quyết định đầu ra sẽ hiển thị dựa trên route. Loại route này thường được sử dụng trong hầu hết các ứng dụng web hiện đại. Một phần khác của máy chủ web sử dụng các template trong Node.js.
Để tạo ứng dụng Node một cách nhanh chóng và đơn giản, bạn có thể tiruyện thực hiện việc này thông qua việc sử dụng các mẫu ứng dụng. Dưới đây là một ví dụ về việc sử dụng framework Jade cho template.
Bắt đầu bằng cách cài đặt Jade sử dụng Node Package Manager. Mở cửa sổ dòng lệnh và nhập lệnh sau:
npm install jade
Lệnh trên sẽ yêu cầu Node Package Manager tải và cài đặt module Jade.
Lưu ý: Chú ý rằng phiên bản mới nhất của Jade trong Node không còn được chấp nhận nữa, thay vào đó, chúng ta sẽ sử dụng Pug.
Bây giờ, sau khi đã cài đặt framework Pug, chúng ta sẽ tạo một số template cơ bản.
Bắt đầu bằng cách tạo một template Pug. Hãy tạo một tệp có tên là index.pug và chèn đoạn mã dưới đây vào:
Trong đoạn mã trên, chúng ta đã bắt đầu tạo một template đơn giản trong Pug.
1. Tại đây, chúng ta đặt tiêu đề của trang sẽ được động từ giá trị bất kỳ khi template này được gọi.
2. Các đoạn văn bản trong thẻ header sẽ được thay thế bằng giá trị động thông qua template Pug.
var express = require('express');
var app = express();
app.set('view engine', 'pug');
app.get('/', function(req, res) {
{
res.render('index',
{ title: 'Guru99', message: 'Chào mừng' })
};
var server = app.listen(3000, function() {});
// Giải thích đoạn mã trên:
1. Trước hết, để xác định ứng dụng sử dụng 'view engine' để hiển thị template, chúng ta chọn jade.
2. Hàm render được dùng để hiển thị trang web, trong ví dụ này, nó hiển thị template (index.jade) đã được tạo trước đó.
3. Chúng ta truyền giá trị Guru99 và Welcome để thay thế các tham số tiêu đề và thông báo trong template index.jade.
Nếu lệnh trên thực thi thành công, đầu ra sẽ được hiển thị khi bạn chạy mã trên trình duyệt web.
1. Đầu ra của trang hiển thị title là Guru99 và header là Welcome.
2. Điều này được thực hiện thông qua việc gọi template jade trong ứng dụng Node.js.
3. Mytour hy vọng bạn đã có cơ hội làm quen và hiểu thêm về Express Framework trong Node.js.
4. Express Framework là một framework phổ biến được tích hợp trong phát triển ứng dụng Node.js, và là lựa chọn hàng đầu cho nhiều dự án.
Route có vai trò quan trọng trong việc hướng dẫn người dùng đến các phần khác nhau của ứng dụng web dựa trên request. Phản hồi của mỗi route có thể thay đổi để hiển thị nội dung phù hợp với người dùng. Đối với việc chèn nội dung một cách hiệu quả, các template được sử dụng, trong đó Jade là một template engine phổ biến được ứng dụng rộng rãi trong các ứng dụng Node.js.