__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}),这样每个模块文件之间进行了作用域隔离。

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