分类: 前端

11 篇文章

WebStorm 设置
都 2022 年了,你居然还在用 WebStorm?VSCode 不香吗?😤 都 2022 年了,你居然还在用 WebStorm?VSCode 不香吗?😤 😂 其实都用,平时写 Demo 或格式化文档时用 VSCode,写项目以及阅读源码会用 WebStorm,我认为两者更多是 IDE 和 Editor 的区别,放一起比较必要性也不大;敲代码用啥只…
TypeScript 关键字
类型约束 extends 语法:T extends K,这里的 extends 不是类、接口的继承,而是对于类型的判断和约束,意思是判断 T 能否赋值给 K。 判断 T 是否可以赋值给 U,可以的话返回 T,否则返回 never: type Exclude<T, U> = T extends U ? T : never 类型映射 in …
排序算法初探
冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对…
Blob Url And Data Url
Blob 什么是 Blob Blob(binary large object),二进制大型对象,是一个可以存储二进制文件的“容器”。 Blob 对象表示一个不可变、原始数据的类文件对象。File 接口基于 Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。前端页面经常使用 input 标签选择本地文件上传,得到的 file 对象…
JS 正则技巧
何为正则?一句话总结:正则是匹配模式,要么匹配字符,要么匹配位置。 字符匹配 模糊匹配 正则除了精确匹配,还能实现模糊匹配,模糊匹配又分为横向模糊和纵向模糊。 横向模糊匹配 横向模糊指的是,一个正则可匹配的字符串的长度不是固定的。其实现方式是使用量词,譬如 {m, n},表示连续出现最少 m 次,最多 n 次。 const regex = /ab{…
AbortController 中断 fetch
AbortController 可以用来终止一个或多个 Web 请求。 基础用法 // 创建 AbortController 的实例 const controller = new AbortController() const signal = controller.signal // 监听 abort 事件,在 controller.abort(…
动态规划
参考文章:动态规划 动态规划的三大步骤 动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存。 步骤一:定义数组元素的含义。前面提到一般用数组来保存历史记录,假设用一维数组 dp[],这时候每个数组元素的含义非常重要。 步骤二:找出数组元素之间的关系式。动态规划类似于我们…
题解
001 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么? key 的作用就是更新组件时判断两个节点是否相同。相同就复用,不相同就重新创建。以避免“原地复用”带来的副作用。 002 函数节流和函数防抖? 函数节流(throttle)与函数防抖(debounce)核心思想都是通过限制函数调用来实现性能优化,但两者概念却有不同…
常用 DOM 方法比较
innerText 对比 textContent 总结如下: innerText 获取的文字的换行符依然保留; innerText 无法获取隐藏文字; innerText 性能要相对差一些; innerText 由于存在诸多特别的特性、以及兼容性差异,以及性能方面问题,以及实际开发的需求的考量,不推荐使用,推荐使用 textContent 获取文本…
优雅实现 BackTop
BackTop 即滚动到页面顶部,是很多网站都会用到的基础功能,实现方法很多,Github 上也有许多优秀的三方库,如 smooth-scroll,但如何优雅实现也是一门学问。 事件绑定和解绑 滚动到页面顶部的按钮一般位于页面角落,并且只有在需要的时候才显示出来。所以首先需要监听页面滚动事件,直到滚动到一定距离后显示 BackTop 按钮。 监听页…