继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

初学node,你必须懂的几个api

墨色风雨
关注TA
已关注
手记 300
粉丝 75
获赞 350

这两天在工作之余学习Node.js,整理了其中一些基础api,并写了一些基础的demo

下面是自己对于pathbuffereventfs这几个常用到api的一些用法整理。

一,PATH

模块提供了一些工具函数,用于处理文件与目录的路径。

1,path.normalize(path)

path.normalize() 方法会规范化给定的 path,并解析 '..''.' 片段

https://img.mukewang.com/5d53fe32000189c508210473.jpg

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/'));

结果如图

https://img.mukewang.com/5d53fe3a000181ff06130133.jpg

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/'));

结果如图

https://img.mukewang.com/5d53fe3d000118b809050168.jpg

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'

结果如图

https://img2.mukewang.com/5d53fe420001e0fc09060152.jpg

pathName.png

5,path.parsepath.format

path.parse() 方法返回一个对象,对象的属性表示 path 的元素。返回的对象有以下属性:rootdirbaseextname

path.format() 方法会从一个对象返回一个路径字符串。 与 path.parse() 相反。


https://img2.mukewang.com/5d53fe4600013a6509260652.jpg


需要注意的点

pathObject 提供的属性有组合时,有些属性的优先级比其他的高:

  • 如果提供了 pathObject.dir,则 pathObject.root 会被忽略

  • 如果提供了 pathObject.base 存在,则 pathObject.extpathObject.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,sepdelimiterwin32posix

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); // ";"

结果如图

https://img4.mukewang.com/5d53fe680001337009040211.jpg

win.png

7,关于路径的注意点

__dirnameprocess.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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP