CĂN BẢN
SERVER
MYSQL
MONGODB
MODULE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Tìm hiểu Buffer trong NodeJS

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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

Bài viết này được đăng tại [free tuts .net]

buffer trong nodejs

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("Freetuts.net", "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("Freetuts.net"); 
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à Freetuts.net

Đọ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("Freetuts.net"); 
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 đó:

Freetuts.net

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 Freetuts.net');
//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

buffer json 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.

Cùng chuyên mục:

Cách gửi mail trong NodeJS có file đính kèm

Cách gửi mail trong NodeJS có file đính kèm

Crawl dữ liệu website bằng NodeJS cơ bản

Crawl dữ liệu website bằng NodeJS cơ bản

CORS là gì ? Xử lý CORS trong NodeJS

CORS là gì ? Xử lý CORS trong NodeJS

Chắc hẳn trong quá trình xử lý các request tới server thì một vài trường…

Xử lý form trong Express

Xử lý form trong Express

Xây dựng URL trong Express

Xây dựng URL trong Express

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách xây…

Populate trong Mongoose

Populate trong Mongoose

Error Handling & Debugging trong Socket.io

Error Handling & Debugging trong Socket.io

Namespaces & Rooms trong Socket.io

Namespaces & Rooms trong Socket.io

Middleware trong Mongoose

Middleware trong Mongoose

Create / Read / Update / Delete trong Mongoose

Create / Read / Update / Delete trong Mongoose

Validation trong Mongoose

Validation trong Mongoose

Subdocuments trong Mongooose

Subdocuments trong Mongooose

Documents trong Mongoose

Documents trong Mongoose

Trong bài viết này chúng ta sẽ tìm hiểu về documents trong Mongoose

Models trong Mongoose

Models trong Mongoose

SchemaTypes trong Mongoose

SchemaTypes trong Mongoose

Schemas trong Mongoose

Schemas trong Mongoose

Mongoose trong NodeJS

Mongoose trong NodeJS

Làm việc với Table MySQL sử dụng Nodejs

Làm việc với Table MySQL sử dụng Nodejs

Kết nối với MongoDB trong NodeJS

Kết nối với MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Top