Buffer trong node.js là gì?

Để tìm hiểu về Buffer trong node.js là gì, cách tạo Buffer trong node.js như thế nào, bạn đọc cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn nhé.

Tìm hiểu Buffer trong node.js

Buffer trong node.js

Node.js cung cấp lớp Buffer để lưu trữ các dữ liệu thô tương tự như mảng các số nguyên nhưng tương ứng với cấp phát bộ nhớ thô ngoài heap V8. Lớp Buffer được sử dụng vì JavaScript pure không phù hợp cho dữ liệu nhị phân. Vì vậy, khi giao dịch với các luồng TCP hoặc hệ thống tập tin, cần phải xử lý các luồng octet.

Về cơ bản thì lớp Buffer trong Node.js là một lớp Global, và có thể được truy cập trong ứng dụng mà không cần import Module Buffer.

Tạo Buffer trong Node.js

Có nhiều cách để tạo Buffer trong Node.js, trong đó có 3 phương thức chính được sử dụng để tạo Buffer bao gồm:

- Tạo Buffer không được khởi tạo: Dưới đây là cú pháp để tạo Buffer không khởi tạo cho 10 octet:

var buf = new Buffer(10);

- Tạo Buffer từ mảng: Dưới đây là cú pháp để taoh Buffr từ mảng đã cho:

var buf = new Buffer([10, 20, 30, 40, 50]);

- Tạo Buffer từ chuỗi: Dưới đây là cú pháp để tạo buffer từ chuỗi đã cho và kiểu encoding tùy chọn:

var buf = new Buffer("Simply Easy Learning", "utf-8");

Ghi dữ liệu vào Buffer trong Node.js

Dưới đây là cú pháp để ghi dữ liệu vào Buffer trong Node.js:

buf.write(string[, offset][, length][, encoding])

Trong cú pháp trên:

- String: Chỉ định chuỗi dữ liệu được ghi vào Buffer.

- Offset: Chỉ định chỉ mục của Buffer để bắt đầu ghi. Giá trị mặc định là 0.

- Length: Chỉ định số byte cần ghi. Mặc định là buffer.length.

- Encoding: Sử dụng encoding mặc định utf8.

- Trả về các giá trị từ ghi Buffer:

Phương thức này được sử dụng để trả về octet được ghi. Trong trường hợp nếu thiếu không gian trống cho Buffer để gán cho toàn bộ cuỗi, nó sẽ ghi một phần của chuỗi đó.

Để hiểu rõ hơn cách ghi dữ liệu vào Buffer trong Node.js, bạn đọc có thể tham khảo tiếp ví dụ dưới đây để dễ hình dung hơn:

Tạo một file JavaScript đặt tên là main.js có chứa đoạn mã dưới đây:

buf = new Buffer(256);

len = buf.write("Simply Easy Learning");

console.log("Octets written : "+ len);

TIếp theo mở Node.js command prompt và nhập lệnh dưới đây vào:

node main.js

Kết quả đầu ra:

Đọc dữ liệu từ Buffer trong Node.js

Để đọc dữ liệu từ Buffer trong file Node.js, bạn sử dụng cú pháp dưới đây:

buf.toString([encoding][, start][, end])

Trong cú pháp trên:

- Encoding: Chỉ định encoding để sử dụng, utf8 là encoding mặc định.

- Start: Chỉ định chỉ mục bắt đầu để đọc, mặc định là 0.

- End: Chỉ định chỉ mục kết thúc việc đọc, mặc định là buffer conplete.

Trả về các giá trị từ đọc Buffer:

Phương thức này giải mã và trả về chuỗi từ dữ liệu Buffer được encoding bằng cách sử dụng encoding bộ ký tự được chỉ định.

Tham khảo tiếp ví dụ dưới đây để dễ hình dung hơn các đọc dữ liệu từ Buffer trong Node.js:

Tạo file main.js có chứa đoạn mã dưới đây:

buf = new Buffer(26);

for (var i = 0 ; i < 26="" ;="" i++)="">

buf[i] = i + 97;

}

console.log( buf.toString('ascii')); // outputs: abcdefghijklmnopqrstuvwxyz

console.log( buf.toString('ascii',0,5)); // outputs: abcde

console.log( buf.toString('utf8',0,5)); // outputs: abcde

console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde

Tiếp theo mở Node.js command prompt và nhập lệnh dưới đây vào để thực thi:

node main.js

Kết quả đầu ra:

Chuyển đổi Buffer sang JSON

