node中的path和url模块


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

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录