【nodeJS】什麼是require?

來源:互聯網
上載者:User

標籤:nodejs   javascript   前端   require   服務端   

Nodejs模仿commonJS模組系統,內建的require函數很容易include存在於各個分離的檔案中的模組。Require函數的準系統是讀取一個javaScript檔案並且執行它,返回exports對象。一個模組的例子:

console.log("evaluating example.js");var invisible = function () {  console.log("invisible");}exports.message = "hi";exports.say = function () {  console.log(message);}

      因此,如果你運行var example =require(‘./example.js‘),結果是example作為一個對象,它的值等於如下:

{  message: "hi",  say: [Function]}
如果你想將exports 對象設定為一個函數或者一個新對象,你必須使用moudle.exports對象,舉例:

module.exports = function () {  console.log("hello world")}require(‘./example2.js‘)() //require itself and run the exports object

      值得注意的是每次你重複require已經require的檔案時,exports對象會緩衝並且重複使用。請看如下解釋:

node> require(‘./example.js‘)evaluating example.js{ message: ‘hi‘, say: [Function] }node> require(‘./example.js‘){ message: ‘hi‘, say: [Function] }node> require(‘./example.js‘).message = "hey" //set the message to "hey"‘hey‘node> require(‘./example.js‘) //One might think that this "reloads" the file...{ message: ‘hey‘, say: [Function] } //...but the message is still "hey" because of the module cache.

從上面的例子可以看出,example.js在第一次被 執行,隨後的require()調用僅僅觸發了模組的緩衝,而不是重新又讀取該檔案。如上所示,這有時會產生副作用。

      Require尋找檔案的規則有點複雜。大概的規則是:

(1)如果檔案不是以”/”或”./”開始時,它會認為是一個核心模組(並且本地的node模組會被檢測)或者是一個在本地node_moudles目錄中的依賴;

(2)如果檔案是以”./”開始時,它會認為被requre的檔案是一個相對路徑的檔案;

(3)如果檔案是以”/”開始時,它會認為是絕對路徑。注意:你可以省略”.js”,require會根據需要自動加上”.js”。更詳細的資訊請查看官方文檔。

         還有一點需要注意的是:如果傳給require的是一個目錄,它會在目錄中首先尋找package.json,載入main屬性的檔案引用。否則,它會尋找index.js檔案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.