国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

使用JavaScript實(shí)現(xiàn)node.js中的path.join方法

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:10:13
文檔

使用JavaScript實(shí)現(xiàn)node.js中的path.join方法

使用JavaScript實(shí)現(xiàn)node.js中的path.join方法:Node.JS中的 path.join 非常方便,能直接按相對(duì)或絕對(duì)合并路徑,使用: path.join([path1], [path2], [...]),有時(shí)侯前端也需要這種方法,如何實(shí)現(xiàn)呢? 其實(shí)直接從 node.js 的 path.js 拿到源碼加工一下就可以了: 1. 將 const 等 es6 屬
推薦度:
導(dǎo)讀使用JavaScript實(shí)現(xiàn)node.js中的path.join方法:Node.JS中的 path.join 非常方便,能直接按相對(duì)或絕對(duì)合并路徑,使用: path.join([path1], [path2], [...]),有時(shí)侯前端也需要這種方法,如何實(shí)現(xiàn)呢? 其實(shí)直接從 node.js 的 path.js 拿到源碼加工一下就可以了: 1. 將 const 等 es6 屬

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

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

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

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

var CHAR_FORWARD_SLASH = 47
var CHAR_BACKWARD_SLASH = 92
var CHAR_DOT = 46
function 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

總結(jié)

以上所述是小編給大家介紹的使用JavaScript實(shí)現(xiàn)node.js中的path.join方法,希望對(duì)大家有所幫助,如果對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用JavaScript實(shí)現(xiàn)node.js中的path.join方法

使用JavaScript實(shí)現(xiàn)node.js中的path.join方法:Node.JS中的 path.join 非常方便,能直接按相對(duì)或絕對(duì)合并路徑,使用: path.join([path1], [path2], [...]),有時(shí)侯前端也需要這種方法,如何實(shí)現(xiàn)呢? 其實(shí)直接從 node.js 的 path.js 拿到源碼加工一下就可以了: 1. 將 const 等 es6 屬
推薦度:
標(biāo)簽: 方法 js javascript
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久久精品久久久久久久久久久 | 久久精品一区 | 国模大胆一区二区三区 | 国产伦精品一区二区三区免费下载 | 九九操视频 | 91久久国产综合精品女同国语 | 91精品国产品国语在线不卡 | 日韩二三区 | 国产全黄a一级毛片视频 | 欧美亚洲另类视频 | a男人的天堂久久a毛片 | 日韩电影一区二区 | 久久99久久精品国产99热 | 日本一区二区视频在线观看 | 亚洲国产精品久久久久久 | 欧美精品色精品一区二区三区 | 精品国产91乱码一区二区三区 | 图片专区亚洲 欧美 另类 | 在线h片 | 亚洲国产精品欧美日韩一区二区 | 久久精品一区二区三区不卡牛牛 | 欧美精品一区二区三区免费播放 | 欧美成人国产 | 日韩一区二区三区在线视频 | 高清国产精品久久 | 国产精品免费视频网站 | 在线精品亚洲欧洲第一页 | 最新国产小视频在线播放 | 日韩高清一区二区三区不卡 | 欧美日韩亚洲一区二区三区 | 一级网站在线观看 | 国产成人精品三区 | 亚洲欧美在线免费观看 | 高清亚洲| 日本成人一区二区 | 综合精品欧美日韩国产在线 | 国产v欧美v日韩在线观看 | 欧美亚洲一区二区三区在线 | 亚洲一级二级三级 | 欧美色图日韩 | 国产在线播放一区二区 |