Catalogue
  1. 一、HTML/CSS 基础——一切页面的起点
    1. 1.1 页面结构:语义化标签的力量
    2. 1.2 盒模型:CSS 布局的底层逻辑
    3. 1.3 Flex 布局:现代布局的核心武器
    4. 1.4 常用样式与基础响应式布局
  2. 二、JavaScript 基础——让页面动起来的核心语言
    1. 2.1 变量与数据类型
    2. 2.2 函数:一等公民
    3. 2.3 数组与对象:数据结构双雄
    4. 2.4 条件判断与循环
    5. 2.5 事件处理与 DOM/BOM 操作
  3. 三、异步编程——处理非阻塞任务的艺术
    1. 3.1 Promise:异步编程的基石
    2. 3.2 async/await:同步写法处理异步
    3. 3.3 Fetch 与 Axios:接口请求的两种方案
  4. 四、Vue2/Vue3 基础——渐进式框架的核心思想
    1. 4.1 模板语法
    2. 4.2 响应式数据
    3. 4.3 计算属性与监听器
    4. 4.4 生命周期
  5. 五、页面渲染——框架如何将数据变为界面
    1. 5.1 条件渲染
    2. 5.2 列表渲染
    3. 5.3 事件绑定与双向绑定
  6. 六、前端工程化——从脚本到项目的跃迁
    1. 6.1 Vue-Cli 与 Vite:两种脚手架方案
    2. 6.2 目录结构与环境配置
  7. 七、基础组件——页面交互的积木
    1. 7.1 表单组件
    2. 7.2 表格与分页
    3. 7.3 弹窗与抽屉
    4. 7.4 日期选择与下拉选择
  8. 八、接口联调——前后端协作的桥梁
    1. 8.1 参数传递的常见方式
    2. 8.2 接口调用与数据回显
    3. 8.3 异常提示与问题定位
  9. 九、TypeScript 基础——为 JavaScript 添加类型安全
    1. 9.1 类型注解
    2. 9.2 接口(interface)
    3. 9.3 函数类型声明
  10. 十、Element / Element Plus 常用组件实战
    1. 10.1 表单(el-form)
    2. 10.2 表格(el-table)
    3. 10.3 分页(el-pagination)
    4. 10.4 弹窗(el-dialog)
    5. 10.5 日期选择与下拉选择
  11. 知识体系的关联与学习路径建议

前端基础技术全景指南:从零基础到工程化实战

这篇文章系统梳理了现代前端开发中最核心的十大技术模块,适合希望巩固基础、查漏补缺的开发者。
每个模块从概念到实践,力求让你对前端知识体系有全面而清晰的认知。
第1个月:掌握前端基础技术,能理解简单页面开发。


一、HTML/CSS 基础——一切页面的起点

1.1 页面结构:语义化标签的力量

HTML 是 Web 的骨架,而语义化标签则是赋予骨架以意义的关键。传统的 <div> 虽然万能,但滥用会导致代码可读性差、SEO 效果不佳。现代 HTML5 提供了一系列语义化标签,如 <header><nav><main><section><article><aside><footer> 等,它们让浏览器和开发者都能快速理解页面结构。

一个典型的语义化页面骨架如下:

1
2
3
4
5
6
7
8
9
<body>
<header>网站头部,包含 logo 和导航</header>
<nav>导航菜单</nav>
<main>
<section>主要内容区块</section>
<aside>侧边栏信息</aside>
</main>
<footer>页脚信息</footer>
</body>

语义化的好处不仅在于代码整洁,更在于它提升了无障碍访问能力(屏幕阅读器能准确识别各区块)、搜索引擎的抓取效率,以及团队协作时的可维护性。

1.2 盒模型:CSS 布局的底层逻辑

CSS 盒模型是理解所有布局的基石。每个 HTML 元素都被视为一个矩形盒子,由四层结构组成:
content(内容)padding(内边距)border(边框)margin(外边距)

盒模型有两种计算模式,这是新手常踩的坑:

  • 标准盒模型(content-box)width 只设置内容区域的宽度,paddingborder 会额外增加元素的实际尺寸。
  • 替代盒模型(border-box)width 包含了 paddingborder,元素的实际尺寸等于设定的 width,这在布局计算中更加直观。

