国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入理解Nodejs Global 模塊

2019-11-19 16:25:53
字體:
供稿:網(wǎng)友

瀏覽器上有自己的全局對象 window,同理, nodejs 下也有自己的全局對象 global,并且在各個模塊下 都可以直接訪問 global 對象。

在 nodejs 中,除了可以直接使用 V8 JavaScript 引擎中所支持的原生 JavaScript 的函數(shù)和對象外,它還追加了一些其他的函數(shù)和對象(比如:Buffer 對象、require 函數(shù)等)。

  1. Buffer 對象: 用于處理二進制數(shù)據(jù)
  2. module 對象: 用于訪問當前模塊的信息
  3. process 對象: 用于訪問進程信息
  4. console 對象: 用于向控制端輸出某些信息
  5. 6 個計時器相關(guān)函數(shù)

需要注意的是,可以在不引入模塊的情況下直接使用 nodejs 追加的這些函數(shù)和對象。

下面將對上面的這些對象和函數(shù)的使用進行簡單的解釋。

Buffer 對象

在 ES6 之前,原生的 JavaScript 并沒有專門用來處理二進制數(shù)據(jù)的機制,所以為了方便地處理二進制數(shù)據(jù),nodejs 才引入了 Buffer 對象。

ES6 之后,原生的 JavaScript 引入了 TypedArray,用來處理二進制數(shù)據(jù)。注意 TypedArray 并不是以一個單一的對象的形式而存在,而是以一系列值的類型為 TypedArray 的對象而存在。在這一系列對象中,Uint8Array 對象和 Buffer 對象最為相似,但是 Buffer 對象更加適用于 nodejs。

Buffer 對象的實例很像一個各個元素都是整數(shù)的數(shù)組,但是與真正的數(shù)組的區(qū)別在于它的大小固定的(即在實例創(chuàng)建時決定大小),并且為它分配的內(nèi)存是原生的,并且存在于 V8 的堆內(nèi)存外。
在 nodejs 6.0 版本之前,是使用 new Buffer() 語法來創(chuàng)建一個實例,但是因為一些安全問題,以這種形式創(chuàng)建實例的方法被廢除了,取而代之的是一些 Buffer 對象的一些靜態(tài)方法。

創(chuàng)建 Buffer 實例

  1. Buffer.alloc(size[, fill[, encoding]]): 返回一個指定大小的 Buffer 實例,如果沒有設置 fill,則默認填滿 0
  2. Buffer.allocUnsafe(size): 返回一個指定大小的 Buffer 實例,但是它不會被初始化,所以它可能包含敏感的數(shù)據(jù)
  3. Buffer.allocUnsafeSlow(size)
  4. Buffer.from(array): 返回一個被 array 的值初始化的新的 Buffer 實例(傳入的 array 的元素只能是數(shù)字,不然就會自動被 0 覆蓋)
  5. Buffer.from(arrayBuffer[, byteOffset[, length]]): This creates a view of the ArrayBuffer without copying the underlying memory
  6. Buffer.from(buffer): 復制傳入的 Buffer 實例的數(shù)據(jù),并返回一個新的 Buffer 實例
  7. Buffer.from(string[, encoding]): 返回一個被 string 的值初始化的新的 Buffer 實例
const buf1 = Buffer.alloc(5);const buf2 = Buffer.allocUnsafe(5);const buf3 = Buffer.from([1, '2a', 230]);const buf4 = Buffer.from('abcdggg');console.log(buf1); // <Buffer 00 00 00 00 00>console.log(buf2); // <Buffer b8 ed a3 80 58> (這只是一種可能的結(jié)果)console.log(buf3); // <Buffer 01 00 e6>console.log(buf4); // <Buffer 61 62 63 64 67 67 67>console.log(buf4.toString()); // abcdgggbuf2.fill(0);console.log(buf2); // <Buffer 00 00 00 00 00>

上面講的不太清楚(以后再優(yōu)化),因為我是初學,TypedArray 都沒玩過呢!

但是放心,大腿在這呢 ― Node源碼解析

主站蜘蛛池模板: 宜川县| 谢通门县| 蓬莱市| 乐陵市| 邳州市| 清原| 汝州市| 墨竹工卡县| 海城市| 柳林县| 涿州市| 德令哈市| 明光市| 雅安市| 湖南省| 常州市| 临沂市| 桃园市| 南丰县| 广西| 南昌市| 额敏县| 女性| 奉贤区| 亳州市| 巨野县| 松阳县| 黑龙江省| 大新县| 南平市| 文化| 双流县| 丰城市| 永德县| 永新县| 乌恰县| 金平| 营山县| 广元市| 大冶市| 大冶市|