zoukankan      html  css  js  c++  java
  • 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文件,不受影响

       

    .

  • 相关阅读:
    LeetCode——字符串解码
    LeetCode——迷宫 i-ii
    JavaScript实现按照指定长度为数字前面补零输出的方法
    React 修改input按钮上文字
    HTML input可以输入相同的文件
    LeetCode——重新安排行程
    LeetCode——矩阵中的最长递增路径
    c++ vector push_back对象的时候存起来的是拷贝
    char* = "name" g++报告warn的原因
    虚函数表指针、父类成员变量、子类成员变量在内存中的位置关系
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/12274533.html
Copyright © 2011-2022 走看看