实际开发中,几乎所有项目都会全局设置 box-sizing: border-box,以简化布局计算:

1
2
3
*, *::before, *::after {
box-sizing: border-box;
}

1.3 Flex 布局:现代布局的核心武器

Flexbox 是 CSS3 引入的一维布局方案,它彻底改变了我们对元素排列的思维方式。传统布局依赖 floatposition,代码繁琐且脆弱;而 Flex 通过声明式语法,让对齐、分布、排列变得优雅。

Flex 布局的核心概念围绕两个角色展开:容器(Flex Container)项目(Flex Item)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.container {
display: flex;
flex-direction: row; /* 主轴方向:row | column */
justify-content: center; /* 主轴对齐:flex-start | center | space-between | space-around */
align-items: center; /* 交叉轴对齐:flex-start | center | stretch | baseline */
flex-wrap: wrap; /* 换行:nowrap | wrap */
gap: 16px; /* 项目间距 */
}

.item {
flex: 1; /* 弹性增长比例 */
flex-shrink: 0; /* 是否允许收缩 */
flex-basis: 200px; /* 初始尺寸 */
}

Flex 布局尤其适合以下场景:导航栏水平排列并居中、卡片等间距分布、垂直居中某个元素(曾经的世纪难题,现在只需两行代码)、侧边栏固定宽度而内容区自适应等。

1.4 常用样式与基础响应式布局

CSS 常用样式涵盖字体、颜色、背景、定位、过渡动画等。其中,position 属性是布局中的高频考点:static(默认文档流)、relative(相对自身偏移)、absolute(相对最近定位祖先偏移)、fixed(相对视口固定)、sticky(滚动到阈值时固定)。

响应式布局的核心思想是”一套代码,多端适配”。实现手段主要包括:

  • 媒体查询(Media Queries):根据设备宽度应用不同样式规则。
  • 百分比/视口单位%vwvh 让尺寸随环境变化。
  • Flex / Grid 的弹性特性:自动适应空间。
  • rem / em 相对单位:配合根元素字体大小实现等比缩放。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* 移动端优先的媒体查询示例 */
.container {
padding: 16px;
}

@media (min-width: 768px) {
.container {
padding: 32px;
max-width: 720px;
margin: 0 auto;
}
}

@media (min-width: 1024px) {
.container {
max-width: 960px;
}
}

二、JavaScript 基础——让页面动起来的核心语言

JavaScript 是前端唯一的编程语言,它的掌握程度直接决定了开发者的上限。

2.1 变量与数据类型

ES6 引入了 letconst,逐步取代了 varlet 用于声明可重新赋值的变量,具有块级作用域;const 用于声明常量,一旦赋值不可更改绑定(但对象和数组的内容仍可修改)。

JavaScript 有七种原始类型(stringnumberbooleannullundefinedsymbolbigint)和一种引用类型(object)。理解原始类型按值传递、引用类型按引用传递,是避免诡异 Bug 的关键。

2.2 函数:一等公民

JavaScript 中函数是一等公民,可以赋值给变量、作为参数传递、作为返回值。ES6 引入的箭头函数简化了语法,同时改变了 this 的绑定规则(箭头函数没有自己的 this,它继承外层作用域的 this)。

1
2
3
4
5
6
7
8
9
10
11
// 函数声明
function greet(name) {
return `Hello, ${name}!`;
}

// 箭头函数
const greet = (name) => `Hello, ${name}!`;

// 高阶函数:函数作为参数
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(n => n * 2); // [2, 4, 6, 8, 10]

2.3 数组与对象:数据结构双雄

数组和对象是 JavaScript 中最常用的数据结构。数组的常用方法可以分为两类:会改变原数组的pushpopshiftunshiftsplicesortreverse)和返回新数组的mapfiltersliceconcatflat)。现代开发中,函数式风格(返回新数组)更受推崇,因为它不会意外地修改原始数据。

对象的常用操作包括属性访问(点语法和方括号语法)、解构赋值、展开运算符、Object.keys()Object.values()Object.entries() 等。

