This repository has been archived on 2026-05-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
obsidian/金山办公作业/Week06/summary.md
T

256 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [前端, 全栈, 学习总结, 阶段性回顾]
create time: 2026-04-26 14:30
---
# 前端开发学习阶段性总结
> **声明**:本文档由 AI 助手(Obsidian 知识管理自动化工作流)自动生成。
> 生成方式:遍历 vault 中与【前端开发】相关的笔记文件,按既定学习路径(HTML → CSS → JavaScript → TypeScript → 工程化 → 实战)自动提取核心知识点,结构化整合后输出。
> 生成时间:2026-04-26
> 数据来源:`FRONTEND/`、`DEV/VITE/`、`金山办公作业/Week06/` 共 16 篇笔记文件。
> 如需修正或补充内容,请直接编辑本文件或修改源笔记。
## 概述
本总结梳理了从网页骨架到工程化构建的完整前端学习路径,涵盖六大阶段的知识积累。所有知识点分布在以下三个区域:
| 区域 | 路径 | 阶段 |
|------|------|------|
| 基础层 | `FRONTEND/` | HTML → CSS → JavaScript → TypeScript |
| 工程层 | `DEV/VITE/` | Vite 构建工具架构与优化 |
| 实战层 | `金山办公作业/Week06/` | 前端项目实战:路由、API 封装、登录安全 |
---
## 阶段一:HTML 基础 — 网页骨架
**核心知识点:**
- HTML 文档结构(`<!DOCTYPE html>`、`<html>`、`<head>`、`<body>`)
- 常用标签:文本标签(`<h1>`~`<h6>`、`<p>`、`<span>`)、列表标签(`<ul>`、`<ol>`)、链接与图片
- **表单元素**:`<input>` 各类 type、`<select>`、`<textarea>`、`<button>`
- **语义化标签**:`<header>`、`<nav>`、`<main>`、`<article>`、`<section>`、`<footer>`
> 这是所有前端知识的起点,决定了页面的结构和可访问性。
---
## 阶段二:CSS 基础 — 网页样式
**核心知识点:**
- **选择器优先级**:`!important` > 内联 > ID > 类/属性/伪类 > 标签/伪元素
- **盒模型**:content → padding → border → margin,`box-sizing: border-box` 的重要性
- **Flexbox 布局**:`flex-direction`、`justify-content`、`align-items`、`flex-wrap`
- **Grid 布局**:`grid-template-columns/rows`、`gap`、`grid-area`
- **响应式设计**:媒体查询(`@media`)、响应式单位(`rem`、`vw`、`vh`)
> CSS 是前端最容易被低估的部分,Flexbox 和 Grid 需要多动手练习。
---
## 阶段三:JavaScript 基础 — 交互逻辑
**核心知识点:**
- **变量与数据类型**:`let` / `const`、原始类型与引用类型
- **函数与作用域**:函数声明 vs 函数表达式、箭头函数、闭包、作用域链
- **DOM 操作**:`document.querySelector`、事件绑定、事件委托
- **事件处理**:事件冒泡与捕获、`addEventListener`
- **异步编程**:`Promise`、`async/await`、`fetch` API
> React 的 Hooks 本质就是 JS 闭包 + 状态管理,理解 JS 是理解框架的前提。
---
## 阶段四:TypeScript 基础 — 类型保障
**核心知识点:**
- **类型注解**:基础类型标注、函数参数/返回值类型
- **接口(Interface)**:对象结构约束、可选属性、只读属性
- **泛型(Generics)**:类型参数化、泛型约束
- **联合类型与交叉类型**:`|`、`&`
- **工具类型**:`Partial`、`Required`、`Pick`、`Omit` 等
> TypeScript 是现代前端项目的工业标准,越早适应越好。
---
## 阶段五:Vite 工程化 — 构建工具
**文件索引:** `DEV/VITE/架构原理.md`、`DEV/VITE/配置详解.md`、`DEV/VITE/优化实践.md`
### 5.1 核心设计理念
Vite 的核心创新在于**分层优化策略**——开发环境和生产环境采用完全不同的处理方式:
```
开发环境 → ESM 按需编译 → 即时返回
生产环境 → Rollup 预构建 → 高质量产物
```
### 5.2 开发环境架构
| 机制 | 说明 |
|------|------|
| **ESM 按需编译** | 只编译浏览器请求的文件,而非全量打包 |
| **依赖预构建** | 使用 esbuild 预打包 npm 依赖,转 ESM 格式 |
| **文件监听** | FSWatcher 监听文件变更,触发 HMR |
### 5.3 热模块替换(HMR)
```
文件变更 → 监听器 → 服务端失效 → 重新编译 → WebSocket → 浏览器替换
```
- JS 模块:通过浏览器原生 `import()` 重新导入
- CSS 模块:直接替换 `<style>` 标签
- React 组件:React Fast Refresh 保持状态的前提下重新渲染
### 5.4 生产构建系统
```
入口文件 → 依赖图构建 → 模块解析 → 代码转换 → 代码分割 → Tree Shaking → 压缩 → 输出
```
- 基于 **Rollup** 进行最终打包
- 支持手动代码分割(`manualChunks`)、vendor 提取
- 使用 terser 进行压缩混淆
### 5.5 插件系统
插件生命周期:`Config` → `ConfigResolved` → `ConfigureServer` → `BuildStart` → `Transform` → `Load` → `BuildEnd` → `CloseBundle`
核心钩子:
- **resolveId**:解析模块路径
- **load**:加载模块内容
- **transform**:转换模块源码
### 5.6 Vite vs 传统构建工具对比
| 特性 | Vite | Webpack | Parcel |
|------|------|---------|--------|
| 启动原理 | ESM 按需编译 | 全量打包 | 零配置打包 |
| HMR 机制 | 模块级更新 | 全局重编译 | 智能更新 |
| 配置复杂度 | 低 | 高 | 极低 |
| 开发体验 | 优秀 | 可优化 | 良好 |
---
## 阶段六:前端项目实战(Week06)
**文件索引:** `金山办公作业/Week06/` 目录
### 6.1 前端项目依赖清单
梳理了现代前端项目的完整依赖体系,包括框架依赖(React、React Router)、构建工具(Vite)、UI 组件库等。
### 6.2 路由原理
理解了前端路由的核心机制:
- **History API**:`pushState` / `replaceState` / `popstate` 事件
- **Hash 路由**:`#` 锚点变化触发 `hashchange` 事件
- **SPA 路由**:单页面应用如何在不刷新页面的情况下切换视图
### 6.3 统一封装请求
对前端 HTTP 请求进行了系统化的封装:
- **请求拦截器**:统一添加 Token、超时控制
- **响应拦截器**:统一错误处理、401 自动跳转登录
- **类型安全**:使用 TypeScript 定义 API 响应类型
- **Axios 封装**:基于 Axios 构建统一请求模块
### 6.4 登录安全流程
从普通登录到安全登录的完整演进:
```
普通 HTTPS 登录 → 盐值挑战 → 客户端密钥派生
```
**三层安全防护:**
1. **HTTPS 加密传输** — 基础保障
2. **盐值挑战(Salt Challenge)** — 后端下发一次性随机盐值
3. **客户端 PBKDF2 派生** — 前端用盐值 + 密码做密钥派生,传输层不出现原始密码
### 6.5 客户端密钥派生(进阶安全)
> 盐值挑战方案的进阶实现,适用于金融类高安全场景。
**完整流程:**
| 步骤 | 前端操作 | 生活类比 |
|------|----------|----------|
| 第一步 | 向 `GetChallenge` 接口请求盐值 | 服务员递给你一张一次性餐巾纸 |
| 第二步 | 用 PBKDF2 算法将密码+盐值做派生 | 用暗语写在餐巾纸上 |
| 第三步 | 发送派生密钥而非原始密码 | 厨房对暗语,用完即撕 |
**安全性保证:** 即使 HTTPS 被绕过,攻击者只能看到客户端派生的密钥,无法还原原始密码。
### 6.6 Outlet 组件模式
理解 React 中 Outlet 组件的使用——用于嵌套路由的场景,父路由通过 `<Outlet />` 渲染子路由的视图内容,是构建多级导航布局的核心模式。
### 6.7 题目:在线管理平台
通过实际项目题目将所学知识综合运用,涵盖了路由配置、API 封装、安全认证等完整前端开发流程。
### 6.8 验收任务清单
Week06 的最终验收目标,确保每个知识点都落实到代码实现中。
---
## 学习路径全景图
```mermaid
graph LR
A[HTML 基础] --> B[CSS 基础]
B --> C[JavaScript 基础]
C --> D[TypeScript 基础]
D --> E[Vite 工程化]
E --> F[前端项目实战 Week06]
F --> G[React 框架]
```
---
## 关键认知与心得
1. **不要跳过基础直接学框架。** React 的 Hooks 本质就是 JS 闭包 + 状态管理,不懂 JS 就看不懂 Hooks。
2. **CSS 是前端最难的部分之一。** Flexbox 和 Grid 需要多动手练习,不是看几篇文章就能掌握的。
3. **TypeScript 不是可选的。** 现代前端项目中,TS 是标配,越早适应越好。
4. **理解工具原理比会用工具更重要。** 深入 Vite 架构原理后,能更好地进行性能优化和插件开发。
5. **安全是前端的重要课题。** 从 HTTPS 到盐值挑战再到客户端密钥派生,每一层都在增加攻击者的成本。
6. **工程化思维贯穿始终。** 从依赖管理 → 路由设计 → API 封装 → 构建优化,前端不只是写页面,更是一套系统工程。
---
## 关联笔记
- [[FRONTEND/HTML 基础]]
- [[FRONTEND/CSS 基础]]
- [[FRONTEND/JavaScript 基础]]
- [[FRONTEND/TypeScript 基础]]
- [[DEV/VITE/架构原理]]
- [[DEV/VITE/配置详解]]
- [[DEV/VITE/优化实践]]
- [[金山办公作业/Week06/前端项目依赖清单]]
- [[金山办公作业/Week06/路由原理]]
- [[金山办公作业/Week06/统一封装请求]]
- [[金山办公作业/Week06/登录安全流程]]
- [[金山办公作业/Week06/客户端密钥派生]]
- [[金山办公作业/Week06/Outlet]]
- [[金山办公作业/Week06/bcrypt成本因子]]
- [[金山办公作业/Week06/题目-在线管理平台]]
- [[金山办公作业/Week06/验收任务清单]]