node.js path模块属性方法

node.js path模块属性方法


'use strick'

/*使用之前需要查询出path模块*/
const path = require('path');

const dirname = __dirname;

/**
 * path.jion(paths)方法是将路径参数序列拼接起来的
 * */
let query = path.join(dirname,'./query.js');
console.log(query);// dirname/query.js

/**
 * path.normalize(path)方法是将路径正常化为平台的分割符
 * 1.处理//为/
 * 2.处理将路径中不包含的文件夹去掉,一般结合../,normal输出可以看出该方法将路径矫正了
 * ,不走弯路,,因为name/../其实就是name的父目录,接着age是在name父目录里面所以没有必
 * 要在name文件夹绕一圈再进入age
 * 3.同样的./表示当前目录,需要将累赘砍去
 * 4.如果路径为空,normal值为‘.’
 * */
let normal = path.normalize('//name/.././age/index.js');
let normal = path.normalize('name/age/../index.js');
console.log(normal); // '/age/index.js'

/**
 * 判断一个路径是否是绝对路径
*/
let isAbsolute = __dirname + 'query.js';
let Absolute1 = '../query.js';
let Absolute2 = '.';
console.log(path.isAbsolute(isAbsolute));
console.log(path.isAbsolute(Absolute1));
console.log(path.isAbsolute(Absolute2));

/**
 * path.posix提供posix特定实现路径方法接口,以下打印出posix系统下面路径模块的属性和方法
*/
console.log(path.posix);

/**
 *path.resolve(paths);参数是一系列路径,或者是路径片段,将参数转换成绝对路径
 *1.参数拼接从右边到左边开始知道遇到以/开头的参数(posix),被认为是找到绝对路径,如果一
 * 直没有遇到那么就是拼接到最后以当前工作目录拼接上,当前工作目录指的是terminal当前cd到
 * 的目录
 *
*/

console.log(path.resolve(__dirname,'/jxisme/../','node/query.js'));
console.log(path.resolve('query.js'));

console.log(path.resolve('/foo/bar', './baz')); 
// Returns: '/foo/bar/baz'

console.log(path.resolve('/foo/bar', '/tmp/file/')); 
// Returns: '/tmp/file'

console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'));
// if the current working directory is /home/myself/node,
// this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'

/**
 * path.sep;取出当前平台用于将路径分割为路径片段的分隔符
 * path.delimiter;取出当前平台用于将多个路径之间的分割符号
*/
console.log(path.sep); // '/'
console.log(path.delimiter) // ':'

/**
 * path.relative(from, to);
 * 1.传入两个绝对路径,返回to相对from目录(路径)的相对路径
 * 2.两个路径相等时候,返回一个0长度的字符串(指的是空串不能不传参数)
 * 3.如果to或from为空,将空的参数替换为当前工作目录
*/

console.log(path.relative('/data/orandea/test/aaa','/data/orandea/impl/bb'));
// ../../impl/bb

console.log(path.relative('/data/orandea/test/aaa',''));
// ../../../../Volumes/Macintosh HD/WebDesign/node/path

console.log(path.relative('',''));
// ''

/*
*以下过程会先找出from到to的相对路径,../tal,然后再再resolve寻找绝对路径,直接将../tal**拼
合/data/name/cod/mac之后为/data/name/cod/mac/../tal再将mac/../抵消
 */
console.log(path.resolve(
    '/data/name/cod/mac'
    ,path.relative('/data/name/cod/mac','/data/name/impl/tal')
    ));
// HD/WebDesign/impl/tal
console.log(path.resolve('/data/name/impl/tal'));
// /data/name/impl/tal

/**
 * path.parse(path);将路径通过/号分成元素存放在对象中,
 * 输出:{ root: '/',
  dir: '/data/name/code',
  base: 'index.js',
  ext: '.js',
  name: 'index' }
{ root: '/',
  dir: '/data/name/code',
  base: 'index',
  ext: '',
  name: 'index' }
 */
console.log(path.parse('/data/name/code/index.js'));
console.log(path.parse('/data/name/code/index'));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值