zoukankan      html  css  js  c++  java
  • node

    1、node命令路径与js文件路径

    node命令路径为node命令所执行的目录,js文件路径指的是你要运行的js所在的目录。

    img

    如上图所示: server.js路径为E:zypnode命令路径我们可以选择 E:E: ode,即:

    E:zpy>node server.js
    E:>node zpy/server.js
    

    后续我们将通过以上两个不同的node命令来运行server.js文件,分别对本文标题所涉及的一些概念进行测试,毕竟计算机是不是说慌的!

    2、相对地址转绝对地址

    我们可以通过引入path内置模块,并使用其resolve()方法将相对路径转换为绝对路径。
    server.js:

    const path = require("path");
    console.log(path.resolve("./"));
    

    运行:

    E:zpy>node server.js
    

    结果:

    E:zpy
    E:
    
    3、比较__dirname、__filename以及./

    server.js内容:

    const path = require("path");
    
    console.log("__dirname: "+__dirname);
    console.log("__filename: "+__filename);
    console.log("./: "+path.resolve("./"));
    

    E:zpy>运行命令:

    E:zpy>node server.js
    

    运行结果:

    __dirname: E:zpy
    __filename: E:zpyserver.js
    ./: E:zpy
    

    E:>运行命令:

    E:>node zpy/server.js
    

    运行结果:

    __dirname: E:zpy
    __filename: E:zpyserver.js
    ./: E:
    

    小结:

    • __dirname: 返回js所在文件夹的绝对路径
    • __filename: 返回被执行的 js 的绝对路径
    • ./: 返回执行 node 命令的绝对路径
    4、再来看一个问题:

    server同级创建一个名字为mo.js的文件,该文件内容:

    module.exports.siteUrl = "http://www.zhangpeiyue.com";
    

    server.js内容修改如下:

    const mo = require("./mo");
    console.log(mo.siteUrl);
    

    目前目录结构如下:

    img


    E:zpy>运行命令:

    E:zpy>node server.js
    

    运行结果:

    http://www.zhangpeiyue.com
    

    E:>运行命令:

    E:>node zpy/server.js
    

    运行结果:

    http://www.zhangpeiyue.com
    

    通过以上命令运行结果,你会惊讶的发现:在两种不同的node命令路径下,request引入地址采用相对地址"./"的情况下,不仅没有发生异常,而且都可以调用到mo.js!

    那是因为request中的路径总是相对于包含它的文件,跟你的工作目录是没有半毛钱关系的。

    总结:"./"require() 中使用与__dirname 的效果相同,不会因为运行脚本的目录不同而发生改变。

    5、建议

    使用require() 时可采用相对路径(./, ../) 的写法,其他务必使用绝对路径。例如:

    // 与当前文件同目录下的server.js
     path.dirname(__filename) + '/server.js'; 
    
    // 当前目录的上一级下的zpy文件中的server.js
     path.resolve(__dirname, '../zpy/server.js');
    
  • 相关阅读:
    体验cygwin纪实
    播布客视频PIT专用播放器MBOO2015
    rpm基本命令参考
    rhel7.x配置本地yum
    mtr网络连通性测试
    Oracle下载汇聚
    Spring Cloud心跳监测
    Hystrix的用法
    Redis系列十:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
    dubbo异步调用三种方式
  • 原文地址:https://www.cnblogs.com/ajaemp/p/12071790.html
Copyright © 2011-2022 走看看