【悄咪咪学Node.js】8.2 path.join()

116 阅读2分钟

path.join()

1. 前言

本系列课程对非功能性函数内容安排中,将插入一些在生产过程中可能会用到对应函数的例子。

本节课将会引导大家学习了解:

  • path.join() 的使用方法

学习完本节课程后,应该具有:

  • 使用 path 模块使用不同元素拼凑路径的能力

2. path.join()

path.join() 可以将路径片段使用特定的分隔符(window:\)连接起来形成路径,并规范化生成的路径。若任意一个路径片段类型错误,会报错。

2.1 代码例子

我们先来执行下面这段代码:

// 引入 path 模块
const path = require('path');

// 打印结果
console.log(__dirname);
console.log(path.join(__dirname, './noneJS'));
console.log(path.join(__dirname, '/noneJS'));
console.log(path.join(__dirname, 'noneJS'));

结果:

/Users/programing/noneJS/path/join
/Users/programing/noneJS/path/join/noneJS
/Users/programing/noneJS/path/join/noneJS
/Users/programing/noneJS/path/join/noneJS

Tips:path.join() 中每一个元素都是在前面所有元素合并的路径后拼接的,也就是说,如 /noneJS 中的 / 指向的不是根目录而是前面元素拼接好的路径。

再执行下面这段代码:

// 引入 path 模块
const path = require('path');

// 打印结果
// /noneJS/join.txt 并不存在
console.log(path.join(__dirname, '/noneJS/join.txt'));

结果:

/Users/programing/noneJS/path/join/noneJS/join.txt

Tips:path.join() 并不会检查路径是否真实存在。

继续执行下面这段代码:

// 引入 path 模块
const path = require('path');

// 打印结果
// /noneJS/join.txt 并不存在
console.log(path.join(__dirname, ['/noneJS/join.txt']));

结果:

internal/validators.js:125
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object
    at validateString (internal/validators.js:125:11)
    at Object.join (path.js:1147:7)
    at Object.<anonymous> (/Users/programing/noneJS/path/join/path.join.js:11:18)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)

Tips:path.join() 只接收 String 类型的传参。

3. 生产中的作用

求得以某种固定路径格式生成的动态路径。

日志文件的储存格式如 /年/月/日/log.txt ,读取 2020-05-01 的日志文件:

const path = require('path'),
    fs = require('fs');
    
let target_path = path.join(__dirname, '2020', '05', '01', 'log.txt');

console.log(target_path);

let log = fs.readFileSync(target_path);
  • 第一、二行,引入依赖。
  • 第四行,组合目标路径,这里的 年/月/日 在实际使用时可以通过变量代替。
  • 第六行,打印目标路径,在这里打印的路径是: /Users/programing/noneJS/path/join/2020/05/01/log.txt
  • 第八行,读取目标路径文件下的文本,赋值给变量 log

4. 小结

本节课程我们主要学习了 path.isAbsolute()

重点如下:

  1. 重点1

    path.join() 不会校验路径是否存在。

  2. 重点2

    path.join() 只接收 String 类型的传参。