Node.js中require()單例


我剛接觸Node.js沒多久,對於其中的一些知識還不是很了解。例如在使用require()方法來家載模塊時,我就很好奇模塊中的對象是一種怎樣的狀態,是每次調用require()的時候里面的對象要重新new,還是只new一次,每次require()的時候拿到的對象都是相同的。后來查看一些資料才發現,require()相同模塊(相同路徑,大小寫敏感)得到的模塊中的對象都是單例的。在require()首次加栽的時候,Node為其生成一個鍵,然后將其寫入緩存,后面再使用require()的時就會從緩存中去找,如果存在,就直接返回緩存中的模塊。那么下面就用一個小例子來驗證一下。

1. 編寫object1.js

let value = 0

function set(input) {
    value = input
}

function get() {
    return value
}

exports.set = set
exports.get = get

2.編寫測試代碼test.js

const object1 = require('./object1.js')
const object2 = require('./object1.js')

object1.set(1)
object1.set(2)

console.log(object1.get())
object2.set(5)
console.log(object1.get())

3. 命令行輸入

node test.js

得到結果

2
5

可以看出object1和object2都是require的相同模塊,改變object2中的變量值,object1中的值也跟着改變了,說明他們指向的是同一個對象。我們可以利用這種機制,設置一些全局的對象,就不要使用Node.js中的一些全局對象,便於代碼維護。

以上就是我對Node.js中require()機制的理解,希望可以幫到大家!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM