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
path.join()不会校验路径是否存在。 -
重点2
path.join()只接收String类型的传参。