1
2
3
4
5
6
// 解构赋值
const user = { name: 'Alice', age: 25, role: 'developer' };
const { name, age } = user;

// 展开运算符
const updatedUser = { ...user, age: 26, city: 'Beijing' };

2.4 条件判断与循环

条件判断包括 if...elseswitch...case、三元运算符 ? : 以及短路求值 &&||。循环有传统的 forwhile,以及更现代的 for...of(遍历可迭代对象的值)和 for...in(遍历对象的可枚举键)。

2.5 事件处理与 DOM/BOM 操作

DOM(Document Object Model)是 JavaScript 操作页面的桥梁。通过 document.querySelector()document.getElementById() 获取元素后,可以修改其内容(textContentinnerHTML)、样式(styleclassList)、属性(setAttribute)等。

事件处理的核心是 addEventListener,它支持事件冒泡和捕获两种传播机制。事件委托是一种重要的优化技巧:将事件监听器绑定在父元素上,利用冒泡机制统一处理子元素的事件,避免了为每个子元素单独绑定的性能浪费。

1
2
3
4
5
6
// 事件委托示例
document.querySelector('.list').addEventListener('click', (e) => {
if (e.target.matches('li')) {
console.log('点击了列表项:', e.target.textContent);
}
});

BOM(Browser Object Model)提供了与浏览器窗口交互的能力,常用对象包括 window(窗口属性与方法)、location(URL 操作)、history(前进后退)、navigator(浏览器信息)、localStorage / sessionStorage(本地存储)。


三、异步编程——处理非阻塞任务的艺术

JavaScript 是单线程语言,但浏览器提供了事件循环(Event Loop)机制来处理异步任务。理解异步编程是前端进阶的必经之路。

3.1 Promise:异步编程的基石

Promise 是对异步操作的封装,它有三种状态:pending(进行中)fulfilled(已完成)rejected(已拒绝)。状态一旦变更就不可逆。

1
2
3
4
5
6
7
8
9
10
11
12
13
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
success ? resolve({ data: '结果数据' }) : reject(new Error('请求失败'));
}, 1000);
});
};

fetchData()
.then(result => console.log(result))
.catch(error => console.error(error))
.finally(() => console.log('无论成败都会执行'));

Promise 还提供了强大的组合方法:Promise.all()(全部成功才成功)、Promise.race()(取最快结果)、Promise.allSettled()(等待所有完成,不论成败)、Promise.any()(任一成功即可)。

3.2 async/await:同步写法处理异步

async/await 是 Promise 的语法糖,它让异步代码拥有了同步代码般的可读性。async 函数自动返回一个 Promise,await 会暂停执行直到 Promise 完成。

1
2
3
4
5
6
7
8
9
10
async function loadUserData() {
try {
const user = await fetchUser(); // 等待用户数据
const orders = await fetchOrders(user.id); // 再等待订单数据
return { user, orders };
} catch (error) {
console.error('数据加载失败:', error);
throw error;
}
}

注意,await 只能在 async 函数内使用(ES2022 起支持顶层 await)。多个无依赖的异步任务应该用 Promise.all 并行执行,而不是逐个 await,以避免不必要的等待时间。

3.3 Fetch 与 Axios:接口请求的两种方案

fetch 是浏览器原生提供的请求 API,基于 Promise 设计,语法简洁。但它有一些不够友好的设计:网络错误才 reject,HTTP 4xx/5xx 仍算 fulfilled;不自动携带 Cookie;不支持请求超时设置和进度监听。

1
2
3
4
5
6
7
8
// Fetch 示例
const response = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Alice' })
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();

Axios 是第三方 HTTP 库,弥补了 Fetch 的诸多不足:自动转换 JSON 数据、支持请求/响应拦截器、支持超时设置、支持取消请求、浏览器端支持上传/下载进度监听。在 Vue 项目中,Axios 几乎是标准配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Axios 示例
import axios from 'axios';

const api = axios.create({
baseURL: 'https://api.example.com',
timeout: 10000,
});

// 请求拦截器:统一附加 Token
api.interceptors.request.use(config => {
config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
return config;
});

