node中的path和url模块
// path.js
const path = require('path')
const url = require('url')
const str = 'https://www.baidu.com:443/xiagao/index.html?name=Eric&age=18';
// url模块多使用parse方法,一般与path模块的extname 配合使用
// basename 取出路径中最后一部分
console.log(path.basename(str)); // index.html?name=Eric&age=18
console.log('-'.repeat(100));
// 结束符 ;
console.log(path.delimiter);
console.log('-'.repeat(100));
// extname 取出访问路径的后缀名
// extname并不智能,需要借助url
console.log('后缀名', path.extname(str)); // .html?name=Eric&age=18 ,只需要.html
console.log('-'.repeat(100));
/**
* Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.baidu.com:443',
port: '443',
hostname: 'www.baidu.com',
hash: null,
search: '?name=Eric&age=18',
query: 'name=Eric&age=18',
pathname: '/xiagao/index.html',
path: '/xiagao/index.html?name=Eric&age=18',
href: 'https://www.baidu.com:443/xiagao/index.html?name=Eric&age=18'
}
*/
// 借助url
console.log(path.extname(url.parse(str).pathname)); // .html
console.log('-'.repeat(100));
// 判断是否是绝对路径
console.log('绝对', path.isAbsolute(str)); // false
// 只要以盘符开头的,它都是绝对路径,不管他存不存在
console.log(path.isAbsolute('C:/user/admin')); // true
console.log('-'.repeat(100));
console.log(path.parse(str));
// parse 格式化路径
// 这就好比根下的各级文件
/**
* {
root: '', 根
dir: 'https://www.baidu.com:443/xiagao', 文件夹
base: 'index.html?name=Eric&age=18', 下的
ext: '.html?name=Eric&age=18', ..
name: 'index'
}
*/
console.log('-'.repeat(100));
// 连接相对路径join
console.log(path.join('a/b', 'c/d', 'd/f')); // a\b\c\d\d\f
console.log(path.join('a/b', './c/d', './d/f')); // a\b\c\d\d\f
console.log(path.join('a/b', '../c/d', '../e/f')); // a\c\e\f ??? 为什么
console.log(path.join(__dirname, 'a/b', '../c/d', '../e/f')); // D:\DrillNode\path\a\c\e\f 绝对路径
console.log('-'.repeat(100));
// resolve 连接后直接就是绝对路径
console.log(path.resolve('a/b', '../c/d', '../e/f')); // D:\DrillNode\path\a\c\e\f