前端与性能
共 20 篇 · 按时间倒序,可连读
11-10
两万行表格滚动像幻灯片:虚拟列表、白条与 key 的三个坑
产品要求一屏看完两万行订单,v-for 直接铺满,滚动只剩 8 帧。换成虚拟列表后,滚动白条、勾选串行、动态行高三个问题接连冒出来,最后用固定档位行高收场。
11-09
线上报错只剩一行 Script error.:sourcemap 与错误采集的三个断点
三成错误只留一句话,剩下的堆栈指向压缩文件的第 48 万列。修好 crossorigin 只是第一步,sourcemap 的三个断点、Vue3 的单独一层和上报去重都得补齐。
11-08
后台开两天堆到 1.8 GB:Vue3 SPA 内存泄漏定位
用久了变卡、重开就好,是内存泄漏的典型特征。Memory 快照差集里一万两千个 Detached DOM,引用链指向 37 个没 dispose 的 ECharts 实例和无上限的…
11-07
发版后 30% 用户白屏:Cache-Control 与资源指纹的配合
白屏报 ChunkLoadError,强刷一下就好,因为 index.html 被缓存了七天而旧 chunk 已被删除。入口用 no-cache、带哈希的资源用 immutable…
11-05
Vue 3 响应式的六个坑:解构、ref、watch 与性能
从 Proxy 的 get/set 拦截原理出发,推导出解构丢响应性、ref 少写 .value、watch 浅监听等六个高频问题的成因与修复方式。
11-05
Vite 构建优化:90 秒到 18 秒,产物 4.2 MB 到 420 KB
用 visualizer 定位到五个「全量引入」的第三方库,按需引入加分包把首屏砍掉 90%,构建时间靠关 sourcemap 和缓存降到 18 秒。
11-05
Core Web Vitals 实战:首页从 59 MB 到 2.27 MB
LCP、INP、CLS 三个指标对应三种完全不同的病理。用本站真实数据说明:30 张没压缩的照片,比任何代码优化都致命。
11-20
ES6
变量在什么范围内可用,类似Java的全局变量和局部变量的概念,全局变量,全局都可用,局部变量只在范围内可用。ES5之前的var是没有块级作用域的概念,使用var声明的变量就是全局的…
11-19
Javascript继承实现方式
1、构造继承 2、原型继承 3、实例继承 4、拷贝继承 原型prototype机制或apply和call方法去实现较简单,建议使用构造函数与原型混合方式。
09-10
Javascript作用链域
全局函数无法查看局部函数的内部细节,但局部函数可以查看其上层的函数细节,直至全局细节。 当需要从局部函数查找某一属性或方法时,如果当前作用域没有找到,就会上溯到上层作用域查找,直至…
08-22
JavaScript值类型、附内存图
两种类型的区别是:存储位置不同; 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储; 引用数据类型存储在堆(heap…
08-13
javaScript-This对象
07-23
Javascript-eval的作用
它的功能是把对应的字符串解析成JS代码并运行; 应该避免使用eval,不安全,非常耗性能(2次,一次解析成js语句,一次执行)。 由JSON字符串转换为JSON对象的时候可以用ev…
03-07
null,undefined 的区别
null 表示一个对象被定义了,值为“空值”; undefined 表示不存在这个值。
02-06
JavaScript-写一个通用的事件侦听器函数
02-03
Javascript创建对象的几种方式
javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON;但写法有很多种,也能混合使用。
07-25
["1", "2", "3"].map﴾parseInt﴿ 答案是多少?
[1, NaN, NaN] 因为 parseInt 需要两个参数 (val, radix), 其中 radix 表示解析时用的基数。 map 传了 3 个 (element, in…
07-07
IE与火狐的事件机制区别,如何阻止冒泡?
06-29
JavaScript的基本规范
1.不要在同一行声明多个变量。 2.请使用 ===/!==来比较true/false或者数值 3.使用对象字面量替代new Array这种形式 4.不要使用全局函数。 5.Swit…
06-08
JavaScript的原型及原型链
每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个pr…