Skip to content

5 年前端工程师技能图谱

作为一名 5 年经验的前端工程师,正在向全栈方向发展。本文档梳理了应当掌握的核心技能及其深度要求。

🟢 已掌握 · 🟡 需加强 · 🔴 待学习 (按自身情况标注)


一、JavaScript / TypeScript

掌握程度:精通

这是安身立命之本,5 年经验应该做到源码级理解,而不只是会用。

技能点要求程度说明
ES6+ 全部特性精通解构、展开、Promise、async/await、Proxy、Reflect、Symbol、Iterator、Generator 等
原型链与继承精通能手写实现 newinstanceofObject.create,理解原型链查找机制
闭包与作用域精通理解词法作用域、执行上下文栈、变量提升、暂时性死区
事件循环精通宏任务/微任务的执行顺序,requestAnimationFramerequestIdleCallback 的时机
Promise 原理精通能手写 Promise A+ 规范实现,理解微任务队列
TypeScript精通泛型、条件类型、映射类型、模板字面量类型、infer 推断、类型体操
模块化熟练ESM vs CommonJS 的差异,循环引用处理,Tree Shaking 原理
函数式编程熟练纯函数、柯里化、组合、Monad 基本概念
设计模式熟练观察者、发布订阅、策略、工厂、单例、代理等常用模式

自检问题

  • 能否手写一个完整的 Promise.all / Promise.race
  • 给一段包含 setTimeout + Promise + async/await 的代码,能否准确说出执行顺序?
  • 能否用 TypeScript 实现一个类型安全的 EventEmitter

二、CSS / 布局

掌握程度:熟练

CSS 不只是"能写出来",而是要知道为什么这样写

技能点要求程度说明
Flex 布局精通各种对齐方式、flex-grow/shrink/basis 的计算逻辑
Grid 布局熟练grid-templategrid-area、响应式栅格
BFC / 层叠上下文精通理解 BFC 触发条件、清除浮动原理、z-index 层叠规则
响应式设计熟练媒体查询、容器查询、clamp()、移动端适配方案(rem/vw)
CSS 动画熟练transitionanimationtransform、GPU 加速、will-change
CSS 预处理器熟练Sass/Less 变量、mixin、函数、模块化
CSS-in-JS了解styled-components、Emotion、Tailwind CSS 的优劣对比
CSS 新特性了解@layer@containercolor-mix()has()、Subgrid

自检问题

  • 如何实现一个不定宽高元素的水平垂直居中(至少 3 种方式)?
  • 为什么 transform 动画比 left/top 动画性能好?
  • 什么是 BFC?如何触发?解决了什么问题?

三、框架(React / Vue)

掌握程度:至少精通一个,另一个熟练

5 年经验,不能只会"用"框架,要理解框架为什么这样设计

React

技能点要求程度说明
Hooks 全家桶精通useStateuseEffectuseRefuseMemouseCallback、自定义 Hook
组件设计模式精通高阶组件、Render Props、Compound Components、受控/非受控
状态管理熟练Context、Redux/Zustand/Jotai,理解各方案的适用场景
React 原理熟练 → 精通Fiber 架构、Reconciliation、合成事件、批量更新、并发模式
React Router熟练v6 API、嵌套路由、路由守卫、懒加载
Next.js / SSR熟练SSR/SSG/ISR 的区别、App Router、Server Components
性能优化熟练React.memo、虚拟列表、代码分割、Suspense、Profiler

Vue

技能点要求程度说明
Vue3 Composition API熟练refreactivecomputedwatchwatchEffect
响应式原理熟练Proxy 实现、依赖收集与触发、effect 函数
Vue Router / Pinia熟练路由导航守卫、状态持久化
Vue3 源码了解 → 熟练编译器、渲染器、响应式系统的核心逻辑

自检问题

  • useEffect 的依赖数组为什么不能放在条件语句里?
  • React 的 Fiber 架构解决了什么问题?
  • Vue 的 refreactive 底层有什么区别?

四、工程化

掌握程度:熟练

工程化能力是区分"初级"和"高级"的重要指标。

技能点要求程度说明
Vite精通原理(ESM 开发 + Rollup 生产)、插件开发、配置优化
Webpack熟练Loader/Plugin 机制、HMR 原理、SplitChunks、Tree Shaking
Babel / SWC熟练AST 转换流程、自定义插件、preset 配置
ESLint / Prettier熟练自定义规则、配置共享、与 CI 集成
Monorepo熟练pnpm workspace、Turborepo/Nx、包版本管理
CI/CD熟练GitHub Actions、自动化测试/构建/部署流水线
包管理熟练npm/pnpm/yarn 的区别、peerDependencies、lock 文件原理
发包了解npm 发包流程、Changesets、语义化版本

