中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node模塊系統有哪些差數

發布時間:2023-01-31 14:08:47 來源:億速云 閱讀:124 作者:iii 欄目:web開發

本篇內容介紹了“Node模塊系統有哪些差數”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

模塊系統

為了讓Node.js的文件可以相互調用,Node.js提供了一個簡單的模塊系統。
模塊是Node.js 應用程序的基本組成部分,文件和模塊是一一對應的。
換言之,一個 Node.js 文件就是一個模塊,這個文件可能是JavaScript 代碼、JSON 或者編譯過的C/C++ 擴展。

Node.js 中存在 4 類模塊(原生模塊和3種文件模塊)
例:var http = require("http");

Node.js 中自帶了一個叫做 http 的模塊,我們在我們的代碼中請求它并把返回值賦給一個本地變量。
這把我們的本地變量變成了一個擁有所有 http 模塊所提供的公共方法的對象。

加載模塊:

  • 從文件模塊緩存中加載

  • 從原生模塊加載

  • 從文件加載

    • http、fs、path、events、util等,原生模塊。

    • ./mod或…/mod,相對路徑的文件模塊。

    • /pathtomodule/mod,絕對路徑的文件模塊。

    • mod,非原生模塊的文件模塊。

    • require方法接受以下幾種參數的傳遞:

模塊接口
  • exports 對象是模塊公開的接口

  • require 對象用于從外部獲取一個模塊的接口,即所獲取模塊的 exports 對象。

//例子
//hello.js
exports.world = function() {       //相當于給function()函數取了個別名world()
    console.log('Hello World');
  }

//main.js
var hello = require('./hello');
hello.world();  //訪問 hello.js 的 world 函數

//結果
PS E:\learn> node main.js
Hello World

  • 只是想把一個對象封裝到模塊中:module.exports = function() {...}
    模塊接口的唯一變化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用該模塊時,其接口對象就是要輸出的 Hello 對象本身,而不是原先的 exports。

exports 和 module.exports 的使用
如果要對外暴露屬性或方法,就用 exports 就行,要暴露對象(類似class,包含了很多屬性和方法),就用 module.exports。

//hello.js 
function Hello() { 
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 
    this.sayHello = function() { 
        console.log('Hello ' + name); 
    }; 
}; 
module.exports = Hello;   

//main.js 
var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello();

//結果
PS E:\learn> node main.js
Hello BYVoid

events模塊

events 模塊只提供了一個對象: events.EventEmitter。EventEmitter 的核心就是事件觸發與事件監聽器功能的封裝。

  • events 為一個模塊,用 require("events"); 訪問該模塊。

  • EventEmitter 相當于events模塊里面的唯一的一個類,該類下有多個屬性

    • addListener(event, listener) 為指定事件添加一個監聽器到監聽器數組的尾部。

    • on(event, listener) on函數為指定事件注冊一個監聽器,接受一個字符串 event 和一個回調函數。

    • once(event, listener) 為指定事件注冊一個單次監聽器,即 監聽器最多只會觸發一次,觸發后立刻解除該監聽器

    • removeListener(event, listener)移除指定事件的某個監聽器,監聽器必須是該事件已經注冊過的監聽器。它接受兩個參數,第一個是事件名稱,第二個是回調函數名稱

    • removeAllListeners([event]) 移除所有事件的所有監聽器, 如果指定事件,則移除指定事件的所有監聽器。

    • setMaxListeners(n) 默認情況下, EventEmitters 如果你添加的監聽器超過 10 個就會輸出警告信息。 setMaxListeners 函數用于改變監聽器的默認限制的數量。

    • listeners(event) 返回指定事件的監聽器數組。

    • emit(event, [arg1], [arg2], [...]) 按監聽器的順序執行執行每個監聽器,如果事件有注冊監聽返回 true,否則返回 false。

    • listenerCount(emitter, event) 返回指定事件的監聽器數量。

//例子
//event.js 文件
var events = require('events');            // 引入 events 模塊
var emitter = new events.EventEmitter();   // 創建 eventEmitter 對象
//為事件someEvent注冊兩個監視器
emitter.on('someEvent', function(arg1, arg2) { 
    console.log('listener1', arg1, arg2); 
}); 
emitter.on('someEvent', function(arg1, arg2) { 
    console.log('listener2', arg1, arg2); 
}); 
//按順序執行someEvent的每個監視器
emitter.emit('someEvent', 'arg1 參數', 'arg2 參數');  // 'arg1 參數', 'arg2 參數'為參數arg1,arg2的值
//結果
$ node event.js 
listener1 arg1 參數 arg2 參數
listener2 arg1 參數 arg2 參數

util 模塊

