- 博客(323)
- 收藏
- 关注
原创 26年前端面试大环境,也只是会淘汰一些菜鸡
面试官问“你项目中遇到的最大难点是什么”,一半人开始背提前准备好的“标准化答案”,听着就像在念别人的简历。现在的情况是,市场确实没前几年那么疯了,公司招人更谨慎。前端项⽬的 package.json ⽂件中, dependencies 和 devDependencies 对象都⽤于指定项⽬所依赖的软件包,但它们在项⽬的开发和⽣产环境中的使⽤有所不同。将 <script> 标签放在 <head> 和 <body> 底部,会对⻚⾯的加载和性能产⽣不同的影响:<script> 标签放在 <head> 部分。
2026-01-26 18:02:20
874
原创 Git 任务切换血泪指南:从手忙脚乱到勉强拿捏
短暂临时切换:优先用git stash,高效快捷;中长期跨时段切换:用git commit,支持备份与历史整理;多任务并行开发:用,多目录独立运行,效率最优;完全隔离环境需求:用git clone,避免相互影响;分支级进度记录/协作:用,可分享可回溯;跨环境迁移修改:用Patch 文件,适配离线/跨仓库场景。实际开发中,无需拘泥于单一方法,可根据任务时长、协作需求、环境限制灵活组合使用,核心目标是“高效切换、安全保存、整洁历史”。
2026-01-26 17:51:14
708
原创 这就是我年前疯狂刷Web前端面试题的状态
原型链与闭包是核心考点,事件循环(Event Loop)决定异步逻辑执行顺序,ES6+ 重点掌握 Promise 和 async/await,手写题常考防抖节流、深拷贝。🔸综合能力:TypeScript 基础、SSR/SSG、PWA、微前端等,按目标岗位选择性准备。Q57、讲一下png8、png16、png32的区别,并简单讲讲 png 的压缩原理。Q21、谈谈 Vue 事件机制,并手写$on、$off、$emit、$once。🔸状态管理:Vuex/Pinia、Redux/MobX 的使用场景与原理。
2026-01-26 17:29:11
838
原创 从原生 Node.js 到 Koa:轻量优雅,解锁后端开发新体验
每一个 Node.js开发者都有过这样的经历:用原生http模块搭建服务时,要手写请求判断、处理响应头,几行代码就变得臃肿不堪。为了告别这种低效的重复造轮子,Node.jsexpress框架koa 框架nestjs 框架今天我们就来聊聊其中最轻巧、最具现代感的Koa。Koa作为轻量型 Node.js 框架,以极简核心、洋葱模型中间件机制和对的完美支持为亮点,可灵活处理响应、本地文件、路由等需求,搭配中间件即可按需扩展,兼顾开发效率与代码整洁度,是中小项目及快速开发场景的优选。Koa。
2026-01-26 17:04:18
784
原创 今天面了3个前端女生,聊聊她们没过的原因
问题表现:会用React/Vue写组件,但说不清虚拟DOM diff算法、Hooks依赖收集原理、Vue3的响应式优化(Proxy vs defineProperty)。建议: 研究框架源码核心逻辑(如React Fiber架构、Vue的编译优化)。状态管理库选型依据?问题表现:对闭包、事件循环、原型链等核心概念理解模糊,手写代码时容易卡壳(比如实现Promise.all或深拷贝)。问题表现:对前端CI/CD、自动化测试(如Jest覆盖率提升)、Webpack/Loader插件开发经验不足。
2026-01-23 19:13:06
924
原创 写给前端的股票行情 SDK: stock-sdk,终于不用再求后端帮忙了
有的年久失修,有的只支持 Node.js 不支持浏览器,有的类型支持一塌糊涂,还有的接口莫名其妙就挂了。去年我想做一个股票行情看板,就是那种简单的页面,能实时显示几只自选股的涨跌。网上搜一圈,股票数据接口相关的工具几乎全是 Python 的。确实牛,功能也确实全,但问题是——。说真的,类型提示这个东西,用过就回不去了。数据源用的是腾讯财经和东方财富的公开接口,稳定性还是有保障的。其实我一直觉得,工具这个东西,好不好用自己最清楚。如果你需要更专业的量化回测、高频交易之类的,这个 SDK 可能就不太够用了。
2026-01-23 18:57:05
902
原创 Vue 中后台表格选型(Element/VXE/AntD):我在真实项目里踩过的坑,比 Demo 多得多
验证完这些组合场景,至少能排除 50% 的不适配方案。选型不仅是技术问题,更是时间成本 + 团队能力的权衡。二次封装不是过度设计,而是降低后期返工成本的必要手段。
2026-01-23 18:38:49
588
原创 前端开发面试,其实就是在筛选没准备的人!
问题的核心在于信息差——你并不知道哪些知识点会被高频追问,哪些原理需要附带项目佐证,哪些「送命题」需要提前设计回答框架。而这种信息差,完全可以通过策略性准备来填补。你以为在考察随机应变,实际上80%的题目都踩在可预测的路径上;你以为在比拼技术深度,实际上在衡量你。真相往往很直接:前端面试的淘汰机制,本质上不是筛选「技术最强者」,而是最先筛掉那些。直接看下面这些典型问题【
2026-01-22 18:54:29
1138
原创 JS-前端埋点神器 navigator.sendBeacon 全指南
在前端开发中,埋点系统是必不可少的一环。我们经常需要在用户关闭页面刷新或跳转路由时,向服务器发送最后一条统计数据(比如用户停留时长、页面跳出率)。但这看似简单的需求,在实现时却危机四伏:请求发不出去?页面跳转卡顿?今天我们就来聊聊这个问题的终极解决方案 ——。
2026-01-22 18:45:06
709
原创 别管,咱们前端人有自己的拼夕夕~
这份清单,是无数次面试复盘后沉淀下来的“考点最大公约数”,是八股文里的精华。:这里不问“怎么用”,专问“为什么”。从堆栈内存到闭包原型,从事件循环到模块化演进,每一个概念都能被拆解成带代码的论述题。:Vue 的响应式与 React 的 Fiber,diff 算法与渲染优化。这里需要你像框架作者一样思考,解释那些“魔法”背后的朴素逻辑。:从输入 URL 到页面展现,每一步都可以是万字长文的起点。渲染性能、缓存策略、安全防护,这里是理论与实践的结合部。
2026-01-20 19:10:59
835
原创 2026 最全 JS 反混淆工具横评:jsunpark、jsnice、de4js、ob-decrypt…到底谁才是王者?
对于爬虫架构师、高级逆向研究员来说,与的技术博弈。面对市面上琳琅满目的工具,究竟哪一个才是真正能承载工程化生产需求的“破局者”?今天我们选取了四款主流工具进行深度实测对比。
2026-01-20 19:07:45
579
原创 uni-app使用北斗卫星实现离线定位
(API 23)及以上版本需要动态申请权限,不能只靠 manifest 声明,否则仍然存在拿不到权限的可能。甚至可以给的再大点,使用卫星定位冷启动时间其实非常长,不过你如果不是在人迹罕至的区域,这里仅设置了安卓代码,IOS系统需要增加额外的配置。除却上面的权限原因导致的定位不到,,测试上述九种状态的组合。提醒我这里需要注意,
2026-01-20 18:47:48
255
原创 昨天面了几个前端开发,水平真的令人堪忧
坐标某二线互联网公司,近期团队扩招,集中面了十几位前端候选人(工作年限集中在2-5年)。——我们提问的正是日常开发中频繁遇到的痛点:页面卡顿如何定位?首屏加载如何优化?复杂状态如何维护?然而多数候选人呈现出的,却是对“工具使用”的依赖与对“技术原理”的漠视。
2026-01-19 18:50:34
1218
原创 我把项目里 500 个 any 全部换成了具体的 Interface,然后项目崩了...
看着 VS Code 里那一个个红色的波浪线被我修好,看着 TS 编译通过的绿色对勾,我感觉自己就是代码界的上帝🥱。除非你上了 Zod 做运行时校验,否则那个丑陋的 any,可能是你项目里最后一道防线。结果后端返回的数据里,因为历史脏数据,真的有几个用户的 info 是 null😡。Interface 定义里,我信了后端的文档,写了 age: number。现在我为了规范,加了 .toFixed(2),因为 TS 告诉我它是数字。但实际上,老数据里有几百条数据,age 存的是字符串 "18"😡。
2026-01-19 18:42:36
618
原创 Vue-Router v5内置文件式路由,告别手写维护的恐惧
而在官方下场助推下,相信文件式路由的理念应该会被越来越多的人所了解和使用,想到此处,我依稀还能记起几年以前维护一个 300 多个路由文件的头大。简单点说就是,我们可以告别手动写路由配置的时代了,还记得被手写路由支配的恐惧吗?自身的区别还是很大的,这就像在现在 AI 大行其道的当下,还有多少人依旧没有用 AI 写过代码呢。不好意思,跑题了,也说明了这确实不是 AI 写的文章,仅仅只是对这个现象吐个槽。三板斧的选手们陶醉于我可以在炫酷的终端使用 git 命令行的沾沾自喜之中。Volar 插件的配置调整。
2026-01-19 18:37:44
213
原创 26年初,面了几家前端岗,根本没人问八股了
3.构建环境下的优化:尽管 Vite 在开发环境下不进行打包构建,但在生产环境下,它会通过预构建的方式生成高性能的静态资源,以提高页面加载速度。1.模块级别的热更新:Vite 使用浏览器原生的 ES 模块系统,可以实现模块级别的热更新,即只更新修改的模块,而不需要刷新整个页面。这些占位符可以是简单的 div 或样式类,用于预留图片的空间,避免页面布局的混乱。适配层:由于我们使用的运行时框架不是统一的,所以统一使用适配层将不同运行框架的差异部分,通过接口对外,让渲染层注册/适配对应所需的方法。
2026-01-16 18:35:59
658
原创 用 Vue 3 做了一套年会抽奖工具,顺便踩了些坑
实战时这个入口确实救了场:主持人说加奖,我直接在配置弹窗里加了一个新奖项,填好名字和数量,点保存,就可以继续抽了,不需要重启、不需要改代码。真实情况是,原始员工照片的尺寸、比例、背景色基本都不一样,直接拿来做头像效果会很怪。先跑一遍 Demo,看下是否符合你们场景,再按自己需求改名单、奖项和 UI 即可。这类现场工具,给业务方留一点“临时操作空间”,比纯粹的“配置优雅”要重要很多。就算现场不小心刷新了浏览器,抽过的结果还在,不至于从头来过。配置好之后,后面每次推代码,线上链接会自动更新。
2026-01-16 18:13:13
624
原创 今天面试了一个半吊子前端人,瞬间崩溃
这位候选人,简历写得挺漂亮:“精通Vue/React”“熟练搭建前端架构”“独立负责项目模块”……看着像是能立马上手干活的主力。可我随便深挖几个问题,整个人就开始支支吾吾,技术漏洞全暴露了。不是想嘲笑谁,而是觉得有必要把这场对话还原一下——给还在准备入行、实习、找工作的前端新人提个醒,也分享点真实职场里技术考察的“听音辨人”逻辑。她说: “代码能跑起来、功能正常就行。专业视角应该是: 功能正常只是底线。
2026-01-15 17:05:49
1217
原创 拒绝 `setInterval`!手撕“死了么”生命倒计时,带你看看 60FPS 下的 Web Worker 优雅多线程
最近朋友圈被一款叫“死了么”的 APP 刷屏了(其实就是各种 Life Countdown 类应用)。看着屏幕上那个不断动的数字,精确到毫秒地计算着你离“删库跑路”(划掉)——离“百年之后”还剩多少时间,确实让人有一种被时间追着砍的紧迫感。作为一个“代码洁癖患者”,我第一时间下载体验了一下。UI 很酷,但当我把它挂在后台,刷了一会儿掘金再切回来时,发现倒计时竟然卡顿了一瞬间,然后才跳到了正确的时间。不能忍!绝对不能忍!对于普通用户这叫“卡顿”,对于我们开发者来说,这是对Event Loop的亵渎!
2026-01-15 16:36:31
485
原创 这 5 个冷门 HTML 标签,让我直接删了100 行 JS 代码!
details><summary>:实现折叠内容<dialog>:原生弹窗,自带遮罩和焦点管理<datalist>:输入建议选择<meter><progress>:进度展示无需手动计算宽度:系统级颜色选择器开箱即用这些原生HTML标签虽然不太起眼,但用好它们,不仅能省去大量 JavaScript 逻辑,还能让页面更语义化、更友好。
2026-01-15 15:40:05
324
原创 给前端面试张不开嘴的,一些速成野路子
一个干巴巴的合格回答可能是:“用代码分割、懒加载、CDN、图片压缩……”【这一步展示了你的产品/业务思维,你关注的不是炫技,而是解决问题。【这一步展示了你的方法论和技术广度,你不是零散地抛出技术名词,而是有完整的排查体系。动态导入会增加额外的HTTP请求,可能影响非首屏的交互响应。因此,我会结合‘预加载’或‘预获取’策略,在浏览器空闲时预先加载下一个路由的 chunk,来平衡加载速度与交互体验。【这一步是精髓,展示了你的技术深度和决策能力。面试官最爱听的就是“我当时为什么选A不选B”。
2026-01-14 11:44:18
937
原创 我和trae的这一年:从“看不懂“到“玩得转“的AI学习进化史
不要一直只用一个模型,根据任务特点灵活切换。GPT适合"求稳",Gemini适合"求快"。
2026-01-14 11:23:52
723
原创 富文本编辑器技术选型,到底是 Prosemirror 还是 Tiptap 好 ❓❓❓
/ 创建一个字符计数插件counter.textContent = `字符数: ${text.length}`;// 使用插件});Tiptap 是一个基于 ProseMirror 的富文本编辑器框架,适合需要快速开发、易用且功能丰富的场景。它封装了 ProseMirror 的复杂性,让开发者能够专注于业务逻辑,而无需关心底层实现细节。通过本文的代码示例可以看出,Tiptap 的 API 设计更加直观,学习曲线平缓,适合大多数项目需求。
2026-01-13 10:34:19
718
原创 [特殊字符] 藏在 Vue3 源码里的 “二进制艺术”:位运算如何让代码又快又省内存?
如果说二进制是计算机的 “语言”,那原码、反码、补码就是计算机的 “密码本”—— 它们规定了数字在计算机中的存储方式,尤其是如何表示负数。,超过 32 位整数最大值)。规则:把二进制位的 “0” 变成 “1”,“1” 变成 “0”(全位取反)。就是编译器给 VNode 打上的 “动态标签”,位运算则是 “解析标签” 的关键,让 Diff 从 “全量扫描” 变成 “精准打击”。我们日常生活中习惯用 “0-9” 的十进制计数,但在计算机的世界里,只有 “0” 和 “1” 组成的二进制才是 “通用语言”。
2026-01-13 10:25:11
710
原创 给大家普及一下,字节前端需要达到的强度!
空」包含了:空数组、空对象、空字符串、0、undefined、null、空 map、空 set,都属于为空的数据【热度:640】50.[React]如何避免使用 context 的时候,引起整个挂载节点树的重新渲染【热度: 420】28.如何在划词选择的文本上添加右键菜单(划词:标滑动选择一组字符,对组字符进行操作)【热度:100】29.富文本里面,是如何做到划词的(鼠标滑动选择一组字符,对组字符进行操作)?43.如何清理源码里面没有被应用的代码,主要是 JS、TS.CSS 代码【热度:329】
2025-12-24 16:54:30
621
原创 别只做工具人了!手把手带你写一个前端性能检测SDK
恭喜你!到这里,你已经亲手打造了一套麻雀虽小,五脏俱全的性能监控 SDK。Loading (加载):FP/FCP/LCP 负责盯着**“快不快”**。白屏时间短,用户才愿意留下来。Interaction (交互):FID/INP 负责盯着**“顺不顺”**。点击有反馈,用户才觉得好用。Visual Stability (稳定性):CLS 负责盯着**“稳不稳”**。页面不乱跳,用户才不心烦。Network (网络):Resource Timing 负责盯着**“通不通”**。
2025-12-24 16:27:08
1019
原创 面试官问“按钮重复点击怎么防”然后我挂了
2.开发环境下的无构建:Vite 在开发环境下不会对代码进行打包构建,而是直接利用浏览器原生的模块导入功能,通过 HTTP 服务器提供模块的即时响应。3.构建环境下的优化:尽管 Vite 在开发环境下不进行打包构建,但在生产环境下,它会通过预构建的方式生成高性能的静态资源,以提高页面加载速度。1.模块级别的热更新:Vite 使用浏览器原生的 ES 模块系统,可以实现模块级别的热更新,即只更新修改的模块,而不需要刷新整个页面。使用合适的 HTML标签和语义化的内容结构,使搜索引擎能够更好地理解页面的内容。
2025-12-24 15:48:18
933
原创 React 的新时代已经到来:你需要知道的一切
构建异步 UI 向来都是一件非常困难的事情。导航操作将内容隐藏在加载指示器之后,搜索框在响应无序到达时会产生竞态条件,表单提交则需要手动管理每一个加载状态标志和错误信息。每个异步操作都迫使你手动进行协调。这不是一个性能问题,而是一个协调问题。现在,React 的原语声明式地解决了它。对于开发团队而言,这标志着我们构建方式的一次根本性转变。React 不再需要每位开发者在每个组件中重新发明异步处理逻辑,而是提供了标准化的原语来自动处理协调。
2025-12-24 15:16:21
545
原创 元旦假期前,写给Web前端人的话!
3) 复现与修复:结合用户端信息(设备、网络、操作路径)尝试复现。高分回答:“针对不同漏洞建立防御体系:1) 防XSS:对所有动态内容进行转义(如使用DOMPurify库),避免使用innerHTML,设置Content Security Policy。高分回答:“我会依据监控三板斧快速响应:1) 看大盘:通过Sentry/Fundebug查看错误上报趋势,定位报错文件和堆栈;高分回答:“根据复杂度分层管理:1) 组件层:使用React Hooks(useState/useReducer)或。
2025-12-22 12:19:10
955
原创 【拿来就用】Uniapp路由守卫终极方案:1个文件搞定全站权限控制,老板看了都点赞!
在 Vue 项目中,我们使用 Vue-Router 的beforeEachroutes: [})// Vue-Router 导航守卫if (!token) {next()})但 Uniapp 的情况不同:作为一个跨端框架,Uniapp 没有内置类似 Vue-Router 的路由守卫机制。不过别担心,我们可以通过Uniapp 的拦截器 API实现相同的功能!Uniapp 提供了API,允许我们拦截特定的 API 调用。
2025-12-22 11:52:02
318
原创 阿里P8架构师前端面试文档!确实牛!
这不是吹,而是一份被多位资深面试官认证过的前端硬核知识点体系。这份文档已在 GitHub 上获得 3.2k Stars,多位 BAT 资深面试官参与了内容校正。
2025-12-18 12:10:07
426
原创 踩过坑才懂:前端生成唯一 ID,别用 Date.now ()了!一行代码搞定
做过电商 PC 端开发的兄弟估计都懂:经常得弄个「绝不会跟别的重样的编号(ID)」—— 比如给弹窗、临时加的商品条目、页面里动态蹦出来的元素做标识,免得代码把东西搞混。这事看着好像随手就能写,但真要做到百分百不重复,可比想的要坑。今天就唠唠大伙常踩的俩坑,再给你说个浏览器自带的、一行代码搞定的靠谱法子。好多人(不管是刚入门的还是干了俩年的)第一反应都是:把当前时间加个随机数不就行了?比如会写这么一段代码:出来的结果大概是这种,看着好像既有时间的 “独一份”,又有随机数的变化,挺好用?但真放到正经的生产
2025-12-18 12:02:05
244
原创 WEB前端都是先混进去再说,过来人的经验
当面试官问“你还有什么问题吗?”,绝不能说“没有”。这是展示你主动性和思考深度的最后舞台。低级问法:“咱们用啥技术栈?”(招聘要求已写)。高级问法(三选一)聚焦成长:“如果我有幸加入,团队对我这个角色的初级/中级工程师,在业务贡献和技术成长上,有怎样具体的期待?展现深度:“我注意到贵部门的产品在【提及某个具体功能,如数据可视化/交互复杂度】方面做得很好,请问前端团队目前在这一块面临的最大技术挑战或正在进行的架构优化是什么?体现文化契合。
2025-12-18 11:38:23
899
原创 教你快速从Vue 开发者 → React开发者转变!
工作这么多年,一直用的都是vue,对vue框架也最熟悉,但最近想深入学习react,之前也学过,只懂一点皮毛,对很多写法还是不理解,我就在想既然我比较熟悉vue,那能不能设计一份react和vue的转化总结,这样用理解vue的方式来学习react那就事半功倍了。现在AI这么方便,我就把我的需求说给chatGPTchatGPTchatGPT了,他帮我设计了一份 VueVue开发者 →ReactReact转化总结与对照表和一份学习计划。
2025-12-18 10:53:44
940
原创 前端面试第一名,我的场景题答案就是天花板
当我以面试第一名的成绩脱颖而出时,我意识到真正的核心竞争力不在于掌握了多少框架API或算法题解,而在于面对开放性问题时展现的系统思维与架构视野。那些看似寻常的场景题——“如何设计一个前端监控系统”“如何优化首屏加载体验”——恰恰是区分优秀与平庸的关键战场。我的答案之所以被称为“天花板级”,不是因为它使用了最前沿的技术栈,而是因为它构建了一套完整的技术叙事逻辑,从问题定义到解决方案,从技术选型到业务价值,形成了闭环思考体系。真正的“天花板”答案始于对问题的精准拆解与重新定义。
2025-12-16 12:25:04
809
原创 别再让 JavaScript 抢 CSS 的活儿了,css原生虚拟化来了
最后给你一个简单的决策框架:先检查 CSS 能不能直接解决问题。如果能,就用 CSS。如果不能,看看能不能用渐进增强——现代 CSS 优先,JavaScript 作为降级方案。如果这能满足需求,就用这个方案。只有当 CSS 真的搞不定时,才考虑 JavaScript 优先的方案重点不是要避免 JavaScript,而是不要在 CSS 已经给出答案的时候,还习惯性地用 JavaScript。大多数列表没有一千个项目。大多数动画不需要精确的回调。大多数组件用容器查询就能完美工作。
2025-12-16 12:11:07
668
原创 前端开发面试撒谎了...但还是给通过了!
内心OS:照着简历念怕被说没新意,但真不知道咋吹啊...✅ 高分回答:"面试官好,我是XX,XX大学计算机专业毕业,应聘前端开发岗。过去XX年我专注Web开发领域,主导过3个千万级PV的C端项目落地,擅长用React/Vue构建高可用SPA应用。最近半年为提升工程化能力,我自研了前端监控系统,将页面渲染耗时优化47%,异常捕获率提升至92%。贵司在XX技术栈(如微前端低代码)的实践让我非常向往,相信我的全链路开发经验能为团队带来价值。
2025-12-13 16:39:40
850
原创 90%前端都踩过的JS内存黑洞:从《你不知道的JavaScript》解锁底层逻辑与避坑指南
JS内存管理的核心,从来不是“记住栈堆区别”,而是理解《你不知道的JavaScript》反复强调的:“内存是有限资源,开发者的责任是让无用的内存‘可达性消失’”。全局变量“少而精”,使用后主动置空避免稀疏数组,警惕V8快慢数组切换闭包不背锅,控制引用周期是关键(弱引用兜底)Worker/定时器等“独立执行单元”,必须显式终止。
2025-12-13 15:54:48
971
原创 前端岗来了个男生,没两天就被劝退了
第三方库 CDN 引入 + `<link rel="preload">` 预加载关键资源,将首屏时间从 4.1s 降至 1.8s,跳出率下降 35%。先查是否违反响应式限制:Vue 2 中动态添加属性未用 `$set`,数组索引赋值无效,对象整体替换丢失监听。4. 使⽤同⼀个链接, 如何实现 PC 打开是 web 应⽤、⼿机打开是⼀个 H5 应⽤?查数据流,必要时 `watch` 深度监听或 `nextTick` 控制时机。43. 虚拟混动加载原理是什么, ⽤ JS 代码简单实现⼀个虚拟滚动加加载。
2025-12-11 12:29:32
1198
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