这两天在工作之余学习
Node.js
,整理了其中一些基础api
,并写了一些基础的demo
下面是自己对于
path
、buffer
、event
、fs
这几个常用到api
的一些用法整理。
一,PATH
模块提供了一些工具函数,用于处理文件与目录的路径。
1,path.normalize(path)
path.normalize()
方法会规范化给定的 path
,并解析 '..'
和 '.'
片段
2,path.join([...paths])
path.join()
方法使用平台特定的分隔符把全部给定的 path
片段连接到一起,并规范化生成的路径。
例子
const { normalize,join } = require('path');console.log(join('/foo', 'bar', 'baz/asdf', 'quux', '..'));console.log(join('/usr','../local','bin/'));
结果如图
path_join.png
3,path.resolve([...paths])
path.resolve()
方法会把一个路径或路径片段的序列解析为一个绝对路径。
例子
const { resolve } = require('path');console.log(resolve('./'));console.log(resolve('/foo/bar', './baz'));console.log(resolve('/foo/bar', '/tmp/file/'));
结果如图
path_resolve.png
4,basename
:文件名;extname
:文件的拓展名;dirnam
:目录名文件所在的路径
例子
const { dirname,extname,basename } = require('path');const filePath = '/usr/local/bin/no.txt';console.log(dirname(filePath)); // '/usr/local/bin'console.log(extname(filePath)); // '.txt'console.log(basename(filePath)); // 'no.txt'
结果如图
pathName.png
5,path.parse
,path.format
path.parse()
方法返回一个对象,对象的属性表示 path
的元素。返回的对象有以下属性:root
、dir
、base
、ext
、name
;
path.format()
方法会从一个对象返回一个路径字符串。 与 path.parse()
相反。
需要注意的点
当 pathObject
提供的属性有组合时,有些属性的优先级比其他的高:
如果提供了
pathObject.dir
,则pathObject.root
会被忽略如果提供了
pathObject.base
存在,则pathObject.ext
和pathObject.name
会被忽略
//1, 如果提供了 `dir`、`root` 和 `base`,则返回 `${dir}${path.sep}${base}`。// `root` 会被忽略。path.format({ root: '/ignored', dir: '/home/user/dir', base: 'file.txt'});// 返回: '/home/user/dir/file.txt'// 2,如果没有指定 `dir`,则 `root` 会被使用。// 如果只提供了 `root` 或 `dir` 等于 `root`,则平台的分隔符不会被包含。// `ext` 会被忽略。path.format({ root: '/', base: 'file.txt', ext: 'ignored'});// 返回: '/file.txt'// 3,如果没有指定 `base`,则 `name` + `ext` 会被使用。path.format({ root: '/', name: 'file', ext: '.txt'});// 返回: '/file.txt'
6,sep
,delimiter
,win32
,posix
delimiter
提供平台特定的路径分隔符:
Windows 上是
;
POSIX 上是
:
sep
提供了平台特定的路径片段分隔符:
Windows 上是
\
POSIX 上是
/
path.win32
属性提供了 path
方法针对 Windows 的实现;
path.posix
属性提供了 path
方法针对 POSIX 的实现。
例子
// mac下const { sep,delimiter,win32,posix } = require('path');console.log('PATH:',process.env.PATH); // "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"console.log('sep:',sep); // "/"console.log('win sep:',win.sep); // "\"console.log('delimiter:',delimiter); // ":"console.log('delimiter:',win.delimiter); // ";"
结果如图
win.png
7,关于路径的注意点
__dirname
,process.cwd()
,path.resolve()
三者的区别
例子
//1,在项目的根目录执行:$ ~/Desktop/node_demo $ node index.js ============代码============const path = require('path');const mod = require('./test.js');console.log(mod.testVar); // 5console.log('__dirname',__dirname); // "/Users/fujiawei/Desktop/node_demo"console.log('process.cwd()',process.cwd()); // "/Users/fujiawei/Desktop/node_demo"console.log('./',path.resolve('./')); // "/Users/fujiawei/Desktop/node_demo"===================//2,在Desktop执行$ ~/Desktop $ node node_demo/index.js ============代码============const path = require('path');const mod = require('./test.js');console.log(mod.testVar); // 5console.log('__dirname',__dirname); // "/Users/fujiawei/Desktop/node_demo"console.log('process.cwd()',process.cwd()); // "/Users/fujiawei/Desktop"console.log('./',path.resolve('./')); // "/Users/fujiawei/Desktop"
__dirname
与__filename
总是返回文件的绝对路径,即物理磁盘上的路径process.cwd()
总是返回执行node
命令时所在的文件夹路径,当前在哪里启动的脚本路径./
在require
方法中总是相对当前文件所在文件夹的路径;在其他的地方和process.cwd()
一样,相对node
启动文件夹
作者:darrell
链接:https://www.jianshu.com/p/08e014f786a4