手写 Promise
Promise是一个对象,保存着未来将要结束的事件,他有两个特征: 对象的状态不受内部影响,Promise对象代表一个异步操作,有三种状态,pending进行中,fulfilled已成功,rejected以失败,只有异步操作的结果,才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。一旦状态改变,就不会在变,promise对象状态改变只有两…
手写EventBus
EventBus 又叫做 事件总线传值 ,本质是观察者模式的实现, 观察者模式就是 定义了对象间的一种一对多的关系,让多个观察这对象同事监听某一个主题对象,当一个对象发生改变时,所有依赖于他的对象将得到通知 他在 Node 中的使用,on 是用来监听事件 , emit 是用来触发事件 , 一旦emit触发了事件,on就会被监听到,从而触发回调。 c…
手写sleep函数
sleep 顾名思义 睡眠函数,他的作用是让下面的代码延迟一会在执行,效果等同于setTimeout函数,但是 setTimeout 在逐步延迟的使用中会出现回调地狱的情况。代码如下 setTimeout(()=>{  console.log("第一次打印")  setTimeout(()=>{   &nb…
JS类型判断
typeof() 类型检查只支持 基本数据类型 + undefined + function console.log(typeof 1) // numberconsole.log(typeof true) // booleanconsole.log(typeof "str") // stringconsole.log(typeof undefine…
JS模块化的几种规范
一个模块是能实现特定功能的文件,有了模块就可以方便的使用别人的代码,想要什么功能加载什么模块 common JS 模块化 开始于服务端的模块化, 同步定义的模块化,每个模块都有一个单独的作用域。 模块输出 const xxx = require(xxx) // 第三方模块: 参数为模块名(包名) // 自定义模块 参数为路径 模块引入 // 方式一…
css扫盲
垂直居中的集中方式 table 自带div display:tableflexmargin:autotransfrom:translate(-50%) JS动画与css动画的差异性 js动画用于较为复杂的逐帧动画,扩展性较高,可随时监听每一帧的变化,但对浏览器资源消耗较大css动画用于简单的补间动画,扩展性不高,CSS3动画存在兼容性问题 文本省略…
浅谈HTTP缓存
HTTP换内存应该算是前端开发中常接触的缓存机制之一,他又课细分为强制缓存与协商缓存,二者最大的区别在于判断缓存命中时,浏览器是否需要服务器进行询问以协商缓存的相关信息,而进行判断是否需要相应内容进行重新请求.下面就来具体看HTTP缓存的具体机制及缓存的决策策略. 强制缓存 (200内存缓存) 无需和浏览器通信,直接读取缓存内容 请求头信息 acc…
移动端click延迟300ms的原因及解决方案
为什么在移动端会出现click被延迟300ms? 早期的前端页面都是为PC端设计的,在2007年初,苹果的程序员们做出了一些妥协,应对iPhone小屏幕浏览桌面端站点的问题。其中包括双击缩放功能,这也是造成300ms延迟的主要原因。 双击缩放,顾名思义,即用手指在屏幕上快速点击两次,iOS 自带的 Safari 浏览器会将网页缩放至原始比例。 那么…
浅谈TCP和UDP
TCP和UDP的区别是什么 TCP面向连接 (网络系统需要在两台计算机之间发送数据之前先建立连接的一种特性)连接稳定 不丢包 不重复 适用于大数据传输tcp是一对一连接UDP无连接(不建立链接也可以进行传输)连接不可靠,会出现丢包现象一对一 、一对多 TCP的三次握手和四次挥手 进行TCP (协议) 连接,三次握手 (根据上一步请求回来的 ip 地…
uniapp 小程序进行分包配置及路由跳转
某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。 在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分。 在小程序启动时,默认会下载…