自检问题

  • Vite 为什么比 Webpack 快?生产环境为什么用 Rollup?
  • 如何编写一个 Babel 插件,自动移除 console.log
  • Monorepo 中 packages 之间如何相互引用?

五、浏览器与网络

掌握程度:熟练

前端归根到底是跟浏览器打交道。

技能点要求程度说明
浏览器渲染流程精通DOM → CSSOM → Render Tree → Layout → Paint → Composite
HTTP/HTTPS熟练状态码、缓存策略(强缓存/协商缓存)、CORS、Cookie/Session
HTTP/2 & HTTP/3了解多路复用、头部压缩、QUIC 协议
性能优化精通Core Web Vitals (LCP/FID/CLS)、性能指标采集、优化手段
安全熟练XSS、CSRF、CSP、HTTPS 原理、同源策略
存储熟练Cookie / localStorage / sessionStorage / IndexedDB 的区别与适用场景
Service Worker了解PWA、离线缓存、消息推送
WebSocket熟练与 HTTP 的区别、心跳机制、断线重连

自检问题

  • 从输入 URL 到页面显示,经历了哪些步骤?(尽量详细)
  • ETagLast-Modified 有什么区别?
  • 如何防御 XSS 攻击?CSP 是什么?

六、Node.js / 后端基础

掌握程度:熟练(全栈方向必备)

技能点要求程度说明
Node.js 核心模块熟练fspathhttpstreamchild_process
Express / Koa / Nest.js熟练中间件机制、路由、错误处理、参数校验
数据库熟练MySQL/PostgreSQL 基础 SQL、MongoDB、ORM(Prisma/TypeORM)
RESTful API 设计熟练资源命名、HTTP 方法语义、分页/过滤/排序
认证鉴权熟练JWT、OAuth2.0、Session、RBAC 权限模型
Redis了解缓存、Session 存储、分布式锁基本概念
Docker了解Dockerfile 编写、docker-compose、容器部署基础
Serverless了解Vercel Functions / AWS Lambda / Cloudflare Workers

自检问题

  • Koa 的洋葱模型是什么?与 Express 中间件有何不同?
  • JWT 和 Session 认证各自的优缺点?
  • 如何设计一个 RESTful API 的分页方案?

七、测试

掌握程度:熟练

5 年经验的工程师,写测试应该是习惯,而非负担。

技能点要求程度说明
单元测试熟练Vitest / Jest,测试纯函数、Hooks、工具方法
组件测试熟练Testing Library、模拟事件、快照测试
E2E 测试了解Playwright / Cypress 基本使用
Mock熟练接口 Mock、模块 Mock、Timer Mock
TDD / BDD了解测试驱动开发的理念与实践

八、算法与数据结构

掌握程度:熟练

不需要刷到 LeetCode Hard,但中等难度应该能解。

技能点要求程度说明
数组 / 链表 / 栈 / 队列精通基本操作、常见题型
哈希表 / Set / Map精通两数之和类型题
二叉树熟练遍历(前/中/后/层序)、DFS/BFS
排序算法熟练快排、归并、堆排,时间复杂度分析
动态规划了解背包、最长子序列、爬楼梯等经典题型
手写题精通debouncethrottledeepCloneflatcurryEventEmitterPromise.all

九、软技能

掌握程度:这是高级工程师与资深工程师的分水岭

技能点要求程度说明
技术方案设计熟练需求分析 → 技术选型 → 架构设计 → 落地文档
Code Review熟练能给出建设性意见,关注可维护性和可读性
技术分享熟练定期输出,能讲清楚一个技术点的 what / why / how
项目管理了解任务拆解、排期、风险识别、跨团队协调
沟通能力熟练能与产品/设计/后端高效沟通,推动技术决策
技术文档熟练RFC、ADR、API 文档、技术博客

能力等级参考

等级含义面试表现
了解知道是什么,用过基本功能能说出概念和基本用法
熟练项目中频繁使用,能解决常见问题能深入讨论原理和最佳实践
精通读过源码,能从底层解释原理能手写实现、能做技术决策和架构设计

学习路线建议

作为一名正在转向全栈的 5 年前端,建议按以下优先级补强:

1. 🔥 夯实 JS/TS 基础(很多人 5 年了还有盲区)
2. 🔥 深入框架原理(这也是本项目 mini-react / mini-vue 的目标)
3. 🔥 Node.js + 数据库(全栈必备)
4. ⭐ 工程化能力提升(Monorepo、CI/CD、自定义插件)
5. ⭐ 算法刷题(保持手感,中等难度)
6. ⭐ 系统设计思维(技术方案、架构能力)

最后更新于:

用心学习,用代码说话 💻