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);
}
相关推荐
程序猿_极客20 分钟前
【期末网页设计作业】HTML+CSS+JS 旅行社网站、旅游主题设计与实现(附源码)
javascript·css·html·课程设计·期末网页设计
百***359425 分钟前
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
前端·tcp/ip·nginx
用户2832096793728 分钟前
为什么我的页面布局总是乱糟糟?可能是浮动和BFC在作怪!
javascript
花果山总钻风31 分钟前
Chrome 插件框架 Plasmo 基本使用示例
前端·chrome
资讯第一线33 分钟前
《Chrome》 [142.0.7444.60][绿色便携版] 下载
前端·chrome
会篮球的程序猿1 小时前
原生表格文本过长展示问题,参考layui长文本,点击出现文本域
前端·javascript·layui
top_designer1 小时前
Firefly 样式参考:AI 驱动的 UI 资产“无限”生成
前端·人工智能·ui·aigc·ux·设计师
蜗牛前端1 小时前
使用 Trae AI 开发完整的开源 npm 包:snail-git-add
前端
哆啦A梦15881 小时前
48 我的地址页面布局
javascript·vue.js·node.js
Dontla1 小时前
React useMemo(当依赖项未变化,重复渲染时直接返回上一次缓存计算结果,而非重新执行计算)
前端·react.js·缓存