Sử dụng cú pháp dưới đây để chuyển đổi Buffer sang JSON trong Buffer:

buf.toJSON()

Giá trị trả về:

Cú pháp trên trả về JSON tương ứng với cá thể Buffer.

Ví dụ:

Dưới đây là ví dụ để bạn dễ hình dung hơn cách chuyển đổi Buffer sang JSON trong Node.js:

Khi chương trình trên được thực thi, nó sẽ trả về kết quả dưới đây:

Nối Buffer trong Node.js

Dưới đây là cú pháp để nối các Buffer thành một Buffer duy nhất trong Node.js:

Buffer.concat(list[, totalLength])

Trong cú pháp trên:

- List: Danh sách mảng các đối tượng Buffer được nối.

- totalLength: Tổng chiều dài Buffer được nối.

Giá trị trả về:

Cú pháp trên trả về một biến thể Buffer.

Ví dụ:

Khi chương trình trên được thực thi, nó sẽ trả về kết quả dưới đây:

buffer3 content: TutorialsPoint Simply Easy Learning

So sánh Buffer

Dưới đây là cú pháp để so sánh 2 Buffer trong Node.js:

buf.compare(otherBuffer);

Trong cú pháp trên:

- otherBuffer: Là buffer được so sánh với buf.

Giá trị trả về:

Trả về giá trị cho biết Buffer này là đứng trước, sau hay cùng thứ tự với Buffer kia.

Ví dụ:

Khi chương trình trên được thực thi, nó sẽ trả về kết quả dưới đây:

ABC comes before ABCD

Sao chép Buffer

Cú pháp để sao chép Buffer trong Node.js có dạng:

buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

Trong đó:

- targetBuffer: Đối tượng Buffer được sao chép.

- targetStart: Số, tùy chọn, mặc định: 0.

- sourceStart: Số, tùy chọn, mặc định: 0.

- sourceEnd: Số, tùy chọn, mặc định: buffer.length.

Giá trị trả về:

Không có giá trị trả về nào. Sao chép dữ liệu từ Buffer này vào Buffer đích ngay cả khi vùng bộ nhớ đích trùng lặp với nguồn. Nếu không xác định, tham số targetStart và sourceStart mặc định là 0, và sourceEnd mặc định là buffer.length.

Ví dụ:

Khi chương trình trên được thực thi, nó sẽ trả về kết quả dưới đây:

buffer2 content: ABC

Chia Buffer

Dưới đây là cú pháp chia nhỏ Buffer trong Node.js:

buf.slice([start][, end])

Trong cú pháp trên:

- start: Số, tùy chọn, mặc định là 0.

- end: Số, tùy chọn, mặc định là: buffer.length.

Giá trị trả về:

Trả về Buffer mới tham chiếu cùng bộ nhớ với bộ nhớ cũ, nhưng bị bù trừ, cắt xém bởi các chỉ mục start (mặc định là 0) và end (mặc định là buffer.length). Chỉ số âm tính bắt đầu từ cuối bộ đệm.

Ví dụ:

Khi chương trình trên được thực thi, nó sẽ trả về kết quả dưới đây:

buffer2 content: Tutorials

Độ dài Buffer

Dưới đây là cú pháp dể lấy kích thước Buffer trong Node.js:

buf.length;

Giá trị trả về:

Cú pháp trên trả về kích thước một Buffer theo đơn vị là byte.

Ví dụ:

Khi chương trình trên được thực thi, nó sẽ trả về kết quả dưới đây:

buffer length: 14

Phương thức tham chiếu

Dưới đây là tham chiếu module Buffer có sẵn trong Node.js. Để biết thêm chi tiết, bạn có thể tham khảo thêm trong tài liệu chính thức.

Phương thức trong Class

Dưới đây là bảng danh sách các phương thức trong Class:

Bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn về Buffer trong node.js là gì. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết Học Node.js khác đã có trên Taimienphi.vn để tìm hiểu cách tạo ứng dụng Node.js như thế nào nhé.

Trong các bài viết trước Taimienphi.vn đã giới thiệu cho bạn về Event, Callback trong Node.js là gì. Bài viết dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về Buffer trong node.js là gì?
Cách tạo ứng dụng Node.js
Tìm hiểu Event trong Node.js
Cách cài đặt Node.js trên UNIX/Linux/Mac OS X, và SunOS
File System (FS) trong Node.js là gì?
Callback trong Node.js là gì?
NPM trong Node.js là gì?

ĐỌC NHIỀU