Rate this post

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

Các bài viết liên quan:

Lớp đệm là một lớp toàn cục. Nó có thể được truy cập trong ứng dụng mà không cần nhập mô-đun đệm.

Node.js Tạo bộ đệm

Có nhiều cách để xây dựng bộ đệm Node. Sau đây là ba phương pháp thường được sử dụng:

Tạo bộ đệm chưa khởi tạo: Sau đây là cú pháp tạo bộ đệm chưa khởi tạo gồm 10 octet:

var buf = new Buffer(10);  

Tạo bộ đệm từ mảng: Sau đây là cú pháp để tạo bộ đệm từ một mảng nhất định:

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

Tạo bộ đệm từ chuỗi: Sau đây là cú pháp để tạo Bộ đệm từ một chuỗi nhất định và kiểu mã hóa tùy chọn:

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

Node.js Ghi vào bộ đệm

Sau đây là phương pháp để ghi vào bộ đệm Node:

Cú pháp:

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

Giải thích thông số:

  • string: Nó chỉ định dữ liệu chuỗi được ghi vào bộ đệm.
  • offset: Nó chỉ định chỉ mục của bộ đệm để bắt đầu ghi. Giá trị mặc định của nó là 0.
  • length: Nó chỉ định số byte để ghi. Mặc định là buffer.length
  • encoding: Mã hóa để sử dụng. ‘utf8’ là mã hóa mặc định.

Trả về giá trị từ bộ đệm ghi:

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

Hãy lấy một ví dụ:

Tạo tệp JavaScript có tên “main.js” có mã sau:

File: main.js

buf = new Buffer(256);  
len = buf.write("Simply Easy Learning");  
console.log("Octets written : "+  len);  

Mở dấu nhắc lệnh Node.js và thực thi đoạn mã sau:

node main.js  

Output:

Node.js Reading from buffers

Sau đây là phương pháp đọc dữ liệu từ bộ đệm Node.

Cú pháp:

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

Giải thích thông số:

  • encoding: Nó chỉ định mã hóa để sử dụng. ‘utf8’ là mã hóa mặc định
  • start: Nó chỉ định chỉ mục bắt đầu để bắt đầu đọc, mặc định là 0.
  • end: Nó chỉ định end index để kết thúc việc đọc, mặc định là bộ đệm hoàn chỉnh.

Trả về giá trị đọc từ bộ đệm:

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

Hãy lấy một ví dụ:

File: main.js

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

Mở console Node.js và gõ lệnh:

node main.js 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now