Node.js的模塊化機制和Buffer對象詳解
一、Node.js的模塊化機制
Node應(yīng)用是由模塊組成的,Node遵循了CommonJS的模塊規(guī)范,來隔離每個模塊的作用域,使每個模塊在它自身的命名空間中執(zhí)行。
1、什么是CommonJS模塊規(guī)范
CommonJS 是一套代碼規(guī)范, 目的是為了構(gòu)建 JavaScript 在瀏覽器之外的生態(tài)系統(tǒng) (服務(wù)器端, 桌面端).通過該規(guī)范使JavaScript具備開發(fā)復(fù)雜應(yīng)用、跨平臺的能力
2、CommonJS模塊規(guī)范化的內(nèi)容
(1)導(dǎo)出模塊:moudle.exports 導(dǎo)出模塊
(2)導(dǎo)入模塊:require('模塊名稱')
//創(chuàng)建一個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);
}//創(chuàng)建text.js進行測試
const person = require('./demo')
person.getName()
person.getAge()
//輸出:姓名: yunxi
// 年齡: 78//創(chuàng)建text.js進行測試
const person = require('./demo')
person.getName()
person.getAge()
//輸出:姓名: yunxi
// 年齡: 78//創(chuàng)建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
// ---------------
// 姓名: 小趙
// 年齡: 293、每個導(dǎo)出的模塊都有一個moudle對象,該對象包含的屬性有:
(1)moudle.exports:表示當前模塊對外輸出的接口,其他模塊引用的是moudle.exports導(dǎo)出的變量
(2)exports變量:指向moudle.exports,為了操作的方便,它不能直接指向一個值
4、使用require導(dǎo)入模塊
導(dǎo)入并執(zhí)行一個JavaScript文件,返回的是一個exports對象,若沒有找到相應(yīng)的對象就報錯
(1)模塊輸出是一個函數(shù),則該函數(shù)的輸出接口不能用exports變量來導(dǎo)出,必須用戶moudle.exports導(dǎo)出
(2)加載規(guī)則:
- A、用來加載js文件,默認的文件擴展名為.js
- B、根據(jù)參數(shù)的不同格式,去不同路徑下查找相應(yīng)的js文件
- './(../)':表示加載路徑是相對路徑
- '/':表示加載路徑是絕對路徑
既不是'./(../)'也不是'/':表示加載的模式是node的核心模塊,在node安裝路徑的node_modules中
(3)require的內(nèi)部處理的流程
require -->module.exports-->moudle._load
二、Buffer對象
是一個Node中的全局對象,可以直接使用,不需要使用require導(dǎo)入。該對象提供了在Node中處理二進制數(shù)據(jù)的接口
1、用來彌補JavaScript在二進制數(shù)據(jù)處理上不足。
2、Buffer是一個構(gòu)造函數(shù)
Buffer對象是V8引擎分配的一段內(nèi)存,類似數(shù)組,每個單元就是一個字節(jié),存放的0~255之間的數(shù)據(jù)
3、Buffer的基本操作:
(1)創(chuàng)建:let bytes = new Buffer(size)
(2)切片:bytes.slice(start,end)
(3)拷貝:bytes.copy(目標緩沖區(qū),目標緩沖區(qū)的起始位置,源緩沖區(qū)的起始位置,源緩沖區(qū)的結(jié)束位置)
(4)Buffer和字符串之間的互換:支持的編碼格式(ascii碼、utf8)
(5)Buffer和二進制數(shù)組的區(qū)別:
A、二進制數(shù)組:
Int8Array:-128~127
Uint8Array:0~255
Int16Array:-32768~32767
UInt16Array:0~65535
4、Buffer類:
Buffer類是基于Uint8Array的,因此其值為0~255的整數(shù)數(shù)組
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解
這篇文章主要介紹了Node.js讀指定文件夾輸出該文件夾文件樹,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
詳解基于Koa2開發(fā)微信二維碼掃碼支付相關(guān)流程
這篇文章主要介紹了詳解基于Koa2開發(fā)微信二維碼掃碼支付相關(guān)流程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
node.js 和HTML5開發(fā)本地桌面應(yīng)用程序
這篇文章主要介紹了node.js 和HTML5開發(fā)本地桌面應(yīng)用程序的相關(guān)資料,需要的朋友可以參考下2016-12-12
實現(xiàn)一個完整的Node.js RESTful API的示例
本篇文章主要介紹了實現(xiàn)一個完整的Node.js RESTful API的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09