util 是一個Node.js 核心模塊,提供常用函數的集合,用于彌補核心 JavaScript 的功能 過于精簡的不足。

util.callbackify(original)
將 async 異步函數(或者一個返回值為 Promise 的函數)轉換成遵循異常優先的回調風格的函數

  • 參數:original 為 async 異步函數。

  • 返回值:返回傳統回調函數(或者一個返回值為 Promise 的函數)

    • 在返回的回調函數中,第一個參數為拒絕的原因(如果 Promise 解決,則為 null),第二個參數則是解決的值。

//例子
const util = require('util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

//結果
hello world

util.inherits(constructor, superConstructor) 是一個實現對象間原型繼承的函數。

//例子
var util = require('util'); 
//Base構造函數內三個屬性
function Base() {    
    this.name = 'base'; 
    this.base = 1991; 
    this.sayHello = function() { 
    console.log('Hello ' + this.name); 
    }; 
} 

//原型中定義的一個函數
Base.prototype.showName = function() { 
    console.log(this.name);
}; 

//Sub構造函數內一個屬性
function Sub() { 
    this.name = 'sub'; 
} 

util.inherits(Sub, Base);  //Sub從Base繼承
var objBase = new Base(); 
objBase.showName(); 
objBase.sayHello(); 
console.log(objBase); 

var objSub = new Sub(); 
objSub.showName(); 
//objSub.sayHello(); 
console.log(objSub); 

//結果
base 
Hello base 
{ name: 'base', base: 1991, sayHello: [Function] } 
sub 
{ name: 'sub' }
//Base 有 name , base , sayHello() , showName()
//Sub  有 name(自己定義的,不是繼承的) , showName() 從Base繼承的

  • util.inspect(object,[showHidden],[depth],[colors]) 是一個將任意對象轉換 為字符串的方法,通常用于調試和錯誤輸出。它至少接受一個參數 object,即要轉換的對象。

    • 它至少接受一個參數 object,即要轉換的對象。

    • showHidden 是一個可選參數,如果值為 true,將會輸出更多隱藏信息。

    • depth 表示最大遞歸的層數,如果對象很復雜,你可以指定層數以控制輸出信息的多 少。如果不指定depth,默認會遞歸 2 層,指定為 null 表示將不限遞歸層數完整遍歷對象。

    • 如果 colors 值為 true,輸出格式將會以 ANSI 顏色編碼,通常用于在終端顯示更漂亮 的效果。

var util = require('util'); 
function Person() { 
    this.name = 'byvoid'; 
    this.toString = function() { 
    return this.name; 
    }; 
} 
var obj = new Person(); 
console.log(obj);
console.log(util.inspect(obj)); 
console.log(util.inspect(obj, true));

Node模塊系統有哪些差數

fs 模塊

fs.open(path, flags[, mode], callback) 在異步模式下打開文件

  • 參數:

    r 以讀取模式打開文件。如果文件不存在拋出異常。
    r+ 以讀寫模式打開文件。如果文件不存在拋出異常。
    rs 以同步的方式讀取文件。
    rs+ 以同步的方式讀取和寫入文件。
    w 以寫入模式打開文件,如果文件不存在則創建。
    wx 類似 ‘w’,但是如果文件路徑存在,則文件寫入失敗。
    w+ 以讀寫模式打開文件,如果文件不存在則創建。
    wx+ 類似 ‘w+’, 但是如果文件路徑存在,則文件讀寫失敗。
    a 以追加模式打開文件,如果文件不存在則創建。
    ax 類似 ‘a’, 但是如果文件路徑存在,則文件追加失敗。
    a+ 以讀取追加模式打開文件,如果文件不存在則創建。
    ax+ 類似 ‘a+’, 但是如果文件路徑存在,則文件讀取追加失敗。

    • path - 文件的路徑。

    • flags - 文件打開的行為。具體值詳見下文。

    • mode - 設置文件模式(權限),文件創建默認權限為 0666(可讀,可寫)。

    • callback - 回調函數,帶有兩個參數如:callback(err, fd)

fs.stat(path, callback) 通過異步模式獲取文件信息

  • 參數:

    • path - 文件路徑。

    • callback - 回調函數,帶有兩個參數如:callback(err, stats), stats 是 fs.Stats 對象。

fs.stat(path)執行后,會將stats類的實例返回給其回調函數。可以通過stats類中的提供方法判斷文件的相關屬性

stats.isFile() 如果是文件返回 true,否則返回 false。
stats.isDirectory() 如果是目錄返回 true,否則返回 false。
stats.isBlockDevice() 如果是塊設備返回 true,否則返回 false。
stats.isCharacterDevice() 如果是字符設備返回 true,否則返回 false。
stats.isSymbolicLink() 如果是軟鏈接返回 true,否則返回 false。
stats.isFIFO() 如果是FIFO,返回true,否則返回 false。FIFO是UNIX中的一種特殊類型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否則返回 false。

fs.writeFile(file, data[, options], callback) 異步模式下寫入文件
writeFile 直接打開文件默認是 w 模式,所以如果文件存在,該方法寫入的內容會覆蓋舊的文件內容。

  • 參數:

    • file - 文件名或文件描述符。

    • data - 要寫入文件的數據,可以是 String(字符串) 或 Buffer(緩沖) 對象。

    • options - 該參數是一個對象,包含 {encoding, mode, flag}。默認編碼為 utf8, 模式為 0666 ,flag 為 ‘w’

    • callback - 回調函數,回調函數只包含錯誤信息參數(err),在寫入失敗時返回

fs.read(fd, buffer, offset, length, position, callback) 異步模式下讀取文件,該方法使用了文件描述符來讀取文件。

  • 參數:

    • fd - 通過 fs.open() 方法返回的文件描述符。

    • buffer - 數據寫入的緩沖區。

    • offset - 緩沖區寫入的寫入偏移量。

    • length - 要從文件中讀取的字節數。

    • position - 文件讀取的起始位置,如果 position 的值為 null,則會從當前文件指針的位置讀取。

    • callback - 回調函數,有三個參數err, bytesRead, buffer,err 為錯誤信息, bytesRead 表示讀取的字節數,buffer 為緩沖區對象。

fs.close(fd, callback) 異步模式下關閉文件,該方法使用了文件描述符來讀取文件。

  • 參數:

    • fd - 通過 fs.open() 方法返回的文件描述符。

    • callback - 回調函數,沒有參數。

fs.ftruncate(fd, len, callback) 異步模式下截取文件,該方法使用了文件描述符來讀取文件。

  • 參數:

    • fd - 通過 fs.open() 方法返回的文件描述符。

    • len - 文件內容截取的長度。

    • callback - 回調函數,沒有參數。

fs.unlink(path, callback) 刪除文件的語法格式:

  • 參數:

    • path - 文件路徑。

    • callback - 回調函數,沒有參數。

fs.mkdir(path[, options], callback) 創建目錄

  • 參數:

    • recursive - 是否以遞歸的方式創建目錄,默認為 false。

    • mode - 設置目錄權限,默認為 0777。

    • path - 文件路徑

    • options 參數可以是

    • callback - 回調函數,沒有參數。

fs.readdir(path, callback) 讀取目錄

  • 參數:

    • path - 文件路徑

    • callback - 回調函數,回調函數帶有兩個參數err, files,err 為錯誤信息,files 為 目錄下的文件數組列表

fs.rmdir(path, callback) 刪除目錄

  • 參數:

    • path - 文件路徑

    • callback - 回調函數,沒有參數。

OS 模塊

屬性:os.EOL 定義了操作系統的行尾符的常量。
方法:
os.tmpdir() 返回操作系統的默認臨時文件夾
os.endianness() 返回 CPU 的字節序,可能的是 “BE” 或 “LE”。
os.hostname() 返回操作系統的主機名。
os.type() 返回操作系統名
os.platform() 返回編譯時的操作系統名
os.arch() 返回操作系統 CPU 架構,可能的值有 “x64”、“arm” 和 “ia32”。
os.release() 返回操作系統的發行版本。
os.uptime() 返回操作系統運行的時間,以秒為單位。
os.loadavg() 返回一個包含 1、5、15 分鐘平均負載的數組。
os.totalmem() 返回系統內存總量,單位為字節。
os.freemem() 返回操作系統空閑內存量,單位是字節。
os.cpus() 返回一個對象數組,包含所安裝的每個 CPU/內核的信息:型號、速度(單位 MHz)、時間(一個包含 user、nice、sys、idle 和 irq 所使用 CPU/內核毫秒數的對象)。
os.networkInterfaces() 獲得網絡接口列表。

“Node模塊系統有哪些差數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巍山| 水城县| 秦皇岛市| 定州市| 明光市| 汕头市| 宝山区| 陇西县| 桐城市| 清水县| 利辛县| 宁强县| 石楼县| 通渭县| 临泽县| 鄯善县| 天气| 新竹县| 潍坊市| 鹿邑县| 米脂县| 五指山市| 清水河县| 通州市| 房山区| 宜君县| 班戈县| 乾安县| 黄陵县| 安图县| 汉阴县| 林甸县| 渝中区| 桦川县| 醴陵市| 手游| 云和县| 都江堰市| 诸城市| 灵山县| 黄龙县|