__dirname和resolve()淺析

在任何模塊文件內部,可以使用__dirname變量獲取當前模塊文件所在目錄的完整絕對路徑。

  1. 在應用程序根目錄下新建app.js文件,其中代碼如下所示。
    var testModule1=require(’. ./test/testModule.js’);
  2. 在應用程序根目錄下新建一個test子目錄,在該目錄下新建一個testModule.js文件,其中代碼如下所示。
    console.log(__dirname);
  3. 在命令行窗口中輸入“node app.js”命令並按下回車鍵,REPL運行環境中將顯示testModule.js文件所在目錄的完整絕對路徑,執行
  4. 運行結果是C:\Users\Administrator\Desktop\test(執行文件在哪裏,就顯示出對應的絕對路徑)

接下來結合path.resolve進行操作(在testModule.js中進行實驗,代碼如下)

var path = require('path')
console.log(path.resolve(__dirname)) // C:\Users\Administrator\Desktop\test
console.log(path.resolve(__dirname, './')) // C:\Users\Administrator\Desktop\test
console.log(path.resolve(__dirname, './bar')) // C:\Users\Administrator\Desktop\test\bar
 console.log(path.resolve(__dirname, '../bar')) // C:\Users\Administrator\Desktop\bar

由此可以發現path.resolve的運行是從左向右的

JavaScript模塊的編譯

在編譯過程中,Node對獲取的js文件內容進行了頭尾包裝。在頭部添加了(function(exports, require, module, __filename, __dirname){\n, 在尾部添加了\n}),這樣每個模塊文件之間進行了作用域隔離。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章