重学前端 - 学习路线

103 阅读7分钟

JavaScript 深度复习

基础与进阶概念

  • 数据类型与运算

    • 原始类型:String、Number、Boolean、null、undefined、Symbol、BigInt
    • 引用类型:Object、Array、Function、Date、RegExp、Map、Set、WeakMap、WeakSet
    • 类型判断:typeof、instanceof、Object.prototype.toString.call()
    • 类型转换:隐式转换规则、显式转换方法
  • 作用域与闭包

    • 词法作用域 vs 动态作用域
    • 变量提升、暂时性死区(TDZ)
    • 闭包原理、内存泄漏问题、实际应用场景
    • 模块模式、IIFE、块级作用域
  • 原型与继承

    • __proto__、prototype、constructor 关系
    • 原型链查找机制
    • 继承实现:原型链继承、构造函数继承、组合继承、寄生组合继承、Class继承
    • ES6 Class:静态方法、私有字段、getter/setter

异步编程深度掌握

  • 异步演进历程

    • 回调函数 → Promise → Generator → Async/Await
    • Promise 核心原理:状态机、链式调用、微任务机制
    • Promise 静态方法:all、allSettled、race、any
    • Async/Await 错误处理、并行执行优化
  • 事件循环机制

    • 浏览器事件循环:宏任务 vs 微任务
    • Node.js 事件循环:6个阶段详解
    • setTimeoutsetIntervalrequestAnimationFramerequestIdleCallback
    • MessageChannelMutationObserver 微任务应用
  • 高级异步模式

    • 可取消的 Promise、竞态条件处理
    • 异步迭代器、for-await-of
    • Web Workers:专用Worker、共享Worker、Service Worker

ES6+ 现代特性

  • 语法增强

    • 解构赋值:对象、数组、嵌套解构、默认值
    • 模板字符串:标签模板、多语言处理
    • 扩展运算符:数组拼接、对象合并、函数参数
    • 可选链操作符 ?.、空值合并运算符 ??
  • 新数据结构

    • Map vs Object 性能对比、使用场景
    • Set 去重应用、Weak引用机制
    • TypedArray:Int8Array、Uint32Array 等
    • ArrayBuffer、SharedArrayBuffer
  • 元编程

    • Proxy:拦截器、响应式系统实现
    • Reflect:标准化对象操作
    • Symbol:唯一性、内置Symbol、元编程应用

⚛️ React 生态深度掌握

React 18+ 核心特性

  • 新特性深度理解

    • Concurrent Features:startTransition、useDeferredValue
    • Automatic Batching:批处理优化
    • Suspense for Data Fetching:数据获取的Suspense
    • Offscreen API:隐藏组件保持状态
  • Hooks 高级用法

    • 基础Hooks:useState、useEffect、useContext
    • 性能Hooks:useMemo、useCallback、memo
    • 引用Hooks:useRef、useImperativeHandle
    • 状态Hooks:useReducer、自定义Hooks
    • 第三方Hooks库:ahooks、react-use
  • Server Components

    • 服务端组件 vs 客户端组件
    • 数据获取模式、序列化限制
    • 流式渲染、选择性Hydration

状态管理深度对比

  • 客户端状态管理

    • Zustand:轻量、基于Hook、中间件系统
    • Jotai:原子化、派生状态、异步原子
    • Recoil:Facebook出品、Selector缓存
    • Redux Toolkit:createSlice、RTK Query、不可变更新
  • 服务端状态管理

    • TanStack Query:缓存策略、后台更新、无限滚动
    • SWR:Vercel出品、轻量级替代
    • Apollo Client:GraphQL专属、规范化缓存

性能优化专业级

  • 渲染优化

    • React.memo 深度比较、自定义比较函数
    • useMemo/useCallback 依赖项优化
    • 组件懒加载:React.lazy + Suspense
    • 虚拟列表:react-window、react-virtualized
  • 包大小优化

    • 代码分割:路由级、组件级分割
    • 树摇优化、副作用标记
    • 动态导入、预加载提示
  • 运行时优化

    • 防抖、节流、虚拟化
    • Web Workers 计算卸载
    • 内存泄漏检测与预防

🌐 全栈与元框架

Next.js 15 深度掌握

  • App Router 架构

    • 文件系统路由:page.tsx、layout.tsx、loading.tsx
    • 路由组:(auth)、并行路由 @folder
    • 路由拦截:(..)photo、动态路由 [...slug]
  • 数据获取与缓存

    • 服务端组件数据获取:async/await
    • 缓存策略:force-cache、no-store
    • 重新验证:revalidatePath、revalidateTag
    • 增量静态再生(ISR)、按需重新验证
  • 高级功能

    • 中间件:身份验证、国际化、A/B测试
    • 边缘运行时 vs Node.js 运行时
    • 图像优化:next/image、远程模式
    • 字体优化:next/font、Google Fonts

现代全栈模式

  • 后端集成

    • tRPC:端到端类型安全
    • GraphQL:Apollo Client、Relay Modern
    • RESTful API 设计、OpenAPI 规范
  • 数据库与ORM

    • Prisma:模式定义、迁移、客户端生成
    • Drizzle:TypeScript原生、轻量级ORM
    • 数据库:PostgreSQL、MySQL、SQLite、MongoDB
  • 身份验证与授权

    • NextAuth.js / Auth.js:OAuth、JWT、Session
    • Clerk:预构建组件、用户管理
    • Supabase:一体化身份验证方案

