webpack源码分析——enhanced-resolve库之cdUp函数

一、 cdUp函数

函数功能

该函数寻找上层目录,每次调用函数时对输入的路径进行一次寻找上级目录。如果没有找到返回null

二、函数分析

  1. 传入的directory判读是否为'/'如果是直接返回null

    js 复制代码
    if (directory === "/") return null;
  2. 获取'/'和'\'在directory 中最后出现的位置,并赋值给i和j

    js 复制代码
    const i = directory.lastIndexOf("/"),
    		j = directory.lastIndexOf("\\");

    注:因为在不同平台上路径分隔符不一样

  3. 对i和j进行三元表达式判断

    js 复制代码
    const p = i < 0 
                ? j : j < 0 
                ? i : i < j 
                ? j : i;

是 不是 是 不是 是 不是 i是否小于0 返回j j是否小于0 返回i i是否小于j

  1. 根据p返回结果

    js 复制代码
    if (p < 0) return null;
    	return directory.slice(0, p || 1);

三、源码

js 复制代码
function cdUp(directory) {
	if (directory === "/") return null;
	const i = directory.lastIndexOf("/"),
		j = directory.lastIndexOf("\\");
	const p = i < 0 
                ? j : j < 0 
                ? i : i < j 
                ? j : i;
	if (p < 0) return null;
	return directory.slice(0, p || 1);
}
相关推荐
IT_陈寒7 小时前
Vite的热更新突然失效,原来是因为这个配置
前端·人工智能·后端
ZC跨境爬虫7 小时前
3D 地球卫星轨道可视化平台开发 Day8(分步渲染200颗卫星+ 前端分页控制)
前端·python·3d·重构·html
竹林8187 小时前
RainbowKit快速集成多链钱包连接,我如何从“连不上”到“丝滑切换”
前端·javascript
笨笨狗吞噬者7 小时前
Opus 4.7 使用体验
前端·ai编程
No8g攻城狮7 小时前
【前端】Vue 中 const、var、let 的区别
前端·javascript·vue.js
文心快码BaiduComate7 小时前
Comate搭载Kimi K2.6,长程13h!
前端·后端·程序员
豹哥学前端8 小时前
新手小白学前端day4: Position定位
前端
fishmemory7sec8 小时前
Vue大屏自适应容器组件:v-scale-screen
前端·javascript·vue.js
饺子不吃醋8 小时前
Promise原理、手写与 async、await
前端·javascript
PILIPALAPENG8 小时前
第3周 Day 2:Function Calling —— 让 Agent 听懂人话,自己干活
前端·人工智能·python