设为首页 加入收藏

TOP

node path模块
2017-10-13 10:50:23 】 浏览:475
Tags:node path 模块

一、在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写一遍,加上自己的理解,大概就清楚了。

祝大家端午节快乐。

 


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JavaScript DOM编程艺术(第二版.. 下一篇es6之Set和Map

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }