Utility Module trong Node.js là những module cung cấp các hàm tiện ích cho việc phát triển ứng dụng web bằng Node.js. Có nhiều Utility Module khác nhau trong thư viện module của Node.js, nhưng trong bài này, chúng ta sẽ cùng nhau tìm hiểu về ba module phổ biến và hữu dụng nhất: os, pathnet.

1. Utility Module trong Node.js là gì?

Utility Module là một loại module trong lập trình Node.js, cung cấp các hàm tiện ích cơ bản liên quan tới hệ điều hành, đường dẫn file, mạng, DNS và xử lý lỗi. Utility Module cũng có thể được hiểu là phần mềm tiện ích thực hiện các tác vụ cụ thể để quản lý tài nguyên máy tính. Một số ví dụ về Utility Module trong Node.js là:

  • os Module: Cung cấp các hàm tiện ích cơ bản liên quan tới hệ điều hành, như lấy thông tin về bộ nhớ, CPU, hệ thống tệp và các biến môi trường.
  • path Module: Cung cấp các tiện ích để xử lý và biến đổi đường dẫn tới file, như lấy tên file, đuôi file, thư mục cha và nối đường dẫn.
  • net Module: Hoạt động như là Network Wrapper, biến Server và Client thành các Stream, cho phép truyền dữ liệu qua TCP hoặc IPC.
  • dns Module: Cung cấp các hàm để thực hiện DNS Lookup, như lấy địa chỉ IP từ tên miền, hoặc ngược lại.
  • domain Module: Được sử dụng để can thiệp các lỗi chưa được xử lý, bằng cách tạo ra các miền (domain) để bắt và xử lý các sự kiện lỗi.

2. os Module trong Node.js

os Module cung cấp các hàm tiện ích cơ bản liên quan tới hệ điều hành, như kiểm tra loại hệ điều hành, nền tảng, bộ nhớ tổng và bộ nhớ khả dụng. Để sử dụng os Module, chúng ta cần import nó vào chương trình bằng cách sử dụng lệnh require:

const os = require('os');

Sau đó, chúng ta có thể sử dụng các hàm của os Module để lấy thông tin về hệ điều hành. Ví dụ, để lấy loại hệ điều hành thông qua hàm os.type():

console.log('Operating System type: ' + os.type());

Kết quả sẽ là một chuỗi cho biết loại hệ điều hành, như Windows_NT, Linux hoặc Darwin. Tương tự, bạn có thể sử dụng các hàm khác của os Module để lấy các thông tin khác, như os.platform(), os.totalmem()os.availmem(). Dưới đây là một số phương thức và thuộc tính thông dụng của os Module:

Phương thức và thuộc tínhMô tả
os.type()Trả về tên của hệ điều hành, như Windows_NT, Linux hoặc Darwin
os.platform()Trả về nền tảng của hệ điều hành, như win32, linux hoặc darwin
os.arch()Trả về cấu trúc CPU của hệ điều hành, như x64, arm hoặc ia32
os.totalmem()Trả về tổng dung lượng bộ nhớ (đơn vị byte) của hệ điều hành
os.freemem()Trả về tổng dung lượng bộ nhớ chưa dùng đến (đơn vị byte) của hệ điều hành
os.cpus()Trả về một mảng đối tượng chứa thông tin về CPU/core, bao gồm model, speed (giá trị MHz), và times (một đối tượng chứa các giá trị user, nice, sys, idle, và irq)
os.networkInterfaces()Trả về một đối tượng chứa các thông tin về các giao diện mạng, bao gồm address, netmask, family, mac, và internal
os.tmpdir()Trả về thư mục mặc định cho các file tạm thời của hệ điều hành
os.hostname()Trả về hostname của hệ điều hành
os.EOLMột hằng số định nghĩa ký tự kết thúc dòng cho hệ điều hành, như \n cho POSIX hoặc \r\n cho Windows

>>> Xem thêm bài viết:
- Node.js là gì? Kiến thức tổng quan từ A-Z về Node.js

- Giải thích về Asynchronous trong JavaScript và cách thức hoạt động

- NestJS là gì? Tính năng hữu ích của NestJS đối với lập trình viên

3. path Module trong Node.js

path Module cung cấp các tiện ích để xử lý và biến đổi đường dẫn tới file, như lấy đường dẫn tuyệt đối, lấy phần mở rộng của file, hoặc nối các đường dẫn lại với nhau. Để sử dụng path Module, chúng ta cũng cần import nó vào chương trình bằng cách sử dụng lệnh require:

const path = require('path');

Sau đó, chúng ta có thể sử dụng các hàm của path Module để thao tác với đường dẫn. Ví dụ, để lấy đường dẫn tuyệt đối của một file, chúng ta có thể sử dụng hàm path.resolve():

console.log('resolve: ' + path.resolve('paths.js'));

Kết quả sẽ là một chuỗi cho biết đường dẫn tuyệt đối của file paths.js, như /home/user/projects/paths.js. Tương tự, bạn có thể sử dụng các hàm khác của path Module để lấy các thông tin khác, như path.extname(), path.basename() hoặc path.join(). Dưới đây là một số phương thức và thuộc tính thông dụng của path Module:

