Kiến thức cơ bản về Node.js
1. Modules trong Node.js
Node.js có hệ thống module mạnh mẽ, giúp tổ chức mã nguồn tốt hơn và tái sử dụng dễ dàng.

1.1 Core Modules
Node.js cung cấp nhiều core modules tích hợp sẵn như:
-
fs
(File System) – làm việc với file -
http
– tạo server HTTP -
path
– xử lý đường dẫn file -
os
– lấy thông tin hệ điều hành -
events
– xử lý sự kiện
Ví dụ sử dụng fs
để đọc file:
const fs = require("fs");
fs.readFile("example.txt", "utf8", (err, data) => {
if (err) {
console.error("Lỗi khi đọc file:", err);
return;
}
console.log("Nội dung file:", data);
});
1.2 Tạo module tùy chỉnh
Bạn có thể tự tạo module bằng cách sử dụng module.exports
.
Ví dụ: Tạo module math.js
để xử lý phép tính
// math.js
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
module.exports = { add, subtract };
Import và sử dụng module math.js
trong app.js
const math = require("./math");
console.log(math.add(5, 3)); // 8
console.log(math.subtract(10, 4)); // 6
1.3 Import/Export module với require
và module.exports
-
module.exports
dùng để xuất dữ liệu từ module. -
require
dùng để nhập module vào file khác.
Ví dụ xuất nhiều function từ module:
// utils.js
module.exports = {
sayHello: function () {
return "Hello, Node.js!";
},
currentTime: function () {
return new Date().toLocaleTimeString();
},
};
Sử dụng module:
const utils = require("./utils");
console.log(utils.sayHello());
console.log(utils.currentTime());
2. NPM (Node Package Manager)
2.1 Cài đặt và sử dụng package
NPM là trình quản lý package cho Node.js, cho phép cài đặt các thư viện từ npmjs.com.
Cài đặt package:
npm install lodash
Sử dụng lodash
trong code:
const _ = require("lodash");
const numbers = [1, 2, 3, 4, 5];
console.log(_.shuffle(numbers));
2.2 Tạo file package.json
Dùng package.json
để quản lý thông tin dự án và package.
Khởi tạo package.json
tự động:
npm init -y
Cấu trúc file package.json
:
{
"name": "my-node-app",
"version": "1.0.0",
"description": "Ứng dụng Node.js đầu tiên",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"lodash": "^4.17.21"
}
}
2.3 Sử dụng các script trong package.json
Thêm lệnh trong package.json
:
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
}
Chạy ứng dụng:
npm run start
Chạy ở chế độ phát triển với nodemon
(tự động reload):
npm run dev
3. Event Loop trong Node.js
3.1 Cách Node.js xử lý non-blocking I/O
Node.js sử dụng event loop để xử lý I/O mà không chặn chương trình.
Ví dụ blocking code (chặn chương trình):
const fs = require("fs");
const data = fs.readFileSync("example.txt", "utf8");
console.log(data);
console.log("Lệnh này chạy sau khi đọc file xong.");
Ví dụ non-blocking code (không chặn chương trình):
fs.readFile("example.txt", "utf8", (err, data) => {
console.log(data);
});
console.log("Lệnh này chạy ngay lập tức!");
Kết quả chạy code non-blocking:
Lệnh này chạy ngay lập tức!
(Nội dung file hiển thị sau khi đọc xong)
3.2 Ví dụ minh họa event loop
Code minh họa event loop trong Node.js:
console.log("Bắt đầu");
setTimeout(() => {
console.log("Chạy sau 2 giây");
}, 2000);
console.log("Kết thúc");
Kết quả chạy:
Bắt đầu
Kết thúc
Chạy sau 2 giây
Giải thích:
-
console.log("Bắt đầu")
chạy ngay. -
setTimeout()
đưa callback vào hàng chờ của event loop. -
console.log("Kết thúc")
chạy tiếp, không bị chặn bởisetTimeout()
. - Sau 2 giây, callback trong
setTimeout()
được thực thi.
Tổng kết
-
Modules trong Node.js: Core modules (
fs
,http
,path
), tạo module tùy chỉnh vớirequire
vàmodule.exports
. -
NPM: Cài đặt package, tạo
package.json
, viết script để chạy ứng dụng. - Event Loop: Cơ chế non-blocking giúp xử lý nhiều tác vụ mà không chặn chương trình.

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.
Xem thêm

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