node的path解釋

//如下都是以windows環境爲例
var path = require('path');
console.log(' module.filename = ' + module.filename + ' ');
console.log(' __filename = ' + __filename + ' ');
console.log(' __dirname = ' + __dirname + ' ');
console.log(' process.cwd() = ' + process.cwd() + ' ');
console.log(' require.main.filename= ' + require.main.filename + ' ');
/*
module.filename:開發期間,該行代碼所在的文件。E:testdemolibtest.js
__filename:始終等於 module.filename。E:testdemolibtest.js
__dirname:開發期間,該行代碼所在的目錄。E:testdemolib\
process.cwd():運行node的工做目錄,可使用 cd /d 修改工做目錄。E:testdemo\
require.main.filename:用node命令啓動的module的filename, 如 node xxx,這裏的filename就是這個xxx。NODE啓動的誰他就是誰
path.dirname: 輸出:/tmp/demo/jshtml

*/node

var filepath = '/tmp/demo/js/test.js';git

console.log( path.dirname(filepath));//輸出:/tmp/demo/js
console.log( path.basename('/tmp/demo/js/test.js') );// 輸出:test.js
console.log( path.basename('/tmp/demo/js/test/') );// 輸出:test
console.log( path.basename('/tmp/demo/js/test') );// 輸出:test
console.log( path.basename('/tmp/demo/js/test.js', '.js') );// 輸出:test 獲取到文件名json

//path.extname
console.log( path.extname(filepath) );// 輸出:.js 獲取到文件擴展名;
//path.extname從最後一個.截取到最後一個字符;若是B中不存在.或者B的第一個字符就是.那麼返回空字符串。
path.extname('index.html')// returns '.html'
path.extname('index.coffee.md')// returns '.md'
path.extname('index.')// returns '.'
path.extname('index')// returns ''
path.extname('.index')// returns ''windows

//path.json
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'));// 輸出 '/foo/bar/baz/asdf'ide

//path.resolve
//例如:path.resolve('/foo/bar', './baz') 相似於先進入cd /foo/bar 再進入 cd ./baz
// 假設當前工做路徑是 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-pathui

console.log( path.resolve('') )// 輸出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-pathcode

console.log( path.resolve('.') )// 輸出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-pathorm

console.log( path.resolve('/foo/bar', 'baz') );// 輸出 /foo/bar/baz
console.log( path.resolve('/foo/bar', './baz') );// 輸出 /foo/bar/baz
console.log( path.resolve('/foo/bar', './baz/') );// 輸出 /foo/bar/baz
console.log( path.resolve('/foo/bar', '/tmp/file/') );// 輸出 /tmp/file
console.log( path.resolve('/foo/bar', '/tmp/file') );// 輸出 /tmp/file
console.log( path.resolve('www', 'js/upload', '../mod.js') );
//綜上所述有.或者./或``都會接在上一個的後面
// 輸出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path/www/js/mod.jshtm

//path.format
/*
根據接口的描述來看,如下二者是等價的。
root vs dir:二者能夠互相替換,區別在於,路徑拼接時,root後不會自動加/,而dir會。
base vs name+ext:二者能夠互相替換。
*/
var p1 = path.format({
root: '/tmp/',
base: 'hello.js'
});
console.log( p1 ); // 輸出 /tmp/hello.js

var p2 = path.format({
dir: '/tmp',
name: 'hello',
ext: '.js'
});
console.log( p2 ); // 輸出 /tmp/hello.js

//path.parse(filepath) 是path.format(pathObject) 的反向操做,直接上官網例子。
path.parse('/home/user/dir/file.txt')
// returns
// {
// root : "/",
// dir : "/home/user/dir",
// base : "file.txt",
// ext : ".txt",
// name : "file"
// }

//path.relative(from, to) //獲取相對路徑
var p1 = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
console.log(p1); // 輸出 "../../impl/bbb"

var p2 = path.relative('/data/demo', '/data/demo');
console.log(p2); // 輸出 ""

var p3 = path.relative('/data/demo', '');
console.log(p3); // 輸出 "../../Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path"

console.log(process.env.PATH)
// 'C:Windowssystem32;C:Windows;C:Program Filesnode'

process.env.PATH.split(path.delimiter)// returns ['C:\Windows\system32', 'C:\Windows', 'C:\Program Files\node\']

相關文章
相關標籤/搜索