前端
WebStorm 设置
都 2022 年了,你居然还在用 WebStorm?VSCode 不香吗?😤 都 2022 年了,你居然还在用 WebStorm?VSCode 不香吗?😤
😂 其实都用,平时写 Demo 或格式化文档时用 VSCode,写项目以及阅读源码会用 WebStorm…
排序算法初探
冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢 “浮” 到数列的顶端。
冒泡排序算…
JS 正则技巧
何为正则?一句话总结:正则是匹配模式,要么匹配字符,要么匹配位置。 字符匹配
模糊匹配
正则除了精确匹配,还能实现模糊匹配,模糊匹配又分为横向模糊和纵向模糊。
横向模糊匹配
横向模糊指的是,一个正则可匹配的字符串的长度不是固定的。其实现方式是使用量词,譬如 {m, n…
TypeScript 映射类型
只读类型 Readonly 定义:用于将 T 类型的所有属性设置为只读状态。
Copy
type Readonly<T> = {
readonly [P in keyof T]: T[P]
}
用法:
Copy
interface Person {
name: string…
TypeScript 编码规范
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 Coding guidelines
TypeScript 手册
Google TypeScript 风格指南…
TypeScript 关键字
类型约束 extends 语法:T extends K,这里的 extends 不是类、接口的继承,而是对于类型的判断和约束,意思是判断 T 能否赋值给 K。
判断 T 是否可以赋值给 U,可以的话返回 T,否则返回 never:
Copy
type Exclude<T, U> =…
动态规划
参考文章:动态规划 动态规划的三大步骤
动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存。
** 步骤一:定义数组元素的含义。** 前面提到一般用数组来保存历史记录,假设用一维数组 dp…
AbortController 中断 fetch
AbortController 可以用来终止一个或多个 Web 请求。 基础用法
Copy
// 创建 AbortController 的实例
const controller = new AbortController()
const signal = controller…
WebSocket 心跳重连机制
WebSocket 是一种网络通信协议,它使得客户端和服务器之间的数据交换变得更加简单。最近在项目中使用 WebSocket 实现了一个简单在线聊天室功能,在此探究下心跳重连的机制。 WebSocket
WebSocket 允许服务端主动向客户端推送数据…
从浏览器解析 JS 运行机制
进程与线程 对于进程和线程,可以比喻为工厂和工人
进程是一个工厂,工厂有它的独立资源(系统分配的独立一块内存)
工厂之间相互独立(进程之间相互独立)
线程是工厂中的工人,多个工人协作完成任务(多个线程在进程中协作完成任务)
工厂内有一个或多个工人(一个进程由一个或多个线程组成)…
题解
001 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么? key 的作用就是更新组件时判断两个节点是否相同。相同就复用,不相同就重新创建。以避免 “原地复用” 带来的副作用。
002 函数节流和函数防抖?
函数节流(throttle)与函数防抖…
动态加载 JS 文件
对于 Vue、React 等框架开发的单页面应用,在某些页面开发特殊功能时经常需要依赖第三方 JS 文件,如果在全局引入 CDN 资源可能会加载冗余文件,此时最好使用动态加载方式。 动态加载 JS 脚本指仅在某些特殊页面引入依赖文件,而非全局引入…
常用 DOM 方法比较
innerText 对比 textContent 总结如下:
innerText 获取的文字的换行符依然保留;
innerText 无法获取隐藏文字;
innerText 性能要相对差一些;
innerText 由于存在诸多特别的特性、以及兼容性差异,以及性能方面问题…