亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

使用JavaScript實現node.js中的path.join方法

2024-05-06 16:45:39
字體:
來源:轉載
供稿:網友

Node.JS中的 path.join 非常方便,能直接按相對或絕對合并路徑,使用: path.join([path1], [path2], [...]),有時侯前端也需要這種方法,如何實現呢?

其實直接從 node.js 的 path.js 拿到源碼加工一下就可以了:

1. 將 const 等 es6 屬性改為 var,以便前端瀏覽器兼容
2. 添加一個判斷路戲分隔符的變量 sep,即左斜杠還是右斜杠,以第一個路戲分隔符為準
3. 將引用的變量和函數放到一個文件里就可以了:

Path 的源碼: https://github.com/nodejs/node/blob/master/lib/path.js

 

var CHAR_FORWARD_SLASH = 47var CHAR_BACKWARD_SLASH = 92var CHAR_DOT = 46function isPathSeparator(code) { return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;}function isPosixPathSeparator(code) { return code === CHAR_FORWARD_SLASH;}function normalize(path) { if (path.length === 0)  return '.'; var isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; var trailingSeparator =  path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; // Normalize the path path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator); if (path.length === 0 && !isAbsolute)  path = '.'; if (path.length > 0 && trailingSeparator)  path += '/'; if (isAbsolute)  return '/' + path; return path;}function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { var res = ''; var lastSegmentLength = 0; var lastSlash = -1; var dots = 0; var code; for (var i = 0; i <= path.length; ++i) {  if (i < path.length)   code = path.charCodeAt(i);  else if (isPathSeparator(code))   break;  else   code = CHAR_FORWARD_SLASH;  if (isPathSeparator(code)) {   if (lastSlash === i - 1 || dots === 1) {    // NOOP   } else if (lastSlash !== i - 1 && dots === 2) {    if (res.length < 2 || lastSegmentLength !== 2 ||      res.charCodeAt(res.length - 1) !== CHAR_DOT ||      res.charCodeAt(res.length - 2) !== CHAR_DOT) {     if (res.length > 2) {      const lastSlashIndex = res.lastIndexOf(separator);      if (lastSlashIndex !== res.length - 1) {       if (lastSlashIndex === -1) {        res = '';        lastSegmentLength = 0;       } else {        res = res.slice(0, lastSlashIndex);        lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);       }       lastSlash = i;       dots = 0;       continue;      }     } else if (res.length === 2 || res.length === 1) {      res = '';      lastSegmentLength = 0;      lastSlash = i;      dots = 0;      continue;     }    }    if (allowAboveRoot) {     if (res.length > 0)      res += `${separator}..`;     else      res = '..';     lastSegmentLength = 2;    }   } else {    if (res.length > 0)     res += separator + path.slice(lastSlash + 1, i);    else     res = path.slice(lastSlash + 1, i);    lastSegmentLength = i - lastSlash - 1;   }   lastSlash = i;   dots = 0;  } else if (code === CHAR_DOT && dots !== -1) {   ++dots;  } else {   dots = -1;  } } return res;}function join() { if (arguments.length === 0)  return '.'; var sep = arguments[0].indexOf('/') > -1 ? '/' : '//' var joined; var firstPart; for (var i = 0; i < arguments.length; ++i) {  var arg = arguments[i];  if (arg.length > 0) {   if (joined === undefined)    joined = firstPart = arg;   else    joined += sep + arg;  } } if (joined === undefined)  return '.'; var needsReplace = true; var slashCount = 0; if (isPathSeparator(firstPart.charCodeAt(0))) {  ++slashCount;  var firstLen = firstPart.length;  if (firstLen > 1) {   if (isPathSeparator(firstPart.charCodeAt(1))) {    ++slashCount;    if (firstLen > 2) {     if (isPathSeparator(firstPart.charCodeAt(2)))      ++slashCount;     else {      // We matched a UNC path in the first part      needsReplace = false;     }    }   }  } } if (needsReplace) {  // Find any more consecutive slashes we need to replace  for (; slashCount < joined.length; ++slashCount) {   if (!isPathSeparator(joined.charCodeAt(slashCount)))    break;  }  // Replace the slashes if needed  if (slashCount >= 2)   joined = sep + joined.slice(slashCount); } return normalize(joined);}

使用:

join('../var/www', '../abc')> "../var/abc"join('../var/www', '/abc')../var/www/abc

總結

以上所述是小編給大家介紹的使用JavaScript實現node.js中的path.join方法,希望對大家有所幫助,如果對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲福利在线播放| 日韩av免费在线观看| 九色精品免费永久在线| 久久九九亚洲综合| 欧美激情一区二区久久久| 日韩经典一区二区三区| 亚洲国产精品嫩草影院久久| 亚洲人成在线观| 日韩在线观看免费全| 欧美日韩国产va另类| 在线国产精品播放| 国产在线精品播放| 91国产美女视频| 精品久久国产精品| 国产精品美女久久久久久免费| 久久久久久久久久久成人| 国产精品久久视频| 日韩精品免费在线播放| 色香阁99久久精品久久久| 97在线看免费观看视频在线观看| 日韩电视剧免费观看网站| 欧美性猛交xxxx久久久| 国产精品日日摸夜夜添夜夜av| 最新亚洲国产精品| 亚洲成人动漫在线播放| 日韩久久免费电影| 91中文在线视频| 久久在线视频在线| 欧美激情在线狂野欧美精品| 欧美影院成年免费版| 日韩激情视频在线| 国产激情视频一区| 国产精品欧美日韩久久| 26uuu另类亚洲欧美日本一| 免费不卡欧美自拍视频| 欧美中在线观看| www.日韩系列| 久久亚洲私人国产精品va| 精品久久久久久中文字幕一区奶水| 久久久久久中文字幕| 欧美精品生活片| 欧美视频裸体精品| 国产精品永久免费视频| 国产精品丝袜久久久久久不卡| 亚洲高清久久久久久| 国产日韩欧美中文在线播放| 国产亚洲精品高潮| 国产精品无码专区在线观看| 日本高清不卡的在线| 日本午夜在线亚洲.国产| 免费99精品国产自在在线| 1769国内精品视频在线播放| 午夜精品久久久久久久久久久久久| 国产精品久久久久久久久久免费| 成人性生交大片免费观看嘿嘿视频| 国产91ⅴ在线精品免费观看| 久久精品99无色码中文字幕| 2019中文字幕在线观看| 欧美精品精品精品精品免费| 日韩精品免费观看| 亚洲一区精品电影| 成人h视频在线| 亚洲va电影大全| 91精品国产91久久| 国产精品美女999| 国产一区二区三区三区在线观看| 亚洲加勒比久久88色综合| 亚洲一区999| 一区二区中文字幕| 欧美多人乱p欧美4p久久| 国产欧亚日韩视频| 久久国产色av| 中文字幕在线看视频国产欧美在线看完整| 成人精品视频在线| 久久偷看各类女兵18女厕嘘嘘| 粉嫩老牛aⅴ一区二区三区| 精品少妇一区二区30p| 日韩免费av片在线观看| 亚洲欧洲午夜一线一品| 91久久夜色精品国产网站| 久久精品国产亚洲| 国内精品久久影院| 欧美激情乱人伦一区| 91av网站在线播放| 欧美精品videossex88| 日本欧美精品在线| 97国产精品视频人人做人人爱| 黄色精品在线看| 久久精品国产成人精品| 亚洲女性裸体视频| 亚洲色图35p| 久久久免费高清电视剧观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 日韩一区二区福利| 97在线观看免费| 欧美极品少妇与黑人| 亚洲va欧美va国产综合剧情| 5566成人精品视频免费| 国产日韩在线免费| 日韩欧美成人网| 色悠久久久久综合先锋影音下载| 久久艹在线视频| 57pao成人国产永久免费| 成人综合网网址| 91精品久久久久久久久久久| 欧美小视频在线| 国产亚洲精品va在线观看| 亚洲激情在线视频| 国产一区二区视频在线观看| 亚洲精品动漫久久久久| 久久久久国产精品一区| 日韩中文字幕精品视频| 久久久久久999| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品精品视频一区二区三区| 日韩精品亚洲精品| 亚洲毛片在线免费观看| 一区二区三区视频免费在线观看| 国产91精品最新在线播放| 亚洲影院色无极综合| 亚洲国产欧美一区二区三区同亚洲| 奇米成人av国产一区二区三区| 久久成人一区二区| 欧美午夜精品久久久久久浪潮| 日韩av在线影院| 亚洲国产欧美一区二区三区久久| 成人av.网址在线网站| 一区二区三区美女xx视频| 欧美亚洲视频在线观看| 午夜精品一区二区三区在线视| 亚洲欧美综合精品久久成人| 国产aⅴ夜夜欢一区二区三区| 国产精品一区二区久久久| 亚洲伊人第一页| 成人精品福利视频| 久久久久久国产| 亚洲电影免费观看| 亚洲欧洲午夜一线一品| 国产精品久久久久一区二区| 97精品国产97久久久久久春色| 国产精品偷伦免费视频观看的| 26uuu国产精品视频| 91精品啪在线观看麻豆免费| 国产区亚洲区欧美区| 91免费看视频.| 亚洲欧美日韩视频一区| 日韩在线国产精品| 国产精品成人久久久久| 17婷婷久久www| 久久久久免费精品国产| 国产一区二区三区毛片| 91精品国产高清久久久久久久久| 日本精品久久久久久久| 日韩欧美在线网址| 欧美三级欧美成人高清www| 国产激情综合五月久久| 中文字幕精品久久久久| 91久久在线观看| 欧美精品一二区| 欧美成人精品一区二区三区| 中文精品99久久国产香蕉| 亚洲欧美激情精品一区二区| 性色av一区二区三区红粉影视| 日韩有码片在线观看|