Ví dụ về Buffer trong NodeJS

Ví dụ về Buffer trong NodeJS là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Ví dụ về Buffer trong NodeJS sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và NodeJS nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về khái niệm Buffer trong Nodejs, cách sử dụng Buffer và các API mà Nodejs hỗ trợ trong thư viện này.

Buffer khá là quan trọng trong lập trình NodeJS, khi hiểu rõ về Buffer việc lập trình với NodeJS cũng sẽ đơn giản hơn rất nhiều.

1. Buffer trong NodeJS là gì ?

Javascript thuần sử dụng Unicode khá nhiều, nhưng nó được xây dựng không để hỗ trợ kiểu dữ liệu nhị phân. Trong khi xử lý càng luồng TCP hoặc xử lý tệp, cần phải xử lý các luồng octet. NodeJs cung cấp cho chúng ta Buffer để lưu trữ dữ liệu thô thành các mảng số nguyên tố tương ứng với việc cấp phát bộ nhớ heap V8 (vùng nhớ).

Nếu như các bạn đã đọc bài trước thì Buffer là một trong những Global Objects trong Nodejs và nó sẽ được sử dụng mà không cần yêu cầu bất cứ module nào.

Trong bài này mình sẽ chỉ ra các phương thức và thuộc tính trong module Buffer mà chúng ta hay sử dụng.

2. Sử dụng Buffer trong NodeJS

Dưới đây là một số các hàm và thuộc tính hay được sử dụng trong Buffer, chúng ta sẽ cùng nhau đi tìm hiểu nhé!

Tạo một Buffer mới

Để tạo Buffers ta có thể dùng rất nhiều cách khác nhau, sau đây là một số cách để chúng ta có thể thao tác tạo với Buffer:

Cách 1: Tạo một Buffer bằng tham số, có thể chứa 10 bytes

  var buf = new Buffer(10);   

Cách 2: Tạo Buffer với giá trị là một mảng

  var buf = new Buffer([25, 50, 100, 200, 400]);   

Cách 3: Tạo buffer với giá trị là một chuỗi và mã tùy chỉnh kiểu mã hóa :

  var buf = new Buffer("Hoidapcode.com", "utf-8"); 

Kiểu mã hóa mặc định là "utf-8", buffer hỗ trợ mã hóa theo nhiều kiểu khác nhau như : "ascii", "utf8", "utf16le", "ucs2", "base64", "hex"... cho phép bạn có thể tùy chỉnh kiểu mã hóa mà bạn muốn.

Ghi giá trị vào Buffer

Cú pháp

Bạn có thể ghi giá trị lên Buffer sử dụng cú pháp :

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

Tham số

Chúng ta có thể truyền vào 4 tham số :

  • string: chuỗi giá trị mà bạn muốn ghi, đây là tham số bắt buộc.
  • offset: Vị trí bắt đầu mà bạn muốn ghi trong Buffer, mặc định sẽ là 0.
  • length: Số bytes mà bạn muốn ghi lên, mặc định sẽ là độ dài của Buffer.
  • encoding: kiểu mã hóa mà bạn muốn truyền vào, mặc định sẽ là "utf8".

Ví dụ

Sau đây là ví dụ nhỏ để bạn hiểu rõ hơn về Buffer nhé :

Tạo file có tên là write.js có nội dung như sau:

  buf = new Buffer(256);   writedBuf = buf.write("Hoidapcode.com");   console.log(writedBuf) 

Chạy file write.js bằng cách mở terminal và gõ dòng lệnh :

  node write.js 

Chúng ta sẽ nhận được một mảng có số nguyên. Mảng các số nguyên đó được gọi là kiểu dữ liệu Buffer có giá trị là Hoidapcode.com

Đọc giá trị của Buffer

Cú pháp

Để đọc giá trị của Buffer chúng ta sử dụng phương thức toString() cú pháp:

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

Tham số

