前端基础
语义化标签、盒模型、Flex 与 Grid 布局、响应式适配,先把页面结构写规范。
按模块拆分,每个方向都可以独立开始,也可以按顺序系统推进。
语义化标签、盒模型、Flex 与 Grid 布局、响应式适配,先把页面结构写规范。
变量与作用域、原型与类、异步编程、DOM 操作与事件流,打通浏览器交互能力。
语法基础、函数与模块、文件处理与常用标准库,用于脚本编写与数据处理。
数组、链表、栈与队列、哈希表、二叉树,配合时间复杂度的分析方法。
Git 基本工作流、分支管理、提交规范与协作流程,让代码可回溯、可协作。
静态站点组织、性能优化、可访问性检查,以及把项目发布到线上可用。
每个阶段都有明确的目标产出,学完一个阶段就做一个小项目来验证。
目标:掌握 HTML 语义化与 CSS 布局。知识点:常用标签、盒模型、Flex / Grid、媒体查询。产出:一个静态个人主页。
目标:掌握语法、DOM 与异步请求。知识点:函数与作用域、事件流、Promise、localStorage。产出:一个待办清单应用。
目标:掌握基础语法与常用库。知识点:列表与字典、文件读写、异常处理、collections。产出:一个批量统计小工具。
目标:掌握常见结构与复杂度分析。知识点:数组与链表、栈与队列、哈希表、递归与双指针。产出:一份带题解的练习记录。
目标:掌握 Git 协作、调试与部署。知识点:分支策略、提交规范、浏览器调试、静态站点发布。产出:一个可上线的完整小项目。
| 阶段 | 周期 | 核心内容 | 验收产出 |
|---|---|---|---|
| 一 | 1-3 周 | HTML 语义化、CSS 布局 | 静态个人主页 |
| 二 | 4-9 周 | JavaScript 语法与异步 | 待办清单应用 |
| 三 | 10-13 周 | Python 基础与标准库 | 文件批处理脚本 |
| 四 | 14-20 周 | 数据结构与算法 | 算法练习册 |
| 五 | 持续 | Git、调试与部署 | 可上线的完整项目 |
学习过程中整理的笔记,尽量做到"一段说明 + 一段可运行代码"。支持关键词搜索与分类筛选。
一句话区分:Flex 处理一维排列(一行或一列),Grid 处理二维排列(行与列同时控制)。页面整体骨架优先 Grid,组件内部排列优先 Flex。
/* 页面骨架:Grid 划分区域 */
.layout {
display: grid;
grid-template-columns: 220px 1fr;
grid-template-rows: 64px 1fr;
gap: 16px;
}
/* 组件内部:Flex 控制单行对齐 */
.toolbar {
display: flex;
align-items: center;
gap: 12px;
}
先写移动端再放大(移动优先)、用相对单位、只在必要时打断点。断点不必多,通常 720px 与 900px 两个就够用。
/* 移动优先:默认单列,宽屏再变多列 */
.grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 720px) {
.grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
.grid { grid-template-columns: repeat(3, 1fr); }
}
Promise 表示一个"未来才会有结果的值",async / await 是它的语法糖,让异步代码看起来像同步代码。错误处理统一用 try / catch。
async function loadList(url) {
try {
const res = await fetch(url);
if (!res.ok) throw new Error('请求失败:' + res.status);
return await res.json();
} catch (err) {
console.error(err);
return [];
}
}
简单场景用 Set,一行搞定;需要按对象的某个字段去重时,用 Map 记录已出现的键。
// 基本类型去重
const unique = (arr) => [...new Set(arr)];
// 按对象字段去重
const uniqueBy = (arr, key) => {
const seen = new Map();
for (const item of arr) if (!seen.has(item[key])) seen.set(item[key], item);
return [...seen.values()];
};
推导式让代码更短,但嵌套两层以上时可读性会明显下降。判断标准:一眼能看懂就用,需要停顿思考就改回循环。
# 推荐:单层、语义清晰
squares = [x * x for x in range(10) if x % 2 == 0]
# 不推荐:嵌套过深,改回循环更易读
rows = []
for row in matrix:
for cell in row:
if cell > 0:
rows.append(cell)
哈希表适合"快速查找是否存在"的场景,把 O(n) 的查找降到 O(1);Git 保证每一步修改都可回溯,两者都是日常高频工具。
# 两数之和:用哈希表记录已见过的值
def two_sum(nums, target):
seen = {}
for i, n in enumerate(nums):
if target - n in seen:
return [seen[target - n], i]
seen[n] = i
return []
# 查看状态与提交记录 git status git log --oneline # 新建分支并切换 git switch -c feature/learn-notes # 撤销工作区某个文件的修改 git restore README.md
学完一个阶段就做一个项目。下面这些项目都不复杂,但每一个都会逼你把零散的知识点串起来。
用 HTML 与 CSS 完成一个多板块页面,要求语义化标签、响应式布局,在手机宽度下不出现横向滚动条。
练习点:盒模型、Flex / Grid、媒体查询
支持新增、勾选完成、删除与状态筛选,数据保存到 localStorage,刷新页面后数据不丢失。
练习点:DOM 操作、事件委托、本地存储
用 Python 遍历指定目录,按扩展名归类文件,并输出一份包含数量与占用空间的统计表。
练习点:pathlib、os 模块、异常与日志
按"思路 + 复杂度 + 代码"三段式记录每道题,每周固定 5 题,按月回顾一次错题。
练习点:复杂度分析、递归、双指针
输入一段 Markdown 文本,按标题切片生成卡片,支持左右切换与进度显示,适合复习零散知识点。
练习点:字符串处理、状态管理、键盘事件
一套可复用的博客页面模板,包含列表页、标签筛选与深色模式切换,最终部署为静态站点。
练习点:组件化思维、主题变量、静态部署
code学习是一个非商业的个人学习站点,用来存放我自己的编程笔记、练习记录与小项目。
学编程最大的困难往往不是知识点本身,而是学完就忘、没有沉淀。与其把笔记散落在各个地方, 不如整理成一个站点:既方便自己随时回看,也顺带练习一遍前端与部署的完整流程。
所以本站既是"学习笔记",也是"练手项目"——页面结构、样式、脚本与部署全部由我一个人完成。
内容按学习进度更新,不追求数量。每篇笔记都尽量做到:说明清楚、代码可运行、能回答"为什么这样写"。 如果发现内容有误,欢迎通过下方方式告知,我会尽快修正。
如果你发现内容错误、有更好的写法,或者想交流学习经验,可以发邮件到联系邮箱(部署时替换为你的真实邮箱)。