[node]node内置模块path

[node]node内置模块path

  • 模块的导入
  • 路径值
    • __filename
    • __dirname
  • path 方法
    • path.resolve([from ...], to)
    • path.parse()
    • path.format()
    • path.basename(path[, ext])
    • path.extname(p)
    • path.dirname(p)
    • path.relative(from, to)
    • path.normalize(p)
    • path.isAbsolute(path)
    • path.join([path1][, path2][, ...])
  • path 属性
  • process
    • process.cwd()
      • 终端执行该命令
      • 文件中调用该命令

path是nodejs的内置模块,提供了处理和转换文件路径的工具

模块的导入

const path = require('path')

index.js文件,文件路径:D:node-test/server/bin/index.js

console.log(__filename);
console.log(__dirname);
console.log(path.resolve('./'));
console.log(path.resolve('..'));
console.log(path.resolve(__dirname,'..'));

路径值

__filename

输出当前命令的文件路径

console.log(__filename);
//D:node-test/server/bin/index.js

__dirname

输出当前命令的文件所在文件夹路径

console.log(__dirname);
//D:node-test/server/bin/

在AMD、CMD、CommonJs中都可以使用该值,但是在ES6环境下,该值失效

import path from 'path'
const __dirname = path.resolve();

path 方法

path.resolve([from …], to)

将 to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径(方法将一系列路径或路径段解析为绝对路径)

  • path.resolve(’./’)//当前命令所在项目的根目录
    //D:node-test
  • path.resolve(’…’);//当前项目所在文件夹
    //D:
  • path.resolve(__dirname,’…’)//执行当前命令文件所在文件夹的父级目录
    //D:node-test/server/bin/
  • path.resolve(__dirname,’…/’)//执行当前命令文件所在文件夹的父级目录
  • path.resolve(__dirname, ‘…/…/’)//执行当前命令所在文件夹的父级的父级目录

path.parse()

对路径进行解析

path.parse('C:\\path\\dir\\file.txt');

// Returns:
// { root: 'C:\\',
//   dir: 'C:\\path\\dir',
//   base: 'file.txt',
//   ext: '.txt',
//   name: 'file' }

path.format()

path.format(pathObject)

从对象中返回路径字符串,和 path.parse 相反。

path.basename(path[, ext])

path:文件所在路径,ext:文件后缀名,可选参数

path.basename('/foo/bar/baz/asdf/quux.html');
//  'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html');
// 'quux'

path.extname§

返回路径中文件的后缀名,即路径中最后一个’.‘之后的部分。如果一个路径中并不包含’.‘或该路径只包含一个’.’ 且这个’.'为路径的第一个字符,则此命令返回空字符串。

path.extname('/foo/bar/baz/asdf/quux.html');// '.html'
path.extname('/foo/bar/baz/asdf');// ''

path.dirname§

返回路径中代表文件夹的部分,其实就是指定路径的父级文件夹

path.dirname('/foo/bar/baz/asdf/quux.html');// '/foo/bar/baz/asdf'
path.dirname('/foo/bar/baz/asdf');// '/foo/bar/baz'

path.relative(from, to)

用于将绝对路径转为相对路径,返回从from 到 to的相对路径(基于当前工作目录)

path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb');// 返回: '..\\..\\impl\\bbb'
path.relative('C:\test\index.js', 'C:\test\form.js');// "../form.js"

上述第二个例子返回的是"../form.js"而不是"./form.js",两个文件在同一个文件夹,相对路径应该是一个".",也就是"./form.js"才对啊????!!!!,但是实测却不是

而且对于上述的相对路径的说明感觉是反的,API 的参数说明不正确,例如真实案例中:
path1:'C:\test\form.js’在path2:'C:\test\index.js’中的相对路径,是"./form.js",也就是from=path1,to=path2,所以该方法的正常参数解析应该是:

path.relative(to,from),而不是path.relative(from, to)

path.normalize§

规范化路径,注意’…’ 和 ‘.’

path.isAbsolute(path)

判断参数 path 是否是绝对路径

path.join([path1][, path2][, …])

用于连接路径。该方法的主要用途是正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是""

path 属性

属性 描述
path.sep 平台的文件路径分隔符,’\’ 或 ‘/’。
path.delimiter 平台的分隔符, ; or ‘:’.
path.posix 提供上述 path 方法,不过总以 posix 兼容的方式交互
path.win32 提供上述 path 方法,不过总以 win32 兼容的方式交互

process

process.execPath: 当前执行node的路径(如:/bin/node)

process.cwd()

使用的场景有两种

终端执行该命令

敲击命令的所在路径,即在那个路径下执行的该命令,得到就是该路径

  1. 在cmd终端中,输入node
    进入node的执行终端,如果不在node执行终端会无法识别process.cwd()
  2. 输入命令 process.cwd()
    输出即敲击命令的所在路径

文件中调用该命令

运行该文件的node命令所在目录,同终端一样

node file.js

你可能感兴趣的:(前端,node.js)