首頁 > 軟體

Node.js的模組化機制和Buffer物件詳解

2022-02-23 19:00:13

一、Node.js的模組化機制

Node應用是由模組組成的,Node遵循了CommonJS的模組規範,來隔離每個模組的作用域,使每個模組在它自身的名稱空間中執行。

1、什麼是CommonJS模組規範

CommonJS 是一套程式碼規範, 目的是為了構建 JavaScript 在瀏覽器之外的生態系統 (伺服器端, 桌面端).通過該規範使JavaScript具備開發複雜應用、跨平臺的能力

2、CommonJS模組規範化的內容

(1)匯出模組:moudle.exports 匯出模組

(2)匯入模組:require('模組名稱')

//建立一個demo.js
module.exports.name = 'yunxi'
module.exports.age = 78
module.exports.getName = function(){
    console.log("姓名:",this.name);
}
module.exports.getAge = function(){
    console.log("年齡:",this.age);
}
//建立text.js進行測試
const person = require('./demo')
person.getName()
person.getAge()
//輸出:姓名: yunxi
//     年齡: 78
//建立text.js進行測試
const person = require('./demo')
person.getName()
person.getAge()
//輸出:姓名: yunxi
//     年齡: 78
//建立text.js,進行輸出測試
const Person = require('./demo')
const p1 = new Person('小王',39)
const p2 = new Person('小趙',29)
p1.getName()
p1.getAge()
console.log('---------------');
p2.getName()
p2.getAge()
//    姓名: 小王
//    年齡: 39
//    ---------------
//    姓名: 小趙
//    年齡: 29

3、每個匯出的模組都有一個moudle物件,該物件包含的屬性有:

(1)moudle.exports:表示當前模組對外輸出的介面,其他模組參照的是moudle.exports匯出的變數

(2)exports變數:指向moudle.exports,為了操作的方便,它不能直接指向一個值

4、使用require匯入模組

匯入並執行一個JavaScript檔案,返回的是一個exports物件,若沒有找到相應的物件就報錯

(1)模組輸出是一個函數,則該函數的輸出介面不能用exports變數來匯出,必須使用者moudle.exports匯出

(2)載入規則:

  • A、用來載入js檔案,預設的副檔名為.js
  • B、根據引數的不同格式,去不同路徑下查詢相應的js檔案
    • './(../)':表示載入路徑是相對路徑
    • '/':表示載入路徑是絕對路徑

既不是'./(../)'也不是'/':表示載入的模式是node的核心模組,在node安裝路徑的node_modules中

(3)require的內部處理的流程

require -->module.exports-->moudle._load

二、Buffer物件

是一個Node中的全域性物件,可以直接使用,不需要使用require匯入。該物件提供了在Node中處理二進位制資料的介面

1、用來彌補JavaScript在二進位制資料處理上不足。

2、Buffer是一個建構函式

Buffer物件是V8引擎分配的一段記憶體,類似陣列,每個單元就是一個位元組,存放的0~255之間的資料

3、Buffer的基本操作:

(1)建立:let bytes = new Buffer(size)

(2)切片:bytes.slice(start,end)

(3)拷貝:bytes.copy(目標緩衝區,目標緩衝區的起始位置,源緩衝區的起始位置,源緩衝區的結束位置)

(4)Buffer和字串之間的互換:支援的編碼格式(ascii碼、utf8)

(5)Buffer和二進位制陣列的區別:

A、二進位制陣列:

Int8Array:-128~127

Uint8Array:0~255

Int16Array:-32768~32767

UInt16Array:0~65535

4、Buffer類:

Buffer類是基於Uint8Array的,因此其值為0~255的整數陣列

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!    


IT145.com E-mail:sddin#qq.com