源码
文章平均质量分 65
波 吉
想做产品的小小前端
展开
-
【毕业设计 | 开源】我把商业级仓库管理系统 ModernWMS 开源了
完全开源 | 商业级 | 仓库管理系统,这是我们团队的新作品,你可以尽管拿去作为毕业设计,或者作为学习的项目,更可作为直接用户部署一个属于自己的仓库管理系统~原创 2023-01-09 18:15:03 · 1614 阅读 · 7 评论 -
【源码阅读 | xe-utils源码 | 11】find 函数 - 寻找一个符合条件的值
本期阅读时长预计8分钟,可以学习到在浏览器环境不支持ES6的情况下,实现一个 find 函数原创 2022-02-21 14:15:17 · 537 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 10】clone 深拷贝(考虑多种数据类型)
本篇预计阅读时长10分钟,讲解了 xe-utils 中 clone 深拷贝源码的实现,支持多种数据类型。原创 2022-02-17 16:16:53 · 752 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 09】range 序号列表生成函数
本期源码可以学习到:利用移位符巧妙地实现对参数的处理原创 2022-01-26 09:45:32 · 283 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 08】isDocument(涉及DOM的 nodeType)
本期源码非常简单!通过 isDocument 判断是否为 document 对象,也复习一下我们较少用的 nodeType 属性原创 2022-01-24 13:14:51 · 675 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 07】isMatch 判断属性中的键值是否包含在对象中
isMatch 方法判断属性中的键值是否包含在对象中原创 2022-01-24 11:56:23 · 284 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 06】isEqual 深度比较两个值是否相等
1. 背景 JavaScript 中包含基础的值类型,引用类型及其他类型。 关于值类型和引用类型的区别,若有不理解的可以看这篇文章补课 【JavaScript】深拷贝与浅拷贝 ,这里就不再赘述。 当要判断 引用类型 时,以对象举例,则需要 遍历其所有的属性 来进行比较,只有属性对应的值完全相等,才能说两个对象相等,这在源码中如何实现呢?2. 源码解析2.1 xe-utils 源码 先来看看 xe-utils 的源码,其中为了可扩展性,增加了 自定义判断函数; 如果你觉得过于复杂,可原创 2022-01-23 12:24:58 · 429 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 05】判断ES6中的新类型
1. 背景 对于 isSymbol、isMap 等新特性中才有的类型的判断时,比起普通类型判断,源码中会多了对当前环境是否支持新类型的判断。 其中用到类似思路的有如下函数:isFormDataisSymbolisMapisWeakMapisSetisWeakSet…2. 源码解析以 isSymbol为例,如下判断思路为:先判断当前环境是否支持 Symbol 类型,若不支持则会返回 undefined 常量若支持 Symbol,则判断是否拥有 isSymbol 方法,若有则原创 2022-01-20 20:56:01 · 492 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 04】isEmpty 判断是否空对象
1. 背景 初看该函数名称时,我的理解是判断是否为 null 对象;但当看到官方文档中的用法与源码后,发现其确实是极妙的实现。// 官方文档中的示例用法XEUtils.isEmpty([11, 22]) // falseXEUtils.isEmpty({a:null}) // falseXEUtils.isEmpty(null) // trueXEUtils.isEmpty({}) // trueXEUtils.isEmpty([]) // true 也就是,null、{}、[] 都会原创 2022-01-20 08:56:58 · 364 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 03】isPlainObject | isTypeError
xe-utils 源码第三期:通过 constructor 来更为准确地判断 JavaScript 中的一些实例对象。原创 2022-01-18 20:12:41 · 240 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 02】判断Array类型
上一期讲了基础类型判断,唯独少了 Array 的判断,本期介绍源码中对 Array 类型的判断,并保证了兼容性和扩展性原创 2022-01-17 19:42:22 · 559 阅读 · 0 评论 -
【源码阅读 | xe-utils源码 | 01】判断基础类型
xe-utils工具库的源码解读,本期为Base篇:判断基础类型原创 2022-01-16 12:43:34 · 298 阅读 · 0 评论 -
【源码阅读 | 04】update-notifier 检查包更新
1. 场景 用于将当前 package.json 中的包与包管理工具库(如 npm)进行比对,若存在可以更新的包,则进行提示。2. 使用1)安装$ npm install update-notifier2)使用const updateNotifier = require('update-notifier');const pkg = require('./package.json');const notifier = updateNotifier({pkg});notifier.not原创 2021-12-16 21:03:55 · 996 阅读 · 1 评论 -
【源码阅读 | 03】only-allow 统一规范团队包管理器
1. 场景 Where 以我当前所在的项目组为例,有四个前端开发工程师。每个人在安装依赖的时候方式不一,我习惯用 cnpm install,别人习惯用 yarn install 或 npm install。这样的场景下,可能存在每个人所处的开发环境的依赖包不同。因此,可以试图用工具去规范团队: only-allow 。2. 方法 Method 只需在 package.json 中加入一行代码来限制,如下含义:只允许使用 npm 来进行安装npx only-allow [method](meth原创 2021-12-10 10:05:42 · 4696 阅读 · 0 评论 -
【源码阅读 | 02】validate-npm-package-name 校验包名是否规范
1. 场景 在使用如脚手架 创建项目 的时候,为了 规范包名,会对包名进行校验,此时就用到了题目中的 validate-npm-package-name 包。2. 使用打开 cmd,创建 vue 项目试一下(以 @vue/cli 4.5.9 为例)1)使用 保留字 作为项目名2)使用 _ 下划线作为开头3)使用 大写字母 作为项目名细心的人可能会发现,报错信息中,有的是 Error,有的是 Warning,区别在于:Warning :用于表示过去 package name 允许,原创 2021-12-08 10:35:08 · 891 阅读 · 0 评论 -
【源码阅读 | 01】Promisify 函数
1. 场景原生回调函数 callBack:存在回调地狱问题函数加上返回 Promise 对象构造成异步函数:每次都需要重新构造,重复工作使用 Promisify 做 Promise 的封装:减少构造 Promise 的重复工作2. 实现function promisify(original){ function fn(...args){ return new Promise((resolve, reject) => { args.push原创 2021-12-07 14:18:26 · 735 阅读 · 0 评论