Phương thức toString() trong module Buffer cho phép chúng ta truyền vào 3 tham số và cả 3 tham só đều không bắt buộc.

  • encoding: kiểu dữ liệu dùng để giải mã (mặc định là "utf8")
  • start: vị trí bắt đầu đọc, mặc đinh là 0
  • end: vị trí kết thúc đọc, mặc định sẽ là độ dài của buffer

Ví dụ

Chúng ta thử đi làm một ví dụ cơ bản nhé :

Tạo file có tên readBuffer.js có nội dung như sau :

  buf = new Buffer(256);   
writedBuf = buf.write("Hoidapcode.com");   
const readBuffer = writedBuf.toString()  
console.log(readBuffer) 

Mở terminal và gõ dòng lệnh bên dưới để chạy file :

  node readBuffer.js 

Chúng ta sẽ nhận được kết quả là giá trị đã viết trước đó:

  Hoidapcode.com 

Chuyển Buffer sang JSON

Cú pháp

Module Buffer trong NodeJS hỗ trợ hàm chuyển từ Buffer sang JSON, để chuyển từ buffer sang JSON ta sử dụng cú pháp:

  buf.toJSON()   

Ví dụ

Một ví dụ nhỏ để chúng mình cùng hiểu về hàm này của module Buffer. Tạo file có tên bufferJson.js có nội dung như sau :

  //Tạo một buffer mới  
const buf = new Buffer('Học lập trình NodeJS với Hoidapcode.com');  
//Chuyển từ buffer sang JSON  
const json = buf.toJSON(buf);  
//in ra màn hình  
console.log(json);   

Chúng ta sẽ nhận được một json có dạng như bên dưới, đây là dạng json của một Buffer

Ví dụ về Buffer trong NodeJS

Gộp nhiều Buffers với nhau

Cú pháp

Chúng ta có thể gộp các buffer bằng cách sử dụng phương thức concat() , gộp 2 buffer cũng tương tự như gộp 2 mảng với nhau, ta sử dụng cú pháp :

  Buffer.concat(list[, totalLength])   

Sẽ có 2 tham số cần thiết trong hàm :

  • list: một mảng các buffer cần gộp lại.
  • totalLength: độ dài tối đa của buffers mới khi được gộp

Ví dụ:

  var buffer1 = new Buffer('Buffer'); 
//Tạo một buffer có giá trị là "Buffer"  
var buffer2 = new Buffer('is very simple'); 
//Tạo một buffer có giá trị là "is very simple"  
var buffer3 = Buffer.concat([buffer1,buffer2]); 
//Gộp 2 buffer mới tạo vào với nhau thành buffer3    
console.log("buffer3 content: " + buffer3.toString()); 
//In ra giá trị của Buffer mới 

Sau khi chạy câu lệnh nó sẽ in ra màn hình như sau:

  buffer3 content: Buffer is very simple   

Các phương thức và thuộc tính trong Buffer

Đây là bảng các phương thức và thuộc tính mà trong module Buffer cung cấp, Nodejs cung cấp rất nhiều và cập nhật thêm với từng phiên bản. Bạn có thể vào trang tài liệu của Nodejs để tìm hiểu thêm nhé !

Phương thức Miêu tả compare() So sánh 2 Buffer copy() Sao chép Buffer length Trả về độ dài của Buffer, bytes equal() So sánh 2 buffers với nhau và trả về giá trị true hoặc false fill() Điền vào Buffer một giá trị cụ thể from() Tạo ra buffer mới từ buffer cũ indexOf() Kiểm tra xem buffer có chứa giá trị nào đó không ?

Nếu có thì trả về vị trí của giá trị đó, ngược lại trả về -1 isBuffer() Kiểm tra xem đối tượng đó có phải Buffer isEncoding() Kiểm tra xem Buffer object có kiểu mã hóa Trên đây là những kiến thức cơ bản về Buffer trong Nodejs. Mong bài viết này có thể giúp ích cho bạn cho việc lập trình với Nodejs, cảm ơn bạn đã quan tâm bài viết này.

Hy vọng với bài viết về Ví dụ về Buffer trong NodeJS đã giải đáp giúp bạn phần nào về kiến thức lập trình NodeJS. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!