A · 解答思路 按数据流经的层级,从外到内梳理前端可用的缓存手段:HTTP 缓存 → Service Worker → 本地持久化存储 → 内存缓存。 详细说明 - HTTP 缓存:由浏览器根据响应头(如 Cache-Control、ETag)自动处理,是最外层、最常见的缓存方式,适合静态资源
前两天遇到一个小需求,需要将横屏图片转为竖屏展示。整理一下相关内容。
A · 解答思路 先通过实际操作缩小范围:右键复制是可以成功的,但用键盘快捷键(如 Ctrl+C)复制却不行,说明拦截的不是复制事件本身,而是键盘事件;随后通过浏览器搜索源码中的关键字(如 copy、禁止转载)定位具体实现代码。 详细说明 - 排查思路:先假设是通用的 copy 事件监听(
A · 解答思路 sort 并不关心比较函数返回的具体数值大小,只关心返回值的正负(或零),据此判断两个元素的先后顺序。 详细说明 - 比较函数 (a, b) => a - b 中: - 当 a - b 为负数时,表示 a 应排在 b 前面; - 当 a - b 为正数时,表示 a
A · 解答思路 使用一个「空对象交叉」的技巧:对类型做一次映射类型({ [K in keyof T]: T[K] }),再和 {} 做交叉类型,可以让 TypeScript / IDE 把类型展开显示成具体的键值结构,而不是原始的类型别名或运算表达式。 示例代码(如有代码)
昨天晚上为了参加「探索编码世界之旅 - 记我的第一份编程工作」,撸了一篇文章
我先把前面 11 个人的文章都看了,然后开始写我的回忆录。
A · 解答思路 这种上头部、下方三栏(左固定宽、中间自适应、右固定宽)的布局,用原生 Flex 布局就可以直接实现,不必依赖额外的开源组件。 示例代码(如有代码)
A · 解答思路 按团队规模和用途分开推荐:管理 Bug/需求可以用禅道;团队人数较少、只是简单协作任务,用钉钉自带的轻量工具也够用。 详细说明 - 禅道:一款开源的项目管理软件,覆盖需求、任务、Bug、测试等研发全流程管理,不少公司会用它来做 Bu
A · 解答思路 关键在于 focusout 和 blur 的冒泡差异:focusout 支持事件冒泡,可以用事件委托统一绑定在父级容器上;blur 不支持冒泡,必须在每个 input 上单独绑定。 示例代码(如有代码)