Tìm hiểu nodejs (P3): Đọc ghi file bằng Module FileSystem và cách để tự tạo một Module mới

Tram Ho

1. Modules trong nodejs


Như từ các ví dụ trước ta đã sử dụng câu lệnh:

const http = require('http');

http ở đây chính là 1 modules được xây dựng sẵn (built-in) của nodejs.

Ta gọi http thông qua require và gán nó vào 1 biến, điều này cho phép chúng ta tạo ra 1 instance của modules này. Bằng cách này, chúng ta có thể sử dụng tất cả các function đã được xây dựng trong modules http.

2. Sử dụng Module FileSystem để đọc và viết file

Để sử dụng module FileSystem ta sử dụng

2.1 Xử lý đồng bộ

Trước tiên ta sử dụng đọc và ghi file đồng bộ (synchronous) bằng readFileSyncwriteFileSync.

Lưu ý : Tham số thứ 2 là kiểu encoding, khi truyền tham số này, dữ liệu trả về sẽ là String, nếu không, function readFileSync sẽ trả về dạng buffer như sau

2.2 Xử lý không đồng bộ

Một cách đọc file khác là đọc file không đồng bộ (asynchronous) bằng function readFile. Vậy 2 cách đọc file này khác nhau như thế nào?

Ở đây chúng ta cần 1 callback function, đơn giản là báo lỗi nếu có lỗi và nếu không thì in ra dữ liệu được từ file.

Chạy thử đoạn code trên và đây là kết quả:

Ta có thể thấy rằng ở đây, khi mà dữ liệu file lớn và hàm readFile không thể xử lý được ngay, thì server sẽ tiếp tục chạy đoạn code phía dưới trong khi đó thì function readFile cứ tiếp tục thực hiện nhiệm vụ của nó. Điều này sẽ đem lại nhiều lợi ích về performance khi bài toán thực tế đòi hỏi việc xử lý nhiều request một lúc.

3. Tự tạo 1 custom modules

Nodejs cho phép chúng ta tự tạo ra 1 modules.

Ví dụ như chúng ta muốn tự tạo ra 1 Modules có thể nói xin chào bằng nhiều thứ tiếng chẳng hạn.

Trước tiên hãy tạo ra file hello.js

Ta sử dụng từ khóa exports để có thể sử dụng các function này ở file main (app.js)

Tại file app.js ta có thể gọi đến module này giống như cách chúng ta sử dụng để gọi http.

Chú ý:
Có 1 cách ‘đẹp đẽ’ hơn mà chúng ta có thể sử dụng để khai báo các function trong module.

Nguồn tham khảo:

https://www.udemy.com/course/learn-node-js-complete-from-very-basics-to-advance

https://stackoverflow.com/questions/43402627/are-there-any-performance-benefits-of-using-asynchronous-functions-over-synchron

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo