seajs源码相关之dirname

其实很多寻址需求里面都会有这样的api设计

 

举例:

 

"a.js"           ===> "./"

 

"a/b.js"        ===>  "a/"

 

"a/b/c.js"     ===>  "a/b/"

 

 

http://jsperf.com/regex-vs-split/2  这篇test case里面探究了3种方式,有正则也有string本身的split等实现。

 

//最快的也是seajs采用的
function dirname(path){
     var s = path.match(/.*(?=\/.*$)/);
     return (s ? s[0] : '.') + '/';
}

 

 

  贴一下其他的两种吧

 

function dirname(path){
     var s = path.split('/').slice(0,-1).join('/');
     return s ? s : '.';
}
 

function dirname(path){
    var s = ('./' + path).replace(/(.*)?\/.*/, '$1').substring(2);
    return s ? s : '.';
}
 

 

你可能感兴趣的:(seajs)