const { data } = await api.post('/users', { name: 'Alice' });

四、Vue2/Vue3 基础——渐进式框架的核心思想

Vue 是国人开发、全球广泛使用的前端框架,以”渐进式”和”响应式”为核心特色。

4.1 模板语法

Vue 使用基于 HTML 的模板语法,核心语法包括:双大括号插值 {{ expression }}、指令系统(v-bind / : 绑定属性、v-on / @ 绑定事件、v-model 双向绑定、v-if / v-show 条件渲染、v-for 列表渲染)。

4.2 响应式数据

这是 Vue 的灵魂。Vue2 使用 Object.defineProperty 劫持数据属性的 getter/setter 来实现响应式,Vue3 则升级为 Proxy,解决了数组索引修改检测不到、需要递归初始化所有嵌套属性等历史问题。

对比项 Vue2 Vue3
响应式原理 Object.defineProperty Proxy
组合式 API 无(需插件) 原生支持 setup()
生命周期 beforeCreatecreated onBeforeMountonMounted
多根节点 不支持(单根) 支持 Fragment(多根节点)
TypeScript 支持 较弱 原生良好

4.3 计算属性与监听器

计算属性(computed)基于依赖缓存计算结果,只有依赖变化时才重新计算,适合用于模板中的复杂表达式提取。监听器(watch)用于在数据变化时执行副作用操作,如发起接口请求、操作 DOM、调用第三方库等。

1
2
3
4
5
6
7
8
9
10
// Vue3 Composition API 示例
import { ref, computed, watch } from 'vue';

const price = ref(100);
const quantity = ref(3);
const total = computed(() => price.value * quantity.value); // 缓存计算

watch(total, (newVal, oldVal) => {
console.log(`总价从 ${oldVal} 变为 ${newVal}`);
});

4.4 生命周期

Vue 组件从创建到销毁经历一系列过程,每个阶段都有对应的钩子函数。最常用的是 mounted(组件挂载完成,可以发起接口请求、操作 DOM)和 beforeUnmount / beforeDestroy(组件销毁前,清理定时器、事件监听器等)。


五、页面渲染——框架如何将数据变为界面

5.1 条件渲染

v-if 是真正的条件渲染,它会在条件为 false 时彻底销毁和重建 DOM 元素;v-show 则只是通过 display: none 切换可见性,DOM 始终存在。频繁切换用 v-show,运行时条件很少改变用 v-if

5.2 列表渲染

v-for 用于基于数组或对象渲染列表。每个列表项必须有唯一的 :key,它是 Vue 的虚拟 DOM diff 算法进行高效更新的依据。

1
2
3
4
5
<ul>
<li v-for="item in list" :key="item.id">
{{ item.name }} - {{ item.price }}
</li>
</ul>

5.3 事件绑定与双向绑定

v-on(简写 @)绑定事件处理器,支持事件修饰符如 .prevent(阻止默认行为)、.stop(阻止冒泡)、.once(只触发一次)等。v-model 在表单元素上创建双向绑定,本质上等价于同时绑定 :value@input


六、前端工程化——从脚本到项目的跃迁

前端工程化是现代开发与”写几个 HTML 文件”的分水岭。它引入了模块化、组件化、自动化构建等软件工程思想。

6.1 Vue-Cli 与 Vite:两种脚手架方案

Vue-Cli 是基于 Webpack 的官方脚手架,生态成熟、插件丰富,但启动速度在大型项目中较慢。

Vite 是尤雨溪推出的新一代构建工具,利用浏览器原生 ES Module 实现开发时按需编译,启动速度极快(毫秒级),热更新几乎是即时的。在新项目中,Vite 已成为首选。

1
2
3
4
5
6
# Vite 创建 Vue3 项目
npm create vite@latest my-project -- --template vue
cd my-project
npm install
npm run dev # 启动开发服务器
npm run build # 生产环境构建

6.2 目录结构与环境配置

