初學node,你必須懂的幾個api
这两天在工作之余学习
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
共同學習,寫下你的評論
評論加載中...
作者其他優質文章