🎨 样式与设计系统

CSS 现代方案

  • CSS-in-JS

    • Styled-components:主题、样式扩展、服务端渲染
    • Emotion:高性能、灵活配置
    • Vanilla Extract:零运行时、TypeScript友好
  • Utility-First CSS

    • Tailwind CSS:配置扩展、组件提取
    • 自定义插件、变体组、arbitrary values
  • 现代CSS特性

    • CSS Grid:二维布局、网格区域
    • Flexbox:弹性布局、对齐控制
    • Container Queries:容器查询
    • CSS Nesting:嵌套规则
    • Viewport Units:动态视口单位

设计系统构建

  • 组件库架构

    • 原子设计:原子、分子、有机体、模板、页面
    • 组件API设计:可组合性、可访问性
    • 主题系统:颜色、间距、字体、阴影令牌
  • 流行组件库

    • shadcn/ui:基于Tailwind、可复制粘贴
    • Radix UI:无头组件、极致可访问性
    • Chakra UI:主题系统、样式道具
    • Ant Design:企业级、功能完整

⚡ 构建工具与工程化

现代构建工具

  • Vite 深度配置

    • 插件系统:自定义插件开发
    • 依赖预构建、模块联邦
    • 环境变量、多环境配置
    • 自定义服务器、代理配置
  • 打包优化策略

    • 代码分割:动态导入、vendor分离
    • 资源优化:图片压缩、字体子集
    • 预渲染、预加载、预获取
    • 包分析工具:webpack-bundle-analyzer

代码质量工程

  • TypeScript 高级用法

    • 泛型约束、条件类型、映射类型
    • 工具类型:Partial、Required、Pick、Omit
    • 模板字面量类型、字符串操作类型
    • 类型推断、类型保护、类型断言
  • 测试策略

    • 单元测试:Jest、Vitest、React Testing Library
    • 集成测试:用户交互测试、状态测试
    • E2E测试:Playwright、Cypress
    • 视觉测试:Chromatic、Loki
  • 工程规范

    • ESLint:自定义规则、插件开发
    • Prettier:配置一致性、团队规范
    • Husky:Git Hooks、提交前检查
    • Commitizen:标准化提交信息

🚀 性能优化专业级

核心性能指标

  • Web Vitals 深度优化

    • LCP:图片优化、字体优化、服务端渲染
    • FID/INP:JavaScript优化、任务分解
    • CLS:尺寸预留、内容稳定性
    • TBT:主线程优化、长任务分解

加载性能优化

  • 资源加载策略

    • 关键CSS内联、非关键CSS异步加载
    • 字体显示策略:font-display、字体预加载
    • 图片优化:WebP/AVIF格式、响应式图片、懒加载
    • 第三方脚本优化:异步加载、资源提示
  • 缓存策略

    • CDN缓存、浏览器缓存、Service Worker缓存
    • 缓存失效策略、版本控制
    • stale-while-revalidate 模式

运行时性能

  • JavaScript 性能

    • 内存管理、垃圾回收机制
    • 避免内存泄漏:事件监听器、定时器清理
    • 防抖、节流、虚拟滚动
    • Web Assembly:Rust编译、性能密集型任务
  • 渲染性能

    • 合成层优化、GPU加速
    • 减少重绘重排、transform/opacity优化
    • 内容可见性:content-visibility属性

🔧 跨平台开发

React Native 生态

  • 核心概念

    • 原生组件 vs 自定义组件
    • 桥接机制、线程模型
    • 手势处理、动画系统
  • 开发工具链

    • Expo:简化开发、预构建组件
    • React Native CLI:完全控制、原生模块
    • 调试工具:Flipper、React DevTools
  • 性能优化

    • 列表优化:FlashList、虚拟列表
    • 图片优化:缓存、渐进加载
    • 包大小优化:代码分割、动态导入

小程序与桌面端

  • 小程序框架

    • Taro:多端统一、React语法
    • 微信小程序原生开发、云开发
  • 桌面应用

    • Electron:主进程、渲染进程、进程通信
    • Tauri:Rust后端、轻量级替代

🛡️ 安全与最佳实践

前端安全

  • 常见攻击防护

    • XSS:内容安全策略、输入输出编码
    • CSRF:SameSite Cookie、Token验证
    • 点击劫持:X-Frame-Options、CSP
    • 依赖安全:漏洞扫描、许可证检查

监控与可观测性

  • 错误监控

    • Sentry:错误捕获、性能监控
    • 用户行为回放、问题复现
  • 性能监控

    • RUM:真实用户监控、性能指标收集
    • Core Web Vitals 监控、业务指标关联

🎯 新兴技术与趋势

前沿技术探索

  • AI 集成

    • LLM 前端集成:OpenAI API、本地模型
    • 向量数据库、语义搜索
    • AI代码助手:GitHub Copilot、Cursor
  • Web3 与区块链

    • 以太坊开发:ethers.js、web3.js
    • 智能合约交互、钱包集成
  • 可视化与3D

    • Three.js:3D场景、物理引擎
    • D3.js:数据可视化、自定义图表
    • WebGL:高性能图形、着色器编程