一个典型的 Vue 项目目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my-project/
├── public/ # 静态资源,构建时直接复制
├── src/
│ ├── assets/ # 需构建处理的资源(图片、字体)
│ ├── components/ # 公共组件
│ ├── views/ # 页面级组件
│ ├── router/ # 路由配置
│ ├── store/ # 状态管理
│ ├── api/ # 接口请求封装
│ ├── utils/ # 工具函数
│ ├── App.vue # 根组件
│ └── main.js # 入口文件
├── .env # 环境变量
├── .env.development # 开发环境变量
├── .env.production # 生产环境变量
├── vite.config.js # 构建配置
└── package.json # 项目依赖与脚本

环境变量通过 .env 文件管理,以 VITE_ 为前缀的变量可以在代码中通过 import.meta.env 访问,避免了硬编码 API 地址等配置。


七、基础组件——页面交互的积木

无论使用哪个 UI 框架,以下几类组件在业务开发中出现频率最高。

7.1 表单组件

表单是数据录入的核心载体。常见的表单组件包括输入框(文本、数字、密码)、选择器(单选、多选、下拉)、开关、滑块、上传组件等。关键实践包括:表单校验(必填、格式、自定义规则)、联动控制(选项 A 决定选项 B 的范围)、重置与回显。

7.2 表格与分页

表格(Table)是后台管理系统中最常见的组件,用于展示结构化数据。核心功能包括列配置(排序、筛选、自定义渲染)、行选择、展开行、固定表头/列。分页组件通常与表格配合使用,提供页码切换、每页条数、跳转等能力。

7.3 弹窗与抽屉

弹窗(Modal/Dialog)用于在当前页面上叠加一个交互层,适合表单编辑、确认操作、详情展示等场景。抽屉(Drawer)从屏幕边缘滑出,适合侧边详情面板、编辑面板。两者的核心属性是可见性控制(v-model)和关闭前的回调钩子。

7.4 日期选择与下拉选择

日期选择器支持单日期、日期范围、快捷选项等模式。下拉选择器(Select)支持单选、多选、远程搜索、虚拟滚动(大数据量时只渲染可视区域选项)。这些组件看似简单,但边界情况繁多,是体现前端开发细致程度的试金石。


八、接口联调——前后端协作的桥梁

接口联调是将前端页面与后端服务连接起来的过程,也是最能暴露问题的环节。

8.1 参数传递的常见方式

方式 适用场景 示例
Query 参数 GET 请求、简单筛选条件 /api/users?page=1&size=10
Path 参数 资源定位 /api/users/123
Request Body POST/PUT,复杂数据 { "name": "Alice", "roles": [1,2] }
Header 认证信息、版本号 Authorization: Bearer xxx

8.2 接口调用与数据回显

标准的接口联调流程是:封装请求实例 → 定义 API 方法 → 在组件中调用 → 处理响应数据 → 回显到界面。在 Vue 项目中,通常会在 api/ 目录下集中管理接口定义,在组件的 onMounted 或事件处理函数中调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// api/user.js
import request from '@/utils/request';

export const getUserList = (params) => {
return request.get('/api/users', { params });
};

// views/UserList.vue
import { getUserList } from '@/api/user';

async function loadData() {
loading.value = true;
try {
const res = await getUserList({ page: 1, size: 10 });
tableData.value = res.data.list;
total.value = res.data.total;
} catch (error) {
ElMessage.error('数据加载失败,请重试');
} finally {
loading.value = false;
}
}

8.3 异常提示与问题定位

前端应该对接口异常做统一处理:通过 Axios 拦截器捕获 HTTP 状态码,对 401(未授权)跳转登录、403(无权限)提示用户、500(服务器错误)展示通用错误页。业务层错误(如 code !== 200)则在响应拦截器中统一弹出提示。

常见问题定位方法包括:浏览器 Network 面板检查请求参数和响应内容、Console 面板查看报错堆栈、使用断点调试追踪数据流、对比接口文档与实际请求的差异等。


九、TypeScript 基础——为 JavaScript 添加类型安全

TypeScript 是 JavaScript 的超集,它通过静态类型检查在编码阶段就捕获潜在错误,极大提升了大型项目的可维护性。

9.1 类型注解

