所有文章
2026年
- 在GitHub账号在被盗四次之后,这是我的补救和反思
- 最近做AIOps的一些经验分享
- AI的编程水平比你强,认了吧
- 不用LangChain用什么(一):Supabase与Gemini SDK
- 清算AI生成的那些花瓶代码
- 教你使用AI跳过B站的带货广告
- 写技术博客还是一个好主意吗?
2025年
- 教你如何制作与设计播客爬虫
- 为什么你不应该选择LangChain
- 为什么我要写一本有关AI开发的图书
- 团队管理中的一些现实问题
- AI正在动摇我曾推崇的最佳实践
- 技术与产品的对立
- 我用数字告诉你IT行业现在有多差
- 反对vibe coding不过是程序员的自我感动而已
2024年
- 我们还需要极客吗
- 技术进步的代价
- 新 AI,旧秩序
- 我入门了一项新技术,然后呢
- 我做了一款发现播客的工具
- 学习 Tensorflow 的困境与解药
- 全世界都想让程序员专心写业务代码
- Copilot 结对编程指南
2023年
- Tech Lead 要学会戴着镣铐跳舞
- 巩固系统韧性三个基础策略
- 人肉智能#004:还原偶像
- 浅谈如何向上管理
- 为什么不应该给用户提示错误码
- 程序员如何成长
- 如何保证用户重试操作的幂等性
- 挨踢公司目睹之怪现状
- 关于时间管理的一点建议
- 去年我是怎么解决团队问题的
- NodeJS 实战系列:个人开发者应该如何选购云服务
- NodeJS 实战系列:模块设计与文件分类
- 人肉智能#003:为什么 Instagram 曾经值得尊敬
- NodeJS 实战系列:DevOps 尚未解决的问题
- NodeJS 实战系列:如何设计 try catch
- 人肉智能#002:为人性服务
2022年
- Redux 的困扰与如何技术选型
- 重塑影响力
- 测试覆盖率治不好你的精神内耗
- 昂贵的质量
- 理解流程
- 做一个能对标阿里云的前端APM工具(下)
- 人肉智能#001:代码即权力
- 帮助团队成长是唯一的出路
- 做一个能对标阿里云的前端APM工具(上)
- 去年做 Tech Leader 犯过最大的错
2021年
- 技术写作的困境
- 拥抱原则与面对现实
- 小心 Serverless
- SQL Server 查询语句优化入门
- CSS 里的整洁架构
- 开源社区的暗面
- 性能指标的信仰危机
- 从对 Vue 中 mixin 的批评,到对模块间依赖关系的探讨
2020年
- 【译文】【前端架构鉴赏 03】:Angular 与 MVP 模式
- 【译文】【前端架构鉴赏 02】:可拓展 Angular 2 架构
- 【译文】【前端架构鉴赏 01】:Angular 架构模式与最佳实践
- 前端架构 101(六):整洁(Clean Architecture)架构是归宿
- 前端架构 101(五):从 Flux 进化到 Model-View-Presenter
- 前端架构 101(四):MVC的不足与Flux的崛起
- 前端架构 101(三):MVC 启示录:模块的职责,作用域和通信
- 前端架构 101(二): MVC 初探
- 前端架构 101(一):在谈论它们之前我们需要达成的共识
2019年
- 如果 Angular 组件无法更新,这篇文章能帮到你
- 微前端说明书
- 代码与质量的思考与随笔
- 一篇来自前端同学对后端接口的吐槽
- 深入理解 Webpack 打包分块(下)
- 深入理解 Webpack 打包分块(上)
- 仪表盘场景前端优化经验谈
- 不如自己写一个 schema 类库吧
- 构建大型 Mobx 应用的几个建议
2018年
- Mobx 与 Redux 的性能对比
- 从美团这篇文章聊聊微前端的聚合问题
- 用 100 行代码提升 10 倍的性能
- 【译文】给构建大型 redux 应用的五个建议
- 不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO
- React + Redux 性能优化(二)工具篇: Immutablejs
- JavaScript 奇怪事件簿
- React + Redux 性能优化(一):理论篇
2017年
- 深入React的生命周期(下):更新(Update)
- 深入React的生命周期(上):出生(Mount)
- 从React脚手架工具学习React项目的最佳实践(上):前端基础配置
- ECMAScript 6 六级考试
- 无懈可击的浏览器缓存方案:关于思路,细节,ServiceWorker,以及HTTP/2
- 面试系列之四:你真的了解React吗(下)Flux与Vuex的差异以及Webpack
- 面试系列之三:你真的了解React吗(中)组件间的通信以及React优化
- 面试系列之二:你真的了解React吗(上)如何设计组件以及重要的生命周期
- 面试系列之一:关于前端面试算法的一些建议
- 使用fetch接口post数据时记得指定 Content-Type
- 图文并茂的Visual Studio Code快捷键技巧大全
- Webpack 速成
- 如何使用Javascript实现缓动特效
- Flux与Redux背后的设计思想(二):CQRS, Event Sourcing, DDD
- Flux与Redux背后的设计思想(一):Command Bus, Event Bus, Service Bus
- 关于Node.js后端架构的一点后知后觉
2016年
2015年
2014年
- 移动开发的那些事(上):深入概念
- Short The Problem With Requirejs Build
- 聊Javascript中的AOP编程
- 让我们再聊聊浏览器资源加载优化
- Javascript高性能动画与页面渲染
- 从垃圾回收算法到Object Pool
- 关于博客搬迁至Jekyll的FAQ
- 从MVC模式在前端开发中的局限性谈起
2013年
- 在Node.js中搭建缓存管理模块
- Promise/A的误区以及实践
- 请停止使用new关键字
- 关于Unicode和URL encoding入门的一切以及注意事项
- Javascript - 从prototype漫谈到继承(2)
- 你真的了解setTimeout和setInterval吗?
- 答寒冬的面试题
- 谈javascript变量声明
- Javascript - 从prototype漫谈到继承(1)
- 如何组织Html元素与如何进行CSS命名(下)
- 如何组织Html元素与如何进行CSS命名(上)
- 从onload和DOMContentLoaded谈起
- 利用Node.js+express框实现图片上传
2012年
- 【原创翻译】深入理解javascript事件处理函数绑定三部曲(三)——高级事件函数绑定模型
- 用最通俗易懂的代码帮助新手理解javascript闭包
- 【原创翻译】深入理解javascript事件处理函数绑定三部曲(二)——传统处理函数绑定模型
- 【原创翻译】深入理解javascript事件处理函数绑定三部曲(一)——早期的事件处理函数
- 【原创翻译】生动详细解释javascript的冒泡和捕获,包懂包会
