• nodejs路径处理方法和绝对路径


    1. 路径处理方法

    __dirname     表示当前文件所在的目录的绝对路径
    __filename     表示当前文件的绝对路径
    module.filename ==== __filename 等价
    process.cwd()    返回运行当前脚本的工作目录的路径,一般情况下不变,在process.chdir()后,或者shelljs.cd切换目录后会发生变化
    process.chdir()   改变工作目录

    2. 绝对路径

    2.1  要获取node项目的根路径,可以使用 node-app-root-path 这个包

    2.2  更好的写绝对路径的方式是使用best-require这个包

    根目录使用~

    require('~/application/apis/controllers/posts');
    require('~/application/apis/services/rest');
    require('~/application/apis/config');

    别名目录使用:

    //长目录设置别名
    const ROOT_PATH = process.cwd();
    require('best-require')(ROOT_PATH, {
        apis: ROOT_PATH + '/application/apis',
        controllers: ROOT_PATH + '/application/apis/controllers'
    });
    //使用别名更简洁
    require(':controllers/posts');
    require(':apis/services/rest');
    require(':apis/config');

    2.3 在全局变量上挂载路径

    //声明
    var path = require('path')
    global.appRequire = function(path) {
        return require(path.resolve(__dirname, path))
    }
    //使用
    var User = appRequire('app/model/User')

    3. path.join和path.resolve的区别

    3.1 path.join 是连接路径,仅仅做路径的连接

    console.log(path.join(__dirname,'a','b'));   // 假如当前文件的路径是E:/node/1,那么拼接出来就是E:/node/1/a/b。
    console.log(path.join(__dirname,'/a','/b','..'));  // 路径开头的/不会影响拼接,..代表上一级文件,拼接出来的结果是:E:/node/1/a
    console.log(path.join(__dirname,'a',{},'b'));   // 而且path.join()还会帮我们做路径字符串的校验,当字符串不合法时,会抛出错误:Path must be a string.

    3.2 path.resolve 是解析绝对路径,将一个或多个连接后的路径解析为绝对路径,以应用程序为根目录,普通字符串代表子目录,/代表绝对路径根目录

    3.2.1 /作为根目录,多个/开始的路径,只有最后一个有效,前面的被忽略

    path.resolve('/a', '/b') // '/b'

    3.2.2 总是返回一个以相对于当前的工作目录(working directory)的绝对路径

    path.resolve('./a', './b')  // '/Users/username/Projects/webpack-demo/a/b'

    3.2.3 path.resolve()方法是以程序为根目录,作为起点,根据参数解析出一个绝对路径

    console.log(path.resolve());   // 得到应用程序启动文件的目录(得到当前执行文件绝对路径)   E:zfwebpack1src
    console.log(path.resolve('a','/c'));  // E:/c  因为/斜杠代表根目录,所以得到的就是E:/c
    console.log(path.resolve(__dirname,'img/so'));  // E:zfwebpack1srcimgso   这个就是将文件路径拼接,并不管这个路径是否真实存在。
    console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'))  // E:zfwebpack1srcwwwrootstatic_filesgifimage.gif
  • 相关阅读:
    OptaPlanner实用技术 批量规划和实时规划(2)
    【Golang】创建有配置参数的结构体时,可选参数应该怎么传?
    k8s:Pod生命周期
    k8s:容器生命周期回调
    在工厂<> 中 <> 已经是个追加物料
    The headers or library files could not be found for jpeg
    从进入内核态看内存管理
    迅雷加速原来分析
    idea编译build一直卡在那不动解决方法
    python入门爬虫豆瓣电影Top250
  • 原文地址:https://www.cnblogs.com/mengff/p/9753867.html
Copyright © 2020-2023  润新知