Node.js - Các mô-đun: Cửa ngõ đến mã tổ chức và tái sử dụng

Xin chào các bạn đang học lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các mô-đun Node.js. Là người dạy máy tính ở khu phố của bạn, tôi ở đây để hướng dẫn bạn qua chủ đề hấp dẫn này. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những điều cơ bản và dần dần nâng cao. Vậy, hãy lấy một tách cà phê (hoặc đồ uống yêu thích của bạn), và chúng ta cùng bắt đầu nhé!

Node.js - Modules

什么是 Node.js 中的模块?

Hãy tưởng tượng bạn đang xây dựng một 성 Lego khổng lồ. Thay vì tạo mọi thứ một lần, có phải dễ dàng hơn nếu bạn xây dựng các phần nhỏ separately và sau đó ráp chúng lại với nhau? Đó chính xác là điều mà các mô-đun làm trong lập trình!

Trong Node.js, các mô-đun giống như các khối xây dựng của mã. Chúng cho phép chúng ta tổ chức mã của mình vào các tệp riêng biệt, mỗi tệp tập trung vào một chức năng cụ thể. Điều này làm cho mã của chúng ta:

  1. Được tổ chức hơn
  2. Dễ bảo trì hơn
  3. Tái sử dụng được trên các phần khác nhau của ứng dụng của chúng ta

Các loại mô-đun trong Node.js

Trong thế giới Node.js, chúng ta có ba loại mô-đun:

1. Core Modules (Mô-đun lõi)

Đây là các mô-đun tích hợp sẵn mà bạn có khi cài đặt Node.js. Chúng giống như các khối Lego tiêu chuẩn có trong mỗi bộ. Bạn không cần cài đặt chúng riêng lẻ - chúng sẵn sàng sử dụng ngay từ hộp!

Một số mô-đun lõi phổ biến bao gồm:

Tên mô-đun Mô tả
fs Để làm việc với hệ thống tệp
http Để tạo các máy chủ HTTP
path Để xử lý các đường dẫn tệp
os Để các thao tác liên quan đến hệ điều hành

2. Local Modules (Mô-đun cục bộ)

Đây là các mô-đun mà chúng ta tự tạo. Chúng giống như các mảnh Lego tùy chỉnh mà chúng ta làm cho dự án cụ thể của mình. Chúng ta sẽ tập trung nhiều vào những mô-đun này hôm nay!

3. Third-party Modules (Mô-đun của bên thứ ba)

Đây là các mô-đun được tạo bởi các nhà phát triển khác mà chúng ta có thể sử dụng trong dự án của mình. Chúng giống như các bộ Lego chuyên dụng bạn có thể mua riêng để nâng cao sáng tạo của mình. Chúng ta cài đặt những mô-đun này bằng cách sử dụng npm (Node Package Manager).

Tạo và sử dụng các mô-đun cục bộ

Hãy bắt đầu bằng cách tạo một mô-đun cục bộ đơn giản. Chúng ta sẽ tạo một mô-đun thực hiện các thao tác toán học cơ bản.

Đầu tiên, tạo một tệp có tên mathOperations.js:

// mathOperations.js

function add(a, b) {
return a + b;
}

function subtract(a, b) {
return a - b;
}

function multiply(a, b) {
return a * b;
}

function divide(a, b) {
if (b === 0) {
return "Không thể chia cho không!";
}
return a / b;
}

module.exports = {
add: add,
subtract: subtract,
multiply: multiply,
divide: divide
};

Hãy phân tích điều này:

  1. Chúng ta định nghĩa bốn hàm: add, subtract, multiply, và divide.
  2. Hàm divide bao gồm một kiểm tra để ngăn chặn việc chia cho không.
  3. Chúng ta sử dụng module.exports để làm cho các hàm này khả dụng cho các tệp khác.

Bây giờ, hãy tạo một tệp khác có tên app.js để sử dụng mô-đun của chúng ta:

// app.js

const mathOps = require('./mathOperations');

console.log(mathOps.add(5, 3));        // Output: 8
console.log(mathOps.subtract(10, 4));  // Output: 6
console.log(mathOps.multiply(3, 7));   // Output: 21
console.log(mathOps.divide(15, 3));    // Output: 5
console.log(mathOps.divide(10, 0));    // Output: Không thể chia cho không!

Đây là những gì đang xảy ra:

  1. Chúng ta sử dụng require('./mathOperations') để nhập mô-đun cục bộ của mình. Dấu ./ cho thấy rằng tệp nằm trong cùng thư mục.
  2. Chúng ta lưu mô-đun đã nhập vào biến mathOps.
  3. Bây giờ chúng ta có thể sử dụng các hàm từ mô-đun của mình bằng cách gọi mathOps.functionName().

Sử dụng các mô-đun lõi

Bây giờ, hãy xem cách sử dụng một mô-đun lõi. Chúng ta sẽ sử dụng mô-đun fs (File System) để đọc một tệp:

// fileReader.js

const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
console.log('Nội dung tệp:', data);
});

Trong ví dụ này:

  1. Chúng ta sử dụng require('fs') để nhập mô-đun fs lõi.
  2. Chúng ta sử dụng hàm readFile để đọc một tệp có tên 'example.txt'.
  3. Hàm này nhận ba tham số: tên tệp, mã hóa (utf8 trong trường hợp này), và một hàm回调.
  4. Hàm回调 xử lý bất kỳ lỗi nào và ghi nội dung tệp nếu thành công.

Sử dụng các mô-đun của bên thứ ba

Cuối cùng, hãy xem cách sử dụng một mô-đun của bên thứ ba. Chúng ta sẽ sử dụng thư viện phổ biến lodash:

Đầu tiên, bạn cần cài đặt nó:

npm install lodash

Sau đó, bạn có thể sử dụng nó trong mã của mình:

// lodashExample.js

const _ = require('lodash');

const numbers = [1, 2, 3, 4, 5];
console.log(_.sum(numbers));  // Output: 15

const words = ['apple', 'banana', 'cherry'];
console.log(_.capitalize(words[0]));  // Output: Apple

Tại đây:

  1. Chúng ta sử dụng require('lodash') để nhập thư viện lodash.
  2. Chúng ta sử dụng hàm sum để cộng tất cả các số trong một mảng.
  3. Chúng ta sử dụng hàm capitalize để viết hoa chữ cái đầu tiên của một từ.

Kết luận

Và thế là bạn đã có, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của các mô-đun Node.js, từ việc tạo các mô-đun cục bộ đến việc sử dụng các mô-đun lõi và của bên thứ ba. Các mô-đun giống như gia vị bí mật giúp ứng dụng Node.js của bạn trở nên có tổ chức, dễ bảo trì và mạnh mẽ hơn.

Nhớ rằng, cũng như bạn không xây dựng một cấu trúc Lego khổng lồ tất cả một lần, bạn cũng không nên cố gắng nhét tất cả mã của mình vào một tệp duy nhất. Hãy chia nhỏ mã của bạn thành các mô-đun, và bạn sẽ thấy mã của mình trở nên sạch sẽ và hiệu quả hơn!

Tiếp tục thực hành, tiếp tục lập trình, và quan trọng nhất, hãy vui vẻ! Trước khi bạn nhận ra, bạn sẽ xây dựng các ứng dụng tuyệt vời với Node.js. Hẹn gặp lại các bạn, chúc các bạn lập trình vui vẻ!

Credits: Image by storyset