1. 程式人生 > >node path模塊

node path模塊

color 為什麽 bsp 相對 base orm div 分隔 快樂

一、在nodejs中path模塊時使用頻率很高的模塊,其中不乏有很多API寫得很模糊,但仔細琢磨下來,也不是很難理解。

1.獲取文件所在路徑

var path = require(‘path‘);
var test = ‘/test/test1/test2/test.js‘;
//獲取文件所在的目錄
console.log(path.dirname(test)); //  /test/test1/test2

2.獲取路徑中的最後一部分

var path = require(‘path‘);
var test = ‘/test/test1/test2/test.js‘;
var test1 = ‘/test/test1/test2/‘;
var test2 = ‘/test/test1/test2‘; //獲取路徑中的最後一部分 大部分時間可以用來判斷文件名 console.log(path.basename(test)); //test.js console.log(path.basename(test1)); // test2 console.log(path.basename(test2));//test2

3.獲取文件的拓展名

var path = require(‘path‘);
var test = ‘/test/test1/test2/test.js‘;
var file1 = ‘.js‘;
var file2 = ‘js.‘;

//獲取文件的拓展名  其實是從最後一個 ‘.‘開始截取的。特別需要註意的是
//如果 ‘.‘開頭 則返回 空 , 點結尾返回 ‘.‘ console.log(path.extname(test)); //.js console.log(path.extname(file1)); // ‘‘ console.log(path.extname(file2)); //‘.‘

二、組合路徑

1. 路徑的拼接 path.join();

var path = require(‘path‘);
var test = ‘/test/‘;
var test1 = ‘/test1/‘;
var test2 = ‘/test2/‘;

console.log(path.join(test,test1,test2));
// ‘\test\test1\test2‘; // 為什麽會輸出這個呢 ? 其實是把 path 拼接起來在normalize一下

2.path.resove(from,to);將to 解析為絕對路徑

var path = require(‘path‘);

console.log(path.resolve(‘path.js‘)) //\express\path.js

3.path.parse();路徑的解析

var path = require(‘path‘);

//路徑的解析
console.log(path.parse(‘path.js‘))
//{ root: ‘‘, dir: ‘‘, base: ‘path.js‘, ext: ‘.js‘, name: ‘path‘ }

三、規範路徑 path.normalize();

  • 如果路徑為空,返回.,相當於當前的工作路徑。
  • 將對路徑中重復的路徑分隔符(比如linux下的/)合並為一個。
  • 對路徑中的...進行處理。(類似於shell裏的cd ..
  • 如果路徑最後有/,那麽保留該/
    var path = require(‘path‘);
    var filepath = ‘/tmp/demo/js/test.js‘;
    
    var index = 0;
    
    var compare = function(desc, callback){
        console.log(‘[用例%d]:%s‘, ++index, desc);
        callback();
        console.log(‘\n‘);
    };
    
    compare(‘路徑為空‘, function(){
        // 輸出 .
        console.log( path.normalize(‘‘) );
    });
    
    compare(‘路徑結尾是否帶/‘, function(){
        // 輸出 /tmp/demo/js/upload
        console.log( path.normalize(‘/tmp/demo/js/upload‘) );
    
        // /tmp/demo/js/upload/
        console.log( path.normalize(‘/tmp/demo/js/upload/‘) );
    });
    
    compare(‘重復的/‘, function(){
        // 輸出 /tmp/demo/js
        console.log( path.normalize(‘/tmp/demo//js‘) );
    });
    
    compare(‘路徑帶..‘, function(){
        // 輸出 /tmp/demo/js
        console.log( path.normalize(‘/tmp/demo/js/upload/..‘) );
    });
    
    compare(‘相對路徑‘, function(){
        // 輸出 demo/js/upload/
        console.log( path.normalize(‘./demo/js/upload/‘) );
    
        // 輸出 demo/js/upload/
        console.log( path.normalize(‘demo/js/upload/‘) );
    });
    
    compare(‘不常用邊界‘, function(){
        // 輸出 ..
        console.log( path.normalize(‘./..‘) );
    
        // 輸出 ..
        console.log( path.normalize(‘..‘) );
    
        // 輸出 ../
        console.log( path.normalize(‘../‘) );
    
        // 輸出 /
        console.log( path.normalize(‘/../‘) );
    
        // 輸出 /
        console.log( path.normalize(‘/..‘) );
    });

四、其中不乏有些沒有說清楚,按照API寫一遍,加上自己的理解,大概就清楚了。

祝大家端午節快樂。

node path模塊