Buffer 中文稱為 緩衝區
我自己理解起來懶人包解釋大概是這樣
切出一個空間,當他儲存滿的時候,讓他做事,例如一個1GB的檔案一次送出去,很可能容量會爆炸,但如果我把他切成10等份,一份一份切出去,這樣就沒問題了
傳輸方式則是二進制的方式傳輸
很適合在串流的時候使用,例如我們在看Youtube影片,你不用等到影片全部加載完畢,才可以觀看,而是一邊觀看,一邊讀取
Buffer 在傳輸資料的時候是使用二進制,所以傳輸的速度也相當快
但在資料呈現的時候通常是用十六進制呈現,比較方便人類閱讀,畢竟一堆00111人類好像看不懂齁XD
這邊舉一些小例子給大家看一下
//括號填入byte 1byte = 8bits 12*8=96
let buffer2 = new ArrayBuffer(12)
//Int32 以32bits為一組, 96bits可切成三組
let view = new Int32Array(buffer2)
view[0] = 10
view[1] = 15
view[2] = 20
console.log(view)//輸出 Int32Array(3) [ 10, 15, 20 ]
view[3] = 35
//輸出 Int32Array(3) [ 10, 15, 20 ]
//因為只切成三等份 故view[3] 不會進入 但是view[3]依然存在
console.log(view)
//=====
let buffer4 = Buffer.from([18, 10, 15]);
//內部其實是二進制轉換 但印出來為了方便觀看 會轉成十六進制 ->輸出<Buffer 12 0a 0f>
console.log(buffer4);
//====
let buffer5 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
//toString預設為utf-8的轉換 ->輸出 iloveyou
console.log(buffer5.toString());
但Buffer其實還有很多功能,有些東西我也還摸不太清楚,不過這個簡單的例子,應該可以幫助大家初步理解