Graph
知识体系汇总前端前端知识体系图
JavaScriptJavaScript知识体系图
TypeScriptTypeScript知识体系图
Node.jsNode.js知识体系图
ReactReact知识体系图
VueVue知识体系图
FlutterFlutter知识体系图
HybridHybrid知识体系图
Algorithm - DFS & BFS (JavaScript)
DFS & BFS - JavaScript通常遍历树结构:深度优先遍历(DFS)和广度优先遍历(BFS)。
树结构数据如下:
12345678910111213141516171819202122232425262728293031const tree = { value: '1', children: [ { value: '2', children: [ { value: '4', children: [] }, { value: '5', children: [] } ] }, { value: '3', children: [ { value: ...
Algorithm - Sorting (JavaScript)
排序算法 - JavaScript1. 选择排序核心思想:在未排序的序列中找到最小(大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(大)的元素,然后放到已排序序列的末尾,以此类推,直到所有元素排序完成。
123456789101112131415function selectionSort(arr) { if (!arr || arr.length < 2) return arr let min = 0 const N = arr.length - 1 for (let i = 0; i < N; i++) { min = i for (let j = i + 1; j <= N; j++) { min = arr[j] < arr[min] ? j : min } const [arr[i], arr[minIndex]] = [arr[minIndex], arr[i] } return arr}
2. 冒泡排序核心思想: ...
Git
Gitgit下载https://git-scm.com/downloads
git别名alias配置Windows上配置
1234567891011121314# 用户目录下[alias] a = add ckt = checkout cktb = checkout -b cm = commit -m ca = commit -a ss = status pl = pull ps = push l = log br = branch reb = rebase mg = merge
Mac上的配置
123456789101112131415alias gs="git status"alias gcc="git checkout"alias gccb="git checkout -b"alias gl="git log"alias glo="git log --online --graph"alias gb=" ...
项目纪实杂症之process is not defined
项目纪实杂症之process is not defined背景介绍项目使用的Vite构建React前端项目,符号现代化web开发规范,部署到云端通过新建流水线后实现自动部署。通常情况是本地修改之后之后上传release分支,运行流水线,部署完成(uat)。终于有一天,按照常规操作之后,再次访问项目,意外出现白屏无法问题。开始排查…
排查流程从最直观的错误出发
登录成功之后进入首页,页面空白,打开开发控制台,控制台明显报错,见下图err01.pngerr02.png
从错误信息可以直观判断出,源码中使用了process,但是没定义,process是node环境下的定义的,如果说在浏览器端直接使用的话,是会出这样的问题,于是找到本地代码,查找process的使用地方,排除了node_modules第三库之外,只有一处使用了process.cwd(),和错误处相距甚远,显然不是这个这里导致的。
项目代码没问题,那究竟是哪里出来问题?同样的代码,之前构建跑的流水线能够使用,今天却突然不行了,极大的可能是流水线哪里出了问题,于是…
排查前后流水线的差别经过前后对比前后2条流水线的对比之后 ...
Linux
LinuxLinux Commends123456789101112131415161718192021222324252627ls -- 展开目录 ls -a -- 包括隐藏文件ls /usr -- 针对根目录查看当前usr下文件目录ll -- 展开目录并显示文件等的信息cd / -- 回到根目录cd 或 cd ~ -- 用户目录 /root => 系统管理员 超级权限者的用户主目录clear -- 清屏ctrl+l -- 同上mkdir folder => 创建文件夹 单个mkdir -p sh/folder 多层目录touch file.js => 创建文件rm -f -- 删除文件rm -rf -- 遍历强制删除任何文件 *包括空文件夹pwd -- 显示当前目录vim file.js -- 编辑文件 (没有会自创建)vi file.js -- 基本同上cat file.js -- 查看文件内容mv -- 将文件或目录改名或将文件由一个目录移入另一个目录中cp -- 用于复制文件或目录的指令
Vim操作相关12345678:w - 保存文件,不退出v ...
Promise原理实现
Promise原理手写实现已实现方法
p.then()
p.catch()
Promise.all()
Promise.race()
代码演示Talk is cheap, show me the code!
new Promise()123456789101112131415161718192021222324252627282930313233function MyPromise(executor) { this.status = 'pending' this.resolvedValue = null this.rejectedValue = null this.onFullFilledList = [] this.onRejectedList = [] const _this = this function resolve(value) { if (_this.status === 'pending') { _this.status = 'fulfilled' ...
Typescript常用内置工具类型(ts-built-in-utils)
Typescript常用内置工具类型Record定义对象的key与value类型
源码
1Record<key type, value type>
Partial生成新类型,该类型与T拥有相同的属性,所有属性变为可选
源码
123type Partial<T> = { [P in keyof T]?: T[P]}
Required生成一个新类型,该类型与T拥有相同的属性,但所有属性皆为必选项
源码
123type Required<T> = { [p in keyof T]-?: T[P]}
Readonly生成一个新类型,T中所有属性变为只读,不能修改
源码
123type Readonly<T> = { readonly [P in keyof T]: T[P];}
Pick生成一个新类型,返回T包含了K的属性集
源码
123type Pick<T, K extends keyof T> = { [P in K]: T[P ...
Typescript Tsconfig
Typescript中tsconfig.json配置速查tsconfig.json属性配置,定义typescript将以什么样的方式去编译代码,熟悉常用配置选项,对日常开发将会有一定帮助,即使忘记速查即可。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162{ // 包含: /** 任何目录 /* 任何文件 默认值:/**/* "include": ["./**/*"], // 排除: 默认排除node_modules browser_components jspm_packages 一般情况下不需要配置 "exclude": [], "compilerOptions": { // 用来指定ts被编译后的es版本 默认es3 ESNext指代最新的es版本 "target&quo ...
React Algorithm
React Algorithm位运算(bit-operation)特性位运算在计算机中作为非常底层的运算,速度快,但不太直观且不支持整数运算。
位运算只能在整型变量之间进行运算
js 中的Number类型在底层都是以浮点数(参考 IEEE754 标准)进行存储
js 中所有的按位操作符的操作数都会被转成补码形式的有符号32位整数
位运算用法描述按位与(&)a & b对于每一个比特位,两个操作数都为 1 时, 结果为 1, 否则为 0按位或(|)a | b对于每一个比特位,两个操作数都为 0 时, 结果为 0, 否则为 1按位异或(^)a ^ b对于每一个比特位,两个操作数相同时, 结果为 0, 否则为 1按位非(~)~ a反转操作数的比特位, 即 0 变成 1, 1 变成 0左移(<<)a << b将 a 的二进制形式向左移 b (< 32) 比特位, 右边用 0 填充有符号右移(>>)a >> b将 a 的二进制形式向右移 b (< 32) 比特位, 丢弃被移除的位, 左侧以最高位来填充无符号右移(> ...





