dave-wind / blog

native javascript blog
0 stars 0 forks source link

记录一下 Node api 问题 #9

Open dave-wind opened 1 year ago

dave-wind commented 1 year ago

Path

Node path 路径模块

[path.resolve]: 该方法用于将相对路径转为绝对路径。

var path = require('path');
console.log(__dirname);
console.log(path.resolve(__dirname,'./src'));
console.log(path.resolve(__dirname,'/src'));
结果:
/Users/dave/work/core  // 当前执行工作路径
/Users/dave/work/core/src
/src

分析:
0.__dirname: 获得当前执行文件所在目录的完整目录名
1.只传入__dirname也可以自动调用path.resolve方法
2.可以拼接路径字符串,但是不调用path.resolve()方法拼接失败
3.从右至左解析,遇到了绝对路径/src,因此直接返回

核心:  __dirname,process.cwd(); 他们的出发点 都是以执行文件为出发点 去找路径

[path.join()]
作用: path.join()方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。
eg: 
console.log(path.join('/a', 'c', '/', '../bb')); //  /a/bb  走路径一样 拼接起来 先 /a/c 遇到 / 继续; 遇到 ../bb 又返回上一级 去找bb

[path.dirname]: Get the directories from a file path 从文件路径获取目录
path.dirname(__dirname) // 获取当前执行文件目录的父目录    /Users/dave/work

process

通过它来获得node进程相关的信息,比如运行node程序时的命令行参数。或者设置进程相关信息,比如设置环境变量


process.cwd():获得当前执行命令时文件夹目录名;和  __dirname 很像

// 区别: process.cwd() 是当前执行node命令时候的文件夹地址 ——工作目录,保证了文件在不同的目录下执行时,路径始终不变 __dirname 是被执行的js 文件的地址 ——文件所在目录

eg: 去找某个node_modules 下的 配置文件的绝对路径: (切记 如果第二个参数是 /xxx; 绝对路径的 就会直接返回) path.resolve(process.cwd(), 'node_modules/xxx/xx.config.js')

process.chdir(): 切换当前工作路径 eg: process.chdir(../); 向上一级; process.chdir(./tmp); 切到tmp文件夹; 填入相对路径 此时 在打印 process.cwd() // /Users/dave/work/core/tmp

### fileName
```js
在当前目录执行test.js:
__filename: 获得当前执行文件的带有完整绝对路径的文件名 //   /Users/dave/work/core/est.js

1.eg:所以获取当前文件的目录: (这么写怎么都不会错)
 path.dirname(__filename)
路径还可以拼接,比如以当前文件目录为中心 去找dist下的util
 path.dirname(__filename)+ '/dist/util.js'  // 返回的都是绝对路径

2.读取当前目录下 某个文件
fs.readFile(path.dirname(__filename)+ '/file/test.json');

核心: 是以当前这个文件为出发点,去找路径

fs

fs 文件模块
[fs.existsSync] 
同步执行;判断文件是否存在 返回 boolean

读取文件一般全用绝对路径
eg: 判断一个文件是否存在
fs.existsSync( path.resolve(process.cwd(), 'xx.config.js'));