Phương thức và thuộc tínhMô tả
path.normalize(path)Chuẩn hóa đường dẫn, loại bỏ các ký tự ... không cần thiết
path.join([path1][, path2][, ...])Nối các tham số là đường dẫn với nhau và sau đó chuẩn hóa đường dẫn kết quả
path.resolve([from ...], to)Trả về đường dẫn tuyệt đối từ các đường dẫn tương đối
path.isAbsolute(path)Kiểm tra xem đường dẫn có phải là tuyệt đối hay không
path.relative(from, to)Trả về đường dẫn tương đối từ một đường dẫn tới một đường dẫn khác
path.dirname(path)Trả về tên thư mục của một đường dẫn
path.basename(path[, ext])Trả về phần cuối cùng của một đường dẫn, có thể loại bỏ phần mở rộng nếu được chỉ định
path.extname(path)Trả về phần mở rộng của một đường dẫn, từ ký tự . đến cuối chuỗi
path.parse(path)Trả về một đối tượng chứa các thành phần của một đường dẫn, như root, dir, base, name, và ext
path.format(pathObject)Trả về một chuỗi đường dẫn từ một đối tượng, ngược lại với path.parse
path.sepBiểu thị ký tự phân cách đường dẫn của nền tảng, có thể là \\ hoặc /
path.delimiterBiểu thị ký tự phân cách giữa các đường dẫn của nền tảng, có thể là ; hoặc :

4. net Module trong Node.js

net Module hoạt động như là Network Wrapper, biến Server và Client thành các Stream. Điều này cho phép chúng ta giao tiếp với các thiết bị mạng khác bằng cách sử dụng các sự kiện và các phương thức của Stream. Để sử dụng net Module, chúng ta cần import nó vào bằng cách sử dụng lệnh require:

const net = require('net');

Sau đó, chúng ta có thể sử dụng các hàm của net Module để tạo Server và Client. Ví dụ, để tạo một Server, bạn có thể sử dụng hàm net.createServer():

const server = net.createServer(function(connection) {
  console.log('client connected');
  connection.on('end', function() {
    console.log('client disconnected');
  });
  connection.write('Hello World!\r\n');
  connection.pipe(connection);
});
server.listen(8080, function() {
  console.log('server listening');
});

Đoạn code trên sẽ tạo một Server lắng nghe trên cổng 8080, và khi có một Client kết nối tới, nó sẽ gửi chuỗi Hello World! cho Client, và đóng kết nối khi Client ngắt kết nối. Tương tự, để tạo một Client, bạn có thể sử dụng hàm net.connect():

const client = net.connect(8080, function() {
  console.log('Client Connected');
  client.write('Stringee\r\n');
});
client.on('data', function(data) {
  console.log(data.toString());
  client.end();
});
client.on('end', function() {
  console.log('Server Disconnected');
});

Đoạn code trên sẽ tạo một Client kết nối tới Server trên cổng 8080, và gửi chuỗi Stringee cho Server, và nhận dữ liệu từ Server, và ngắt kết nối khi không còn dữ liệu. Dưới đây là một số phương thức và thuộc tính thông dụng của net Module:

Phương thức và thuộc tínhMô tả
net.createServer([options][, connectionListener])Tạo một TCP Server mới. Tham số connectionListener là một hàm callback được gọi khi có một Client kết nối tới Server
net.connect(options[, connectionListener])Tạo một Socket mới và kết nối tới địa chỉ và cổng đã cho. Tham số options là một đối tượng chứa các thông tin như host, port, path, family, localAddress, localPort, hints, lookuptimeout. Tham số connectionListener là một hàm callback được gọi khi Socket được kết nối
net.createConnection(options[, connectionListener])Tương tự như net.connect
net.connect(port[, host][, connectListener])Tạo một Socket mới và kết nối tới cổng và host đã cho. Nếu host không được cung cấp, mặc định là localhost. Tham số connectListener là một hàm callback được gọi khi Socket được kết nối
net.createConnection(port[, host][, connectListener])Tương tự như net.connect
net.connect(path[, connectListener])Tạo một Socket mới và kết nối tới đường dẫn Unix đã cho. Tham số connectListener là một hàm callback được gọi khi Socket được kết nối
net.createConnection(path[, connectListener])Tương tự như net.connect
net.isIP(input)Kiểm tra xem input có phải là một địa chỉ IP hay không. Trả về 0 nếu không phải, 4 nếu là IPv4 và 6 nếu là IPv6
net.isIPv4(input)Kiểm tra xem input có phải là một địa chỉ IPv4 hay không. Trả về true nếu phải, false nếu không
net.isIPv6(input)Kiểm tra xem input có phải là một địa chỉ IPv6 hay không. Trả về true nếu phải, false nếu không

Tổng kết

Trong bài viết này, chúng ta đã tìm hiểu về các Utility Module phổ biến nhất trong Node.js là os, pathnet. Với việc sử dụng các hàm tiện ích của các module này để lấy thông tin về hệ điều hành, xử lý đường dẫn file, và tạo Server và Client trong mạng TCP hoặc Unix. Hy vọng bài blog này đã giúp bạn hiểu hơn về module web trong Node.js và cách sử dụng chúng. Hẹn gặp lại bạn ở các bài viết khác của Stringee tại đây.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY

Banner bottom