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);
}
相关推荐
工业甲酰苯胺3 小时前
TypeScript枚举类型应用:前后端状态码映射的最简方案
javascript·typescript·状态模式
brzhang3 小时前
我操,终于有人把 AI 大佬们 PUA 程序员的套路给讲明白了!
前端·后端·架构
止观止4 小时前
React虚拟DOM的进化之路
前端·react.js·前端框架·reactjs·react
goms4 小时前
前端项目集成lint-staged
前端·vue·lint-staged
谢尔登4 小时前
【React Natve】NetworkError 和 TouchableOpacity 组件
前端·react.js·前端框架
Lin Hsüeh-ch'in4 小时前
如何彻底禁用 Chrome 自动更新
前端·chrome
augenstern4166 小时前
HTML面试题
前端·html
张可6 小时前
一个KMP/CMP项目的组织结构和集成方式
android·前端·kotlin
G等你下课7 小时前
React 路由懒加载入门:提升首屏性能的第一步
前端·react.js·前端框架
谢尔登7 小时前
【React Native】ScrollView 和 FlatList 组件
javascript·react native·react.js