node中其他成员(非模块成员)之dirname和filename

本文介绍下node中的其他成员,非模块成员,dirname和filename,结合之前案例所用的

由简单的Express案例可以看出__dirname用法与path等类似,都是在node里使用,但它是非模块成员.

 测试如下,新建文件做个简单测试:

  

   

注意:动态绝对路径→两个模块是动态获取路径的,后期如果文件位置改变,则获取结果也会改变

  

(1)相对于路径指的是相对于启动文件Index.js的相对路径

  

  即

  

   接下来换到其他目录启动文件

  

之前启动项目,都是跑到对应启动入口文件目录下执行,这里改为跑到其他目录通过node+路径执行
测试如下:发现无法获取a.txt文件,原因:此时的./是相对于执行node命令所属的终端路径

  

  小结 如下:

   

   

(2)其他情况

  1、先回顾下之前的操作,首先在项目入口文件所在终端路径进行正常读取

    

     

     

     

   2、接下来在其他终端路径读取(例如父级路径)

    

     发现读取失败,一般情况下也不会这么操作。但凡是有例外,接下来看下其他情况

  3、接下来再对上述文件做下修改,新建文件

    

     

     这里通过demo.js去启动项目,将demo.js作为入口文件启动项目

    

此时并不是直接执行入口文件index.js,而是通过其他文件执行
但分析后得知,这里依然存在问题,分析:文件操作模块里的./并不是传统简单的相对路径,而是相对于当前入口文件的终端路径

    因此总结如下:

    

     接下来做下修改,将a.txt的路径改为绝对路径,如下所示

    

     

     接下来Ctrl+D选中所有反斜杠改为/

    

     

     至此在做下读写测试,便可以随意读取操作

    

(3)问题分析(动态绝对路径

  此时虽然可以在其他目录启动文件进行读取操作,但任然存在问题

  

团队协同开发时,他人的项目存放目录不一致,无法统一,也就不能执行,不能保证项目目录一致性。所以这里便用到了path核心模块和__dirname非模块成员

  

  或者

  

   此时便可以不受目录限制,正常读取

  

  

  

   除了__dirname还有filename

   

  或者

  

注意:这里是逗号,分隔

   

注意:模块中的路径标识和这里的动态绝对路径无关,即模块标识里的相对路径不受影响

  

   这里的./b不管如何都可以读取到当前相对路径的b.js文件,不受影响

   

.

原文地址:https://www.cnblogs.com/jianxian/p/12274533.html