掘友等级
老夫擅长Vue一把梭,react一把梭,node梭一把 获得徽章 5
请教万能的 jym:number 类型的 12.3000,如何获取其全部的小数位数?
toString 会忽略掉后面的0,期望能得到全部位数 (4),但目前试过几个方法,都只能得到忽略0后的位数(1)
请 jym 指点迷津!!!
#挑战每日一条沸点# chrome 浏览器有个 navigator.connection 对象,该对象中有个 downlink 字段,可以返回当前网络下载速度。
#每天一个知识点# TCP 可靠连接中,如何保证连接不丢包?
TCP 通过连续 ARQ 协议及滑动窗口理论,进行数据的传输。若连续发送过程中丢包,那么应答时会进行 SACK (选择性应答),在 TCP 协议的首部设定类型为 5,可选内容区设定左右边界。以此来实现数据的可靠传输
#每天一个知识点# filter CSS属性可以为图片加上类似 PS 的滤镜效果。
滤镜通常用于调整图像,背景和边框的渲染。可以实现:毛玻璃、蒙层、灰色滤镜、色彩明亮/灰暗 等等效果
#每天一个知识点# 浏览器在与服务器建立了一个 TCP 连接,是否会在一个 HTTP 请求完成后断开?什么情况下会断开?
HTTP/1.0 中,在一个请求处理完毕后,会断开TCP连接,但是如此,代价过大,因此服务器中支持请求头 connection:keep-alive。一般建立TCP连接后,不会断掉,除非设置connection:close
#每天一个知识点# window 上挂载着一个 performance 对象。performance.now() 是可以获得高精度时间。例如:
for(let i = 0; i < 5; i++) {
console.log(Date.now())
}
打印的 5个值都是一样的;但是使用 performance.now(),可以打印出5个不同的值!
Vue3 源码中在处理挂载的事件时,就有用到。
#每天一个知识点#
Vue3 的 diff 算法:
1、Vue3 使用了快速 diff 算法,借鉴了纯文本 diff 算法的预处理
2、原理是先找到头部相同、再去找到尾部相同
3、其余元素需要视情况处理添加或是删除(只处理了添加或删除,还有是否需要移动的情况需要考虑)
4、处理移动的准备工作:构造一个数组 source,长度为预处理之后的新 vnode 长度,且元素初始值为 -1
5、上述构建的数组,目的是——存储新 vnode 在 旧 vnode 中的位置索引(后续利用其计算出最长递增子序列)
6、为了降低复杂度,我们建立新 vnode 的 key 和下标的索引表。然后遍历旧 vnode,如果可以在索引表找到,那么记录其下标,否则卸载元素
7、关于移动元素:
使用最大递增子序列——最长递增可以保证相对的有序,因此就可以减少移动元素
取最大递增子序列中元素对应下标,然后新 vnode 中对应这个位置的元素位置不用移动
移动还是依赖于锚点进行挂载的(源码中求解最大递增子序列使用了贪心和二分以及前驱节点等方法)
下一页