01 - 前端学习路径¶
目标:系统学习前端开发,能独立开发Web应用
时间:4-6周
核心原则:从基础到框架,循序渐进
🎯 前端是什么?¶
前端开发 = 用户能看到和交互的部分
Text Only
用户打开网页 → 浏览器加载HTML/CSS/JS → 显示界面 → 用户交互
你的代码:
- HTML: 网页的骨架(结构)
- CSS: 网页的样式(外观)
- JavaScript: 网页的行为(交互)
📚 学习路径¶
阶段1:基础三件套(2周)¶
阶段2:现代前端工具(1周)¶
阶段3:前端框架(2-3周)¶
🛠️ 开发环境搭建¶
1. 安装VS Code¶
下载:https://code.visualstudio.com/
推荐插件: - Live Server(实时预览) - Prettier(代码格式化) - ESLint(代码检查) - Auto Rename Tag(自动重命名标签)
2. 安装Node.js¶
验证安装:
3. 浏览器开发者工具¶
Chrome/Firefox按F12打开: - Elements: 查看和修改HTML/CSS - Console: 执行JavaScript - Network: 查看网络请求 - Sources: 调试代码
📖 详细学习内容¶
Week 1: HTML + CSS¶
HTML基础¶
HTML
<!-- 基本结构 -->
<!DOCTYPE html>
<html>
<head>
<title>我的网页</title>
</head>
<body>
<!-- 常用标签 -->
<h1>标题</h1>
<p>段落</p>
<a href="https://example.com">链接</a>
<img src="image.jpg" alt="图片">
<!-- 列表 -->
<ul>
<li>无序列表项</li>
</ul>
<!-- 表单 -->
<form>
<input type="text" placeholder="输入文字">
<button type="submit">提交</button>
</form>
</body>
</html>
学习重点: - 语义化标签(header, nav, main, article, footer) - 表单元素和验证 - 多媒体标签(audio, video)
CSS基础¶
CSS
/* 选择器 */
h1 { color: blue; } /* 元素选择器 */
.class { font-size: 16px; } /* 类选择器 */
#id { margin: 10px; } /* ID选择器 */
/* 盒模型 */
.box {
width: 200px;
height: 100px;
padding: 20px; /* 内边距 */
border: 1px solid; /* 边框 */
margin: 10px; /* 外边距 */
}
/* 布局 */
.container {
display: flex; /* Flex布局 */
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
/* 响应式 */
@media (max-width: 768px) {
.container {
flex-direction: column;
}
}
学习重点: - Flexbox布局 - Grid布局 - 响应式设计(媒体查询) - CSS变量
Week 2: JavaScript基础¶
基础语法¶
JavaScript
// 变量
let name = 'Alice'; // 可变
const PI = 3.14; // 不可变
// 函数
function greet(name) {
return `Hello, ${name}!`;
}
const add = (a, b) => a + b; // 箭头函数
// 条件
if (age >= 18) {
console.log('Adult');
} else {
console.log('Minor');
}
// 循环
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 数组操作
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(n => n * 2);
const evens = numbers.filter(n => n % 2 === 0);
const sum = numbers.reduce((a, b) => a + b, 0);
DOM操作¶
JavaScript
// 获取元素
const element = document.getElementById('myId');
const elements = document.querySelectorAll('.myClass');
// 修改内容
element.textContent = '新文本';
element.innerHTML = '<strong>加粗</strong>';
// 修改样式
element.style.color = 'red';
element.classList.add('active');
// 事件监听
element.addEventListener('click', function(event) {
console.log('被点击了!');
});
// 创建元素
const newDiv = document.createElement('div');
newDiv.textContent = '新元素';
document.body.appendChild(newDiv);
异步编程¶
JavaScript
// Promise // Promise异步操作容器:pending→fulfilled/rejected
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
// async/await
async function getData() { // async定义异步函数;await等待Promise完成
try { // try/catch捕获异常
const response = await fetch('https://api.example.com/data'); // await等待异步操作完成
const data = await response.json();
return data;
} catch (error) {
console.error(error);
}
}
Week 3: 现代工具¶
ES6+新特性¶
JavaScript
// 解构赋值
const { name, age } = person;
const [first, second] = array;
// 展开运算符
const newArray = [...oldArray, 4, 5]; // ...展开运算符:展开数组/对象
const newObject = { ...oldObject, newKey: 'value' };
// 模块化
// math.js
export const add = (a, b) => a + b;
export default class Calculator {}
// main.js
import Calculator, { add } from './math.js';
// 类
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} barks`);
}
}
npm包管理¶
Bash
# 初始化项目
npm init -y
# 安装依赖
npm install lodash
npm install --save-dev webpack # 开发依赖
# 运行脚本
npm run build
npm start
Week 4-5: React框架¶
React基础¶
JSX
// 函数组件
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
// 使用Hook
import { useState, useEffect } from 'react';
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `Count: ${count}`;
}, [count]);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>
+1
</button>
</div>
);
}
// 列表渲染
function TodoList({ todos }) {
return (
<ul>
{todos.map(todo => ( // map转换每个元素;filter筛选;reduce累积
<li key={todo.id}>{todo.text}</li>
))}
</ul>
);
}
状态管理(Redux Toolkit,推荐方式)¶
JavaScript
// store.js
import { configureStore, createSlice } from '@reduxjs/toolkit';
const counterSlice = createSlice({ // const不可重新赋值;let块级作用域变量
name: 'counter',
initialState: { count: 0 },
reducers: {
increment: (state) => { state.count += 1; }, // 箭头函数:简洁的函数语法
decrement: (state) => { state.count -= 1; },
},
});
export const { increment, decrement } = counterSlice.actions; // 解构赋值:从对象/数组提取值
const store = configureStore({
reducer: counterSlice.reducer,
});
// 使用
store.dispatch(increment());
console.log(store.getState()); // { count: 1 }
🎯 学习检查点¶
Week 1结束后:¶
- 能用HTML搭建网页结构
- 能用CSS实现常见布局
- 能做出响应式页面
Week 2结束后:¶
- 理解JavaScript基础语法
- 能操作DOM元素
- 能处理用户事件
Week 3结束后:¶
- 理解ES6+新特性
- 会使用npm管理依赖
- 能配置简单的构建工具
Week 4-5结束后:¶
- 理解组件化开发思想
- 能使用React/Vue开发应用
- 理解状态管理
Week 6结束后:¶
- 完成一个完整的前端项目
- 能将项目部署上线
📚 推荐资源¶
在线教程¶
- MDN Web Docs(最权威)
- freeCodeCamp(免费实践)
- JavaScript.info(深入JS)
书籍¶
- 《JavaScript高级程序设计》
- 《CSS揭秘》
- 《React设计模式与最佳实践》
练习平台¶
- CodePen(在线写代码)
- Frontend Mentor(实战项目)
- LeetCode(算法,也有前端题)
🚀 下一步¶
完成前端基础学习后,进入 01-JavaScript深度理解.md 深入学习JavaScript核心机制!
记住:前端是用户的第一印象,好的前端让产品更有价值! 🎨