做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-27 22:10:13
文檔

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

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

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 = 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

總結

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

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

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 永定县| 玛曲县| 孝义市| 凭祥市| 精河县| 正镶白旗| 吉水县| 平凉市| 绥化市| 东台市| 遂川县| 鱼台县| 台中县| 咸宁市| 贵定县| 綦江县| 卢龙县| 宜都市| 利津县| 武强县| 康平县| 宕昌县| 循化| 汉源县| 山西省| 卢湾区| 买车| 安泽县| 西城区| 大埔县| 茌平县| 遵化市| 镇安县| 小金县| 衡阳市| 阳新县| 望奎县| 阳春市| 松阳县| 扶风县| 新昌县|