TypeScript 支持对所有 JavaScript 类型进行注解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 基本类型
let name: string = 'Alice';
let age: number = 25;
let isActive: boolean = true;

// 数组
let scores: number[] = [90, 85, 92];
let names: Array<string> = ['Alice', 'Bob']; // 泛型写法

// 联合类型
let id: string | number = 'abc123';

// 可选类型
let nickname: string | undefined = undefined;

9.2 接口(interface)

接口用于描述对象的形状(Shape),是 TypeScript 中最核心的类型定义工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
interface User {
id: number;
name: string;
email: string;
role: 'admin' | 'user' | 'guest'; // 字面量类型
avatar?: string; // 可选属性
readonly createdAt: Date; // 只读属性
}

interface AdminUser extends User {
permissions: string[];
}

const user: User = {
id: 1,
name: 'Alice',
email: 'alice@example.com',
role: 'admin',
createdAt: new Date(),
};

接口还支持索引签名(描述动态键的对象)、函数类型描述、接口继承与合并等高级用法。

9.3 函数类型声明

1
2
3
4
5
6
7
8
9
10
11
12
13
// 基本函数类型
function add(a: number, b: number): number {
return a + b;
}

// 可选参数与默认值
function greet(name: string, greeting?: string): string {
return `${greeting ?? 'Hello'}, ${name}!`;
}

// 函数类型表达式
type Comparator = (a: number, b: number) => number;
const compare: Comparator = (x, y) => x - y;

在 Vue3 项目中,TypeScript 与 Composition API 天然契合。ref<T>()computed()defineProps<T>() 等都支持泛型参数,让组件的输入输出类型清晰可查。


十、Element / Element Plus 常用组件实战

Element(Vue2 版本)和 Element Plus(Vue3 版本)是国内后台管理系统中使用率极高的 UI 组件库。以下梳理几个高频组件的使用要点。

10.1 表单(el-form)

el-form 是整个数据录入的容器,配合 el-form-item 和校验规则使用。核心流程是:绑定 model 数据 → 配置 rules 规则 → 在提交时调用 validate() 方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<el-form :model="form" :rules="rules" ref="formRef">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" />
</el-form-item>
<el-button @click="handleSubmit">提交</el-button>
</el-form>

<script setup>
const rules = {
username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
email: [
{ required: true, message: '请输入邮箱', trigger: 'blur' },
{ type: 'email', message: '邮箱格式不正确', trigger: 'blur' }
]
};
</script>

10.2 表格(el-table)

el-table 支持列配置、排序、筛选、自定义模板列等功能。嵌套的 el-table-column 配合 #default 插槽可以实现自定义渲染。

10.3 分页(el-pagination)

el-pagination 通常与表格联动,通过监听 current-changesize-change 事件重新请求数据。

10.4 弹窗(el-dialog)

el-dialog 通过 v-model 控制显隐,常用于编辑表单。注意配合 destroy-on-close 属性在关闭时销毁内容,避免残留数据。

10.5 日期选择与下拉选择

el-date-picker 支持多种类型(date、daterange、month、year),value-format 属性可控制绑定值的格式。el-select 配合 el-option 使用,开启 filterable 可搜索,开启 multiple 可多选。


知识体系的关联与学习路径建议

以上十个模块并非孤立存在,它们构成了一个有机的前端知识网络:

1
2
3
4
5
6
7
HTML/CSS ──→ JavaScript ──→ 异步编程

Vue2/Vue3 ──→ 页面渲染

前端工程化 ──→ 基础组件 ──→ 接口联调

TypeScript ──────────────────────→ Vue2/Vue3 ──→ Element/Element Plus

建议的学习路径是:先扎实 HTML/CSS/JavaScript 基础(模块 1-3),再系统学习 Vue 框架(模块 4-5),然后引入工程化工具进行实战(模块 6-8),最后补充 TypeScript 和 UI 组件库(模块 9-10)。每个阶段都应配合实际项目练习,因为前端是一门实践性极强的技术——看十遍文档不如亲手写一个完整项目。

希望这篇文章能帮助你构建起清晰的前端知识地图。技术之路漫漫,基础永远是走得更远的根基。