- 博客(250)
- 收藏
- 关注
原创 炸裂!TypeScript 7.0 Beta 发布:底层改用 Go 重构,速度直接提升 10 倍!
TS 7.0 不只是一个版本,它宣告:TypeScript 正式进入原生高性能时代。tsc 太慢大型项目卡爆编辑器卡顿构建耗时长CI 资源爆炸Go 重构 + 并行化 + 100% 兼容这一波,直接封神。
2026-05-07 18:42:21
126
原创 Vue大批量接口请求优化|告别卡顿、超时!前端落地实战指南
Vue大批量接口请求优化,核心是“减少请求次数、控制并发数量、复用数据、减少渲染开销高频批量查询:优先使用“合并请求 + 缓存”,减少接口调用;大量数据渲染:结合“虚拟列表”,避免DOM过载;用户交互类批量请求(如筛选、搜索):使用“防抖 + 并发限制”,避免无效请求;关键业务批量请求(如批量提交):添加“超时控制 + 失败重试 + 部分失败处理”,提升稳定性。同时,需与后端密切配合(如提供批量接口、优化接口响应速度),前端优化与后端优化结合,才能最大化提升大批量接口请求的效率和用户体验。
2026-05-07 18:41:08
260
原创 米哈游前端开发技术面,32k面试已过
一面聊原神大世界角色状态同步,我说弱网下用WebSocket + 客户端预测 +回滚保证最终一致,被追问“丢包30%时预测与服务器回滚怎么平衡”,补了输入队列 + 动态插值算法 + 冗余帧发送才过关。二面给崩坏3深渊实时排名的场景,要求积分秒级更新段位,我提WebSocket推送 + 本地LSM(LevelDB)做增量更新,又被问“千万级玩家同时冲榜,前端本地存储写入风暴怎么解决”,答按段位分层缓存 + 异步批量写IndexedDB +布隆过滤器去重才通过。
2026-05-07 18:34:43
549
原创 从 Vue 3 到 Lyt.js:无痛迁移指南
如果你是一个 Vue 3 开发者,正在寻找一个更轻量、更现代的替代方案,那么 Lyt.js 值得你关注。Lyt.js v5.0.1 是一个零依赖、纯 TypeScript 实现的前端框架,核心 8 包 gzip 仅 ~35KB(Vue 3 约 ~44KB),同时提供了 Vue 3 级别的开发体验。它不仅兼容 Vue 3 的核心 API,还额外提供了 Signal 响应式、Vapor Mode(无 VDOM 渲染)、50+ 内置 UI 组件、完整 DevTools 等能力。
2026-05-07 18:32:32
326
原创 面试官:LangChain中 TS 和 Python 版本有什么差别,什么时候选TS ❓❓❓
回到最初那个问题。和 Python 版今天已经站在同一条架构路线上,核心 agent 能力都够用,真正的差别在生态厚度和运行时环境。Python 胜在 1000+ 集成和更厚的 AI 数据生态,JS/TS 胜在和 Web 产品栈的天然贴合以及一套类型贯穿全栈的工程体验。所以最后给你的结论是这样。做 Web 产品、编辑器、SaaS、Agent 平台这类偏产品交付的系统,优先 TS。做数据实验、检索管线、研究型系统这类偏数据和研究的工作,优先 Python。
2026-05-07 18:27:02
359
原创 5 月已经跑了三家前端 AI 岗面试,基本都过了
先交代背景:23届前端,非科班,没大厂经历,今年 5 月集中冲了,面了 3 家中小厂 + 1 家准一线,全部走到 HR 面,3 家拿到意向,1 家等流程。不是我多厉害,是今年前端 AI 岗的,准备对了真的很好过。。会基础前端 + 懂一点 AI 接入流程,通过率直接翻倍。我身边一起投的朋友,有的背了一堆大模型原理,结果面试一问前端全忘;有的只会写页面,AI 相关一问三不知。而我就靠一套,针对性背、针对性练,3 场面试基本都是半小时结束,面试官问的点资料里全覆盖。
2026-05-07 18:10:34
803
原创 代码 Review 的艺术:如何委婉地告诉同事你写的代码是一坨屎?
有一天下午四点,我点开了同事刚提的一个第一眼,还行。第二眼,嗯?第三眼,我开始怀疑人生。变量叫atemplist1if-else套了六层,在for里await查库,像一锅没加盖的乱炖。我当时脑子里只有一个念头:但问题是——你可以这么想,但不能这么说。因为你不是在写技术博客,你是在上班😖。Code Review 本来是为了让项目更稳,结果很多时候,反而成了团队关系的坟头。后来我慢慢意识到一件事:你要做的,不是指出问题,而是——
2026-05-07 17:59:07
342
原创 [特殊字符]前端性能内卷终点?Signals 正在重塑我们的开发习惯
从 Solid.js 的异军突起,到 Vue Vapor Mode 的革新,Signals 证明了前端开发的未来不仅在于“更好用的框架”,更在于“更智能的更新”。对于高级开发者而言,理解 Signals 的依赖图谱,比单纯学习 API 更有价值。这场革命,本质上是我们在向浏览器原生性能极限的又一次集体冲刺。
2026-04-16 12:33:09
280
原创 建议所有人前端准备到这种程度再去面试
我结合这半年的面试记录,把高频考点和真实遇到的“坑题”整理了出来。如果你能把下面这些吃透,至少能碾压80%的竞争者。三大框架的源码讲得头头是道,结果连“浏览器输入URL后发生了什么”都说不完整;有人在简历上写“精通JavaScript”,结果问。最近帮团队筛了上百份前端简历,也面了四十多个候选人。说实话,大部分人连第一轮都过不了——不是因为基础差,而是。闭包的实际应用场景,支支吾吾半天;还有人背了一堆八股文,可一到手写代码环节,连。面试不是背题比赛,也不是炫技场。面试官真正想看的,是你有没有。
2026-04-16 12:29:22
410
原创 做中后台业务,为什么我不建议你用 Tailwind CSS?
大家好,我又来了😁最近我接手了一个隔壁组转过来的中后台重构项目。交接的时候,对方的技术负责人特意跟我强调,说这个项目采用了最新的技术栈,全面拥抱了,Tailwind CSS开发体验极其丝滑。我当时心里还挺期待,毕竟这两年Tailwind的风刮得太大了,各种国内外大佬都在疯狂带货。结果周末我抽空把代码拉下来,打开VSCode准备梳理一下业务主流程。盯了屏幕不到十分钟,我感觉自己的眼睛快瞎了。光说理论没意思,我直接给你们截取一段真实的、承载了各种表单校验和状态联动的业务侧边栏组件。代码跑得通吗?
2026-04-16 12:22:43
332
原创 卷AI、卷算法、2026 年的前端工程师到底在卷什么?
最近是 2026 年的春招季,前几周密集面了大概快二十个前端。四五年前,大家简历上的高频词还是。现在呢?十个候选人里,有九个写着熟练掌握 LLM接入、深入理解 RAG(检索增强生成)、精通 Prompt 工程、参与过大模型 Agent 平台建设,剩下那个没写 AI 的,简历里赫然写着LeetCode 刷题 150+,精通动态规划与图论。前端这个圈子,仿佛在一夜之间得了严重的技术焦虑并发症。大家都在拼命往简历里塞最高大上的词,生怕在 2026 年这个节点,因为不懂 AI 而被直接淘汰。
2026-04-16 12:17:31
373
原创 字节/腾讯内部流出!Claude Code 2026王炸玩法!效率暴涨10倍
2026 年,AI 编程不再是“辅助”,而是“主力”。Claude Code 代表的自主智能体开发模式,正在彻底重构软件开发流程。今天学会 Claude Code,不是掌握一个工具,而是抢占 AI 时代的开发效率制高点。
2026-04-08 18:45:24
697
原创 因为拿到了offer,说一下前端面试的强度!
我是从去年年底开始准备跳槽的,前前后后投了十几家公司,面了字节、美团、拼多多、影石,最后拿了其中一家的offer。整个过程持续了将近两个月,中间无数次想放弃,现在回头看看,真的踩了太多坑。很多人以为前端面试就是背背原型链、闭包、事件循环,再刷刷LeetCode easy题就能过。现在的面试强度,远比你想象的要大。这些问题,光靠背八股文是答不出来的。下面是我整理的。
2026-04-08 18:38:47
814
原创 从一个截图函数到一个 npm 包——pdf-snapshot 的诞生记
回顾阶段一:一个 utils 函数,解决单点需求阶段二:抽成独立模块,解决内存泄漏、支持取消和多种输入格式阶段三:发布 npm 包,增加进度回调、CLI 工具、完善类型定义这个过程其实挺有代表性的。很多时候我们写的工具函数,一开始只是为了解决眼前的问题,但随着需求的增加和使用场景的扩展,它会逐渐演化成一个更通用、更健壮的模块。关键是要在演化过程中保持代码的可维护性和可扩展性。子进程隔离、输入归一化、取消超时机制……这些设计不是一开始就有的,而是在实际使用中逐步发现问题、解决问题后沉淀下来的。
2026-04-08 18:33:56
329
原创 前端防止重复支付解决方案
双重防护逻辑:节流控制「触发频率」(防快速点击),loading 控制「请求状态」(防请求中点击),覆盖所有重复支付场景;巧妙的设计互补:节流保证“点击即时响应”的体验,loading 作为“兜底保障”适配不确定的请求耗时;体验与安全兼顾:loading 既是防重复的逻辑锁,也是给用户的视觉反馈,减少重复点击的动机。核心逻辑差异:节流是「固定时间内只执行一次」,保证触发即响应;防抖是「等最后一次触发后延迟执行」,会吞掉中间的触发;场景匹配度。
2026-04-08 18:25:38
374
原创 前端开发连续面了一周,我现在强的可怕!
现在的我,闭着眼睛能把事件循环的画出来,张口能讲清楚虚拟DOM的diff原理,手写深拷贝、防抖节流跟喝水一样自然。前三天被虐到怀疑人生,第四天开始突然开窍,等到第七天的时候,面试官一张口,我甚至能猜出他下一句要问什么。面到后面几场,我甚至能一边回答问题,一边在心里给对面的面试官打分:这道题问得可以,有水平;他的语气犹豫了一下,是不是我答偏了?这种感觉怎么形容呢。就像你打游戏被boss连锤一百遍,突然有一天,你能预判它的每一个技能前摇。倒不是因为我拿到了几个offer(虽然确实拿到了),而是因为——。
2026-04-07 18:33:14
723
原创 setTimeout设为0就马上执行?JS异步背后的秘密
不是马上执行,要等调用栈空、微任务清空后才轮到你Promise比setTimeout先执行,因为微任务优先级更高只是 Promise 的语法糖,本质还是异步是做动画的正确方式,别用 setInterval下次你的代码执行顺序不对,先看看是微任务还是宏任务——可能就是它插队了。
2026-04-07 18:21:35
345
原创 告别过度工程:菜鸟前端亲证,浏览器早已帮你搞定这 9 件事
作为一名拥有 14 年前端开发经验的菜鸟,我亲历了前端行业从刀耕火种的 jQuery 时代,到框架百花齐放的工程化时代,再到如今原生 API 日趋完善的现代化时代。在漫长的开发生涯中,我见过太多团队陷入的陷阱:为了实现一个简单功能,引入数十 KB 的第三方库;手写大量冗余 JS 代码,解决浏览器早已原生支持的问题;盲目追求自定义实现,忽略平台原生能力的稳定性与兼容性。
2026-04-07 18:12:49
424
原创 JS 类型判断不用愁:4 种方法,覆盖所有场景
在JavaScript世界里,“类型判断”就像给变量“验明正身”——只有摸清每个变量的“身份”,才能避免代码里的“乌龙事件”。今天就结合实操代码,把()这几个方法讲明白,新手也能轻松拿捏~怕记混?一张表格搞定,直接对号入座~判断场景推荐方法备注快速判断原始类型(除null)typeof简单高效,新手首选判断引用类型(数组、函数、日期等)instanceof适合判断“是否属于某个构造函数”,toString适合精准判断类型判断nulltypeof会误判,必须用这两种方法判断数组。
2026-04-03 16:18:11
288
原创 别再让用户等哭!React 懒加载:让组件 “躺平” 到要用时再干活
组件懒加载管的是“代码包”,图片 / 内容懒加载管的是“可视区域内才渲染内容”。React 懒加载分两类React.lazySuspense实现组件代码按需下载/ 自定义组件实现内容按需渲染。核心价值:减少初始化资源开销,提升页面加载和渲染性能。普通网页的懒加载是让图片“摸鱼”React 的懒加载则是给组件和代码都发了“摸鱼许可证”—— 不用一开场就全员到岗,该躺平时躺平,该干活时再发力。就好比经营一家店,不用把所有商品都堆在门口(初始化加载所有代码),而是把暂时没人要的商品放进仓库(单独打包组件)
2026-04-03 16:08:32
163
原创 因为熬过了前端,浅浅说一下它的强度
,得说清为啥选这些技术,遇到啥棘手问题,怎么解决的。最好用数据说话,比如“通过代码分割和懒加载,首屏时间从 3 秒降到 1.5 秒”,再准备个内存泄漏排查这种复杂问题的复盘。得看看源码,比如 Vue 的双向绑定咋实现、React setState 同步异步咋回事,再想想首屏加载优化、复杂状态管理这些实际问题。原型链、作用域、闭包、事件循环这些要是模棱两可,手写代码还卡壳,肯定不行。的 ESbuild 咋快,再学学微前端、低代码、Node 中间层这些场景的设计思路。不懂打包工具原理,复杂场景没思路可不行。
2026-04-03 15:55:26
501
原创 uni-app使用瓦片实现离线地图的两种方案
最后我做完以后让 Trae 给了一下评价,Trae 表示不建议采用这种方式实现离线地图,首先瓦片地图文件一般非常大,我用的仅仅是其中的一小部分,也超过了60MB,打包出来的 App 包太大了。其次无论是web-view还是renderjs本质上是一样的。在app-vue环境下,视图层由webview渲染,而renderjs就是运行在视图层的。所以无论是渲染效率还是开发上基本没差。
2026-04-03 15:37:11
187
原创 不懂模块化就别谈前端工程化
模块化的概念并不是一开始就有的。早期的网页都靠一个个大文件堆在一起,代码混乱又难维护。后来,项目越来越大,大家发现这样不行,得把功能拆分开。于是就有了“模块化”的想法:把代码分成小模块,每个模块只干一件事。这样一来,改东西的时候不容易出错,也能更好地复用代码。模块化也让多人一起开发的时候更有条理,减少冲突。现在常见的模块化方式有 CommonJS、ES Module 这些,都是让代码更清晰、管理更方便。掌握模块化,写项目会省心多了!
2026-03-31 18:32:15
347
原创 因为淋过雨,所以想给前端人说点真心话
八股文要背,但不能只会背能讲清楚原理,更要能讲清楚“在哪里用过”。简历是面试的起点,不是终点写在简历上的每一个技术点,都要做好被问到底的准备。不会可以学,但不能撒谎说“了解”和“精通”之间,隔着无数个踩过的坑。前端不只是写页面工程化、性能、安全、协作、体验,每一个方向都值得深挖。如果你现在面得不好,没关系我也曾被问得哑口无言。关键是:每次面试后,把不会的问题变成下一个会的问题。淋过雨的人,总想给别人撑把伞。希望这篇文章,能让你在准备面试的路上,少淋一点雨。
2026-03-31 18:28:09
890
原创 前端性能杀手竟然不是JS?图片优化才是绝大多数人忽略的“降本增效“方案
图片优化不是"换个格式"或"开个 CDN"那么简单,它是一套完整的运行时策略系统延迟加载:IntersectionObserver 精准控制动态选择:根据设备和网络调整尺寸和质量解码优化:async decoding 避免阻塞客户端压缩:前端直接处理,节省流量和服务器成本缓存管理:Cache API 手动控制,离线可用JavaScript 掌握了主动权,不再被动依赖浏览器或 CDN 的默认行为。但更重要的是,要理解为什么这么做。浏览器只关心字节数、解码时间、布局稳定性和渲染时机。
2026-03-31 18:07:24
473
原创 为何在 Vue3 setup() 中直接解构 props 会丢失响应性?
直接解构props会丢失响应性,因为解构出来的是普通值。在模板里直接使用props.xxx用toRefs处理后再解构需要响应式地使用props值时,记得用watch或。
2026-03-31 17:59:33
265
原创 一套面向 Web、H5、小程序与 Flutter 的多端一致性技术方案
字段名字段类型必填项枚举值嵌套关系Schema 是结构,Contract 是约定,Spec 是全局规则。三者一起使用,才能真正把需求从“会讨论”变成“可执行”。到了工程层,很多团队会陷入一个误区:一说多端,就想“一套代码跑全部端”。实际上,对 Web 和 Flutter 这样的异构平台来说,更现实的目标不是复用所有代码,而是复用定义、约束和生成链路。tokens/patterns/web/tokens.cssflutter/设计语言组件协议页面模式业务规则。
2026-03-30 18:31:47
399
1
原创 TypeScript 要换芯了,6.0 竟是旧编译器的最后一舞
微软 TypeScript 团队近日宣布typescript6.0 已在 npm 上可用。这一版在路线图上的位置很特殊,官方明确将其定位为基于现有 JavaScript 技术栈实现的编译器的最后一次大版本迭代。团队正用 Go 重写编译器与语言服务,新版本将支撑未来的 TypeScript 7.0 及之后版本,并利用原生性能与多线程共享内存。对日常写业务代码的开发者来说,6.0 既是可立刻升级的正式版,也是面向 7.0 的排练场。
2026-03-30 18:26:03
504
原创 别再混淆了!JS类型转换底层:valueOf vs toString vs Symbol.toPrimitive 详解
js获取对象值的方法有三种valueOf()toString()这些其实是的问题;三种方式本质上略微不同;我们知道在js中,'一切皆为对象'。每个对象都有一个toString()方法和valueOf方法,其中toString()方法返回一个表示该对象的字符串,valueOf方法返回该对象的原始值。
2026-03-26 18:40:14
41
原创 3月跑了7家前端开发岗,基本全过了.
3月份面了7家,从初创到中厂再到某大厂,最后拿了5个offer。坦白说,面试过程比我预想的顺利不少。以前面试,上来就是“Vue双向绑定原理”“说说闭包”“手写个深拷贝”——八股文背得熟,基本能撑过前两轮。我第一次意识到这事儿,是面某中厂的时候。说实话,当时我愣了一下。平时背的那些“虚拟DOM”“Diff算法”在这儿根本用不上。我缓了缓,从“首屏怎么拆”“骨架屏怎么上”“接口能不能预加载”“降级方案怎么设计”这几个点开始聊。聊了大概20分钟,面试官一直追问,我一直在补方案。
2026-03-26 18:37:13
681
原创 手把手搭一套前端监控采集 SDK
限制也要心里有数:无响应体、旧环境可能不存在、单次 payload 有实际上限(常见讨论量级在数十 KB,宜压 body 体积)。简单实现可以在回调里每次都上报最新一条,由服务端取同会话最后一次,或在客户端只保留最大。初始化不要依赖构造参数时,可以保持无参构造,只在。自研最小实现可以封装为"支持则订阅,不支持则不上报",避免把未定义行为写死进业务。若涉及合规,建议只传哈希后的业务 id,或默认不传,由登录域自行下发自洽标识。时会话可能延续,停留时长统计要把可见时间分段累加,不能假设一次进页到一次离开。
2026-03-26 18:30:54
396
原创 2026年,前端的离职潮彻底消失了。。。
最近筛简历,清一色的 React/Vue、Webpack/Vite、JavaScript、HTTP协议、组件库开发,候选人背景像是一个模子刻出来的。我团队的兄弟们也很迷茫,投入大量时间学的那些“硬技能”(框架API、打包配置、组件库使用),好像很快就被低代码平台、AI辅助编程、标准化的脚手架和组件库“标准化”甚至“替代”掉了。但今年感觉不太一样,以往都能遇见不少楼梯间悄悄摸摸打电话面试的同事,但今年过完年回来,办公室异常地安静,离职潮好像忽然消失了。市面上“合格”的前端很多,但“出色”的极少。
2026-03-24 18:29:19
329
原创 JS 拷贝:浅拷贝 / 深拷贝原理 + 常用方法
在JavaScript中,拷贝是我们日常开发中高频用到的操作,但很多小伙伴会被“浅拷贝”和“深拷贝”搞晕——为什么有时候修改原对象,新对象也跟着变?有时候却完全不受影响?其实答案很简单:拷贝只针对引用类型(对象、数组等),基本类型(数字、字符串、布尔值)不存在“深浅”一说(赋值就是直接拷贝值)。今天我们就结合具体代码,把浅拷贝和深拷贝讲透。类型核心特点常用方法注意事项浅拷贝只拷贝第一层,子引用类型共用地址修改原对象子引用类型,新对象会受影响深拷贝层层拷贝,新对象与原对象完全独立。
2026-03-24 18:26:43
457
原创 数字太长看花眼?一招教它排好队:千分位处理的实现
面试的话,手撕代码肯定是少不了的。最近看到一个非常有意思的题目:如何实现千分位处理?比如你💳里面的余额是,怎么把它变成?这时候你可千万别来一句:我卡里没那么多... 😄千分位处理玩法千千万,无论是手写循环、数组反转,还是正则一键搞定,甚至直接用原生 API 偷懒,本质都是让长数字变得更易读。日常开发里,懂原理能手写,上项目用 API,灵活切换就够稳了。面试还是推荐前三种 😄。
2026-03-24 18:20:19
224
原创 Vite 终于有了一个很轻的服务端搭档
如果你用过 Nuxt,那么你大概率对 Nitro 不陌生,因为它正是 Nuxt 的服务端引擎。Nitro 最早诞生于 Nuxt 3,目标也很明确:提供一个与部署环境解耦的服务端运行层。不过,Nitro 现在早已不只是 Nuxt 的内部组件。随着能力逐步独立,它已经开始扮演更通用的角色:既可以作为元框架的底层基础设施,也可以单独拿来构建服务端应用。Nuxt.js 是一个基于 Vue.js 的全栈 Web 应用框架,用于快速构建支持服务端渲染(SSR)、静态生成(SSG)以及现代前端开发体验的应用。
2026-03-20 18:45:52
479
原创 面试了个中高级前端,连闭包输出题都答不上
然⽽,也有⼀些事件是不会冒泡的。Diff 算法是⼀种⾼效更新 DOM 的策略,它通过⽐较新旧虚拟 DOM 树的差异,最⼩化了更新操作,提⾼了⻚⾯的渲染效率。前端项⽬的 package.json ⽂件中, dependencies 和 devDependencies 对象都⽤于指定项⽬所依赖的软件包,但它们在项⽬的开发和⽣产环境中的使⽤有所不同。总的来说, dependencies 中的依赖项是项⽬运⾏所必需的,⽽ devDependencies 中的依赖项则是在开发过程中需要的辅助⼯具和库。
2026-03-20 18:42:56
648
原创 JS对象入门|从创建到原理,一篇吃透核心知识点
在JavaScript的世界里,有一句广为人知的话——“万物皆对象”。无论是我们日常使用的字符串、数字,还是自定义的函数、数组,本质上都和“对象”有着千丝万缕的联系。但很多新手在学习对象时,总会被“构造函数”“new关键字”“包装类”这些概念绕晕,今天就结合具体代码实例,用通俗易懂的语言,把JS对象的核心知识点讲明白、讲透彻。对象(Object)是JS中最核心的数据类型之一,它就像一个“收纳盒”,可以存放多个不同类型的数据(我们称之为“属性”)和可执行的操作(我们称之为“方法”)。
2026-03-20 18:40:48
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