resolve与join的区别
2021 nodejs在 nodejs 里面,resolve 与 join 都是常用的路径方法。
path.join([…paths])
path.join()
将所有给定的路径段连接在一起,然后对结果路径进行规范化。
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// Returns: '/foo/bar/bza/asdf'
path.join('foo/bar', 'baz');
// Returns: 'foo/bar/baz'
path.resolve([…paths])
path.resolve()
将一系列路径或路径段解析为绝对路径。
假设当前目录:/home/myself/node
path.resolve('/foo/bar', './baz');
// Returns: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file');
// Returns: 'tmp/file'
path.resolve('wwwroot', 'static_file/png', '../gif/image.gif');
// Returns: '/home/myself/node/wwwroot/static_file/gif/image.gif'
path.resolve();
// Returns: '/home/myself/node'
path.resolve(__dirname);
// Returns: '/home/myself/node'
__dirname 和 __filename
__dirname 当前模块的目录名,与 path.dirname(__filename)
相同。
console.log(__dirname);
// /Users/mjr
console.log(path.dirname(__filename));
// /Users/mjr
__filename 当前模块的文件名,当前模块的文件的绝对路径。
对于主程序而言,这不一定与命令中使用的文件名相同。
console.log(__filename);
// /Users/mjr/example.js
注意:__filename 和 __dirname 是 CommonJS 模块的变量,在 ES 模块中无法使用。
不过我们可以通过 import.meta.url
实现类似的功能。
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
process.cwd
process.cwd() 方法返回当前 nodejs 进程的工作目录