前端技术文章
-
navigator.onLine不可靠,仅反映系统网络接口状态而非服务可达性,需配合fetch心跳检测(带超时、防抖、真实后端校验)和服务端预缓存离线页才能准确判断用户可用性。482 收藏 -
Array.prototype.push本身不会栈溢出,问题在于调用方式:配合apply或扩展运算符批量传入海量元素时,引擎需将每个元素作为独立参数压栈,超出V8等引擎约65536的参数上限即报RangeError。482 收藏 -
验证码生成不应使用计算属性,而应由methods或setup中的函数完成,用ref存储真实值、computed仅作只读转换;必须确保生成可控、与后端同步、防调试暴露、输入即时校验并禁用空码提交。482 收藏 -
绝对定位元素使父容器高度为0,因其彻底脱离文档流,父容器计算高度时完全“看不见”它们;这是CSS规范行为,非bug。常见现象包括offsetHeight为0、背景不显示、兄弟元素上移;clearfix等浮动清除方案无效。482 收藏 -
padding-top/bottom百分比按包含块宽度计算,而非高度,是为了避免layout循环依赖;CSS规范强制统一锚定宽度基准以确保布局可解。482 收藏 -
用grid-template-rows:0fr→1fr可实现平滑高度过渡,因fr是可插值弹性单位;需满足三前提:容器有确定高度上下文、显式声明grid-template-rows、内容区overflow:hidden。482 收藏 -
eval在JavaScript中于当前作用域执行字符串代码,导致作用域污染、变量覆盖或泄露,且无法隔离;应优先使用JSON.parse、Function构造器或白名单映射等安全替代方案。482 收藏 -
骨架屏是页面数据加载前的灰色轮廓占位,微信开发者工具可自动生成skeleton.wxml与wxss文件,通过wx:if控制显隐,需随页面布局更新而同步调整。482 收藏 -
flex-basis是分配空间前的初始基准,非固定值;优先用0px而非0%,因0%在旧版Safari中可能回退为auto导致布局错乱,且需配合min-width:0解除隐式最小尺寸限制。482 收藏 -
WebWorker适合处理大体积JSON解析、结构化缓存反序列化、缓存数据聚合/过滤三类CPU密集型操作;需通过postMessage通信,主线程中转更新响应式状态,并注意消息体限制、Worker复用及组件卸载清理。482 收藏 -
JavaScript没有真正的反射机制,其所谓“反射”实为Object方法、Reflect对象和Proxy共同提供的对象结构探测与行为拦截能力,核心在于控制访问方式而非语言级元数据操作。482 收藏 -
Less编译后CSS不热更新,需检查构建工具是否监听.less文件:Webpack需配置style-loader(hmr:true)、css-loader、less-loader链路完整;Vite需启用vite-plugin-less;Parcel需确认未禁用transformer-less。482 收藏 -
~选择器用于选中某元素后所有同级兄弟元素,如.container>div~div{margin-top:16px;}可为非首个div添加上边距,实现均匀间距且避免首尾冗余空白。482 收藏 -
本文详解为何无法真正“清除”fetch触发的404控制台错误日志,并提供专业级替代方案:通过配置请求、捕获网络异常、禁用预检失败提示及合理使用try/catch,从根源上避免冗余错误输出。481 收藏 -
Vue.js的props更新由父组件重渲染驱动,触发子组件重新执行render生成新VNode,再经patch算法比对更新DOM;props本身不被直接diff,仅作为渲染输入,且为只读响应式代理。481 收藏