Web-Dev-For-Beginners 项目实战:用 VSCode.dev 从零构建、样式化并部署个人简历网站
本文是 Web-Dev-For-Beginners 课程第 25 课(Using a Code Editor)配套的完整动手实战指南。课程主干文档位于 8-code-editor/1-using-a-code-editor/README.md,而本文所依据的任务文档为 translations/ar/8-code-editor/1-using-a-code-editor/assignment.md(其英文原版见 8-code-editor/1-using-a-code-editor/assignment.md)。
实战目标非常明确:不安装任何本地软件,只用一个浏览器,从零走完「创建 GitHub 仓库 → 在 vscode.dev 中编码 → 用 CodeSwing 实时预览 → 用 Git 提交 → 部署上线」的完整 Web 开发工作流,最终产出一个可分享给招聘方的响应式个人简历网站。读完并动手完成本文,你将能够独立管理一个完整的云端 Web 项目,掌握语义化 HTML、现代 CSS 布局与 Git 版本控制的工程化用法。
本次实战任务在课程中的位置
在 Web-Dev-For-Beginners 课程中,本任务被设计为第 25 课(8-code-editor/ 目录)的落地作业。根目录 README.md 的课程总表中将其定位为「Working with VSCode」,前置学习材料是 8-code-editor/1-using-a-code-editor/README.md——该课已系统讲解过 vscode.dev 的界面分区(活动栏、侧边栏、编辑器区)、两种打开仓库的方法(欢迎页 "Open Remote Repository" 按钮,以及把 github.com 改写成 vscode.dev/github 的 URL 变换技巧)、文件创建、Git 提交与扩展生态。
因此,本实战不是零起点,而是把课上分散学到的能力放进一个完整的真实场景中串起来:学习内容的骨架承袭课程,代码示例则来自实战文档本身,仓库中并不存在一个"标准答案"项目——你要从空白仓库开始,亲手写每一行 HTML 与 CSS,这正是课程所提倡的项目式学习(project-based learning)的体现。
学习目标与前置条件
完成本次实战后,你应当具备以下能力:
| 能力维度 | 具体内容 |
|---|---|
| 项目创建 | 使用 VSCode.dev 创建并管理完整的 Web 开发项目 |
| 页面结构 | 使用语义化 HTML 元素组织专业网页结构 |
| 响应式样式 | 使用现代 CSS 技术设计响应式布局 |
| 交互实现 | 用基础 Web 技术实现交互功能 |
| 部署上线 | 发布可通过分享链接访问的线上网站 |
| 版本控制 | 在整个开发过程中践行 Git 最佳实践 |
开始之前,请确认满足前置条件:
- 一个 GitHub 账号(若没有,可在 github.com 免费注册);
- 已完成课程中关于 vscode.dev 界面导航与基础操作的章节(即 8-code-editor/1-using-a-code-editor/README.md);
- 对 HTML 结构、CSS 样式基本概念有初步了解。
第一步:创建你的 GitHub 仓库
真实世界的项目都始于良好的仓库规划,本步为整个项目打下版本控制与组织基础:
- 打开浏览器访问 GitHub 官网并登录你的账号;
- 点击右上角绿色的 "New" 按钮或 "+" 图标;
- 将仓库命名为
my-resume(也可以选择更个人化的名字,如john-smith-resume); - 填写简短描述:"Professional resume website built with HTML and CSS";
- 可见性选择 Public(公开),这样简历才能被潜在雇主访问;
- 勾选 "Add a README file",为项目生成初始说明;
- 点击 "Create repository" 完成创建。
💡 仓库命名建议:尽量使用能清晰表达项目用途的描述性、专业名称。无论是分享给招聘方,还是在作品集评审时,好名字都能让对方一眼看懂项目目标。
第二步:在 GitHub 上初始化项目结构
VSCode.dev 需要仓库中至少存在一个文件才能打开它。因此我们先直接在 GitHub 网页上创建主 HTML 文件,再切换到 Web 编辑器继续开发:
- 在新仓库页面点击 "creating a new file" 链接;
- 文件名输入
index.html; - 粘贴如下最小化 HTML5 骨架:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Your Name - Professional Resume</title>
</head>
<body>
<h1>Your Name</h1>
<p>Professional Resume Website</p>
</body>
</html>
- 填写提交信息(commit message):"Add initial HTML structure";
- 点击 "Commit new file" 保存。
这步初始化达成了什么:
- 建立规范的 HTML5 文档结构,为后续语义化内容打好基础;
- 引入
viewportmeta 标签,为响应式设计铺路——它会告诉移动浏览器按设备宽度渲染页面; - 设置描述性
<title>,它将显示在浏览器标签页上; - 为专业内容组织创建了起点。
第三步:在 VSCode.dev 中打开你的项目
仓库骨架就绪后,进入主开发环节。在浏览器新标签页中:
-
访问 vscode.dev;
-
在欢迎屏点击 "Open Remote Repository";
-
从 GitHub 复制仓库链接并粘贴到输入框:
https://github.com/your-username/my-resume请将
your-username替换为你的真实 GitHub 用户名 -
按 Enter 键加载项目。
✅ 成功标志:侧边栏 Explorer 中出现项目文件列表,index.html 可以在主编辑区直接编辑。
你会看到这样的界面分区(与课程一致):
- 资源管理器侧边栏(Explorer):展示仓库文件与文件夹结构;
- 编辑器区:显示所选文件内容供编辑;
- 活动栏:提供源代码管理、扩展等功能的入口;
- 状态栏:提示连接状态与当前分支信息。
补充一点实操技巧:如果你知道目标仓库的确切地址,也可以像课程里演示的那样直接使用 URL 变换法——把 github.com/你的用户名/my-resume 改成 vscode.dev/github/你的用户名/my-resume 就能立即进入编辑态,两种方式达到的效果相同。
第四步:构建简历主体内容
将 index.html 中的占位内容替换为完整的简历结构。下面这份 HTML 采用双栏语义化布局:<header> 放姓名头衔,<main> 内用两个 <article> 分区(左栏 #mainLeft 放联系方式/技能/教育,右栏 #mainRight 放自我介绍/工作经历/项目),全部使用区块级语义标签:
完整的 HTML 简历结构(点击展开)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="style.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<title>Your Name - Professional Resume</title>
</head>
<body>
<header id="header">
<h1>Your Full Name</h1>
<hr>
<p class="role">Your Professional Title</p>
<hr>
</header>
<main>
<article id="mainLeft">
<section>
<h2>CONTACT</h2>
<p>
<i class="fa fa-envelope" aria-hidden="true"></i>
<a href="mailto:your.email@domain.com">your.email@domain.com</a>
</p>
<p>
<i class="fab fa-github" aria-hidden="true"></i>
<a href="https://github.com/your-username">github.com/your-username</a>
</p>
<p>
<i class="fab fa-linkedin" aria-hidden="true"></i>
<a href="https://linkedin.com/in/your-profile">linkedin.com/in/your-profile</a>
</p>
</section>
<section>
<h2>SKILLS</h2>
<ul>
<li>HTML5 & CSS3</li>
<li>JavaScript (ES6+)</li>
<li>Responsive Web Design</li>
<li>Version Control (Git)</li>
<li>Problem Solving</li>
</ul>
</section>
<section>
<h2>EDUCATION</h2>
<h3>Your Degree or Certification</h3>
<p>Institution Name</p>
<p>Start Date - End Date</p>
</section>
</article>
<article id="mainRight">
<section>
<h2>ABOUT</h2>
<p>Write a compelling summary that highlights your passion for web development, key achievements, and career goals. This section should give employers insight into your personality and professional approach.</p>
</section>
<section>
<h2>WORK EXPERIENCE</h2>
<div class="job">
<h3>Job Title</h3>
<p class="company">Company Name | Start Date – End Date</p>
<ul>
<li>Describe a key accomplishment or responsibility</li>
<li>Highlight specific skills or technologies used</li>
<li>Quantify impact where possible (e.g., "Improved efficiency by 25%")</li>
</ul>
</div>
<div class="job">
<h3>Previous Job Title</h3>
<p class="company">Previous Company | Start Date – End Date</p>
<ul>
<li>Focus on transferable skills and achievements</li>
<li>Demonstrate growth and learning progression</li>
<li>Include any leadership or collaboration experiences</li>
</ul>
</div>
</section>
<section>
<h2>PROJECTS</h2>
<div class="project">
<h3>Project Name</h3>
<p>Brief description of what the project accomplishes and technologies used.</p>
<a href="#" target="_blank">View Project</a>
</div>
</section>
</article>
</main>
</body>
</html>
个性化修改指引:
- 把所有示例文本替换成你的真实信息;
- 根据你的经验水平和职业方向增删板块;
- 可按需添加或删除区块(例如证书 Certifications、志愿服务 Volunteer Work、语言 Languages 等);
- 把链接换成你真实的社交主页与项目地址。
注意,这段模板中同时引入了外链 Font Awesome 图标库,代码里 <i class="fa fa-envelope">、<i class="fab fa-github"> 等图标的样式正是来自这个 CDN,后续 CSS 会对它们做统一的间距与配色处理。
第五步:创建支撑文件(style.css 与 codeswing.json)
专业网站需要有序的文件组织。在 Explorer 侧边栏把鼠标悬停在项目文件夹名上,点击出现的"新建文件"图标(📄+),逐个创建:
style.css—— 负责全部样式与布局;codeswing.json—— 预览扩展的配置文件。
编写 CSS 文件(style.css)
专业简历样式(点击展开)
/* Modern Resume Styling */
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 16px;
line-height: 1.6;
max-width: 960px;
margin: 0 auto;
padding: 20px;
color: #333;
background-color: #f9f9f9;
}
/* Header Styling */
header {
text-align: center;
margin-bottom: 3em;
padding: 2em;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
h1 {
font-size: 3em;
letter-spacing: 0.1em;
margin-bottom: 0.2em;
font-weight: 300;
}
.role {
font-size: 1.3em;
font-weight: 300;
margin: 1em 0;
}
/* Main Content Layout */
main {
display: grid;
grid-template-columns: 35% 65%;
gap: 3em;
margin-top: 3em;
background: white;
padding: 2em;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
/* Typography */
h2 {
font-size: 1.4em;
font-weight: 600;
margin-bottom: 1em;
color: #667eea;
border-bottom: 2px solid #667eea;
padding-bottom: 0.3em;
}
h3 {
font-size: 1.1em;
font-weight: 600;
margin-bottom: 0.5em;
color: #444;
}
/* Section Styling */
section {
margin-bottom: 2.5em;
}
#mainLeft {
border-right: 1px solid #e0e0e0;
padding-right: 2em;
}
/* Contact Links */
section a {
color: #667eea;
text-decoration: none;
transition: color 0.3s ease;
}
section a:hover {
color: #764ba2;
text-decoration: underline;
}
/* Icons */
i {
margin-right: 0.8em;
width: 20px;
text-align: center;
color: #667eea;
}
/* Lists */
ul {
list-style: none;
padding-left: 0;
}
li {
margin: 0.5em 0;
padding: 0.3em 0;
position: relative;
}
li:before {
content: "▸";
color: #667eea;
margin-right: 0.5em;
}
/* Work Experience */
.job, .project {
margin-bottom: 2em;
padding-bottom: 1.5em;
border-bottom: 1px solid #f0f0f0;
}
.company {
font-style: italic;
color: #666;
margin-bottom: 0.5em;
}
/* Responsive Design */
@media (max-width: 768px) {
main {
grid-template-columns: 1fr;
gap: 2em;
}
#mainLeft {
border-right: none;
border-bottom: 1px solid #e0e0e0;
padding-right: 0;
padding-bottom: 2em;
}
h1 {
font-size: 2.2em;
}
body {
padding: 10px;
}
}
/* Print Styles */
@media print {
body {
background: white;
color: black;
font-size: 12pt;
}
header {
background: none;
color: black;
box-shadow: none;
}
main {
box-shadow: none;
}
}
这份 CSS 的要点解读:
- CSS Grid 布局:
main { display: grid; grid-template-columns: 35% 65%; }直接对应 HTML 中左 35% 联系栏 / 右 65% 内容栏的双栏结构; - 现代配色与渐变页头:
header使用linear-gradient(135deg, #667eea, #764ba2)营造渐变品牌感,圆角与阴影形成卡片化视觉效果; - 交互反馈:链接
color的transition与:hover态配合,提供平滑的悬停过渡; - 响应式:
@media (max-width: 768px)断点把双栏折叠为单栏,#mainLeft的下边框替代原右边框,适配手机屏幕; - 打印友好:
@media print去掉渐变、阴影与背景色,让简历能被干净地打印或导出为 PDF——这正是"告别传统 PDF 简历"思路的延伸。
创建配置文件(codeswing.json)
{
"scripts": [],
"styles": []
}
从字段命名可以看出它的用途:CodeSwing 用它声明"代码工场"额外需要加载的 JS 脚本与 CSS 样式表。本例中两个数组都为空,是因为 style.css 已经通过 index.html 的 <link href="style.css" rel="stylesheet"> 被页面自身引用,无需在此重复声明。保持空数组即可让预览正确工作。
第六步:安装并配置扩展,实现实时预览
扩展能显著增强开发体验,对 Web 项目而言,CodeSwing 尤其有用——它把"编辑器 + 实时预览"整合在一起。
安装 CodeSwing:
- 点击活动栏中的扩展图标(🧩);
- 在市场搜索框中搜索 "CodeSwing";
- 在结果中选中 CodeSwing 扩展;
- 点击蓝色 "Install" 按钮完成安装。
安装后,编辑区会立刻出现简历网站的实时预览。你可以一边修改代码,一边看到页面随输入即时变化,无需手动刷新浏览器。这就是文档截图所呈现的效果——左侧是 index.html/style.css 源码,右侧 CodeSwing 预览面板实时渲染出简历成品(含 CONTACT、ABOUT、SKILLS 等区块):
增强后的界面能力:
- 分屏视图:一侧写代码、另一侧看效果;
- 实时更新:输入即反映变更,无需手动刷新;
- 可交互预览:可测试链接点击与交互行为;
- 移动端模拟:可直接在预览中测试响应式设计在不同屏幕宽度下的表现。
第七步:Git 版本控制与发布
网站完成后,用 Git 保存成果并使其上线:
- 点击活动栏中的源代码管理图标(🌿);
- 在 "Changes" 区审阅所有新建与修改过的文件;
- 点击每个文件旁的 "+" 图标暂存(Stage)变更;
- 填写描述性提交信息,例如:
- "Add complete resume website with responsive design"
- "Implement professional styling and content structure"
- 点击对勾(✓)完成提交与推送。
高效提交信息示例:
- "Add professional resume content and styling"
- "Implement responsive design for mobile compatibility"
- "Update contact information and project links"
💡 职业建议:良好的提交信息能帮你追踪项目演化过程,也向招聘方展示你的细致——这是雇主非常看重的品质。
提交完成后,可通过左上角的汉堡菜单(☰)跳回 GitHub 仓库查看已提交的成果。此刻你的简历网站已处于版本控制之下,随时可以部署或分享。
部署选项:让简历链接可被任何人访问
为把简历正式呈现给雇主,文档推荐以下托管方案:
GitHub Pages(推荐首选):
- 打开仓库的 Settings 页面;
- 滚动到 "Pages" 区块;
- 选择 "Deploy from a branch",并选定
main分支; - 站点将发布在
https://your-username.github.io/my-resume。
备选平台:
- Netlify:自动部署,支持自定义域名;
- Vercel:部署速度快,提供现代托管特性;
- GitHub Codespaces:带内置预览的云端开发环境。
成果自查与下一步增强
恭喜完成本实战!你的项目已经展示了四类能力:仓库管理(创建并组织了完整项目结构)、Web 开发(用现代 HTML5/CSS3 构建响应式网站)、版本控制(实现了带有效提交信息的 Git 工作流)、工具掌握(熟练运用 vscode.dev 界面与扩展体系)。职业层面的收获则是:一个可分享的在线链接、一份替代传统 PDF 的现代交互式简历、可被验证的硬技能证据,以及一个可持续迭代的基础。
继续深化,文档给出了两条增强路线:
技术增强方向:
- JavaScript 交互:加入平滑滚动或交互元素;
- 深色模式切换:实现主题切换以适应用户偏好;
- 联系表单:让潜在雇主可以直接与你沟通;
- SEO 优化:补充 meta 标签与结构化数据,提升搜索可见度。
内容增强方向:
- 项目作品集:链接到 GitHub 仓库与线上演示;
- 技能可视化:用进度条或评分体系呈现技能熟练度;
- 推荐语板块:收录同事或导师的推荐;
- 博客集成:增加博客区展示学习旅程。
GitHub Copilot Agent 模式进阶挑战
课程还为学有余力的读者准备了 Agent 模式挑战(使用 AI 的 Agent 模式配合完成):
- 添加深色/浅色主题切换,并配平滑过渡动画;
- 构建带动画进度条的交互式技能板块;
- 实现带表单验证的联系表单;
- 增加带悬停特效与弹窗(modal) 的项目作品集区块;
- 添加包含至少 3 篇学习心得示例文章的博客板块;
- 用合适的 meta 标签、结构化数据与性能优化提升 SEO;
- 通过 GitHub Pages 或 Netlify 部署增强版站点;
- 在 README.md 中用截图完整记录所有新功能。
挑战的最终目的是让增强版网站体现出响应式设计、JavaScript 交互与专业部署流程的完整掌握。
延伸挑战
- 📱 移动优先重构:用移动优先的思路配合 CSS Grid 与 Flexbox 整体重构;
- 🔍 SEO 专项优化:覆盖 meta 标签、结构化数据与性能优化;
- 🌐 多语言支持:引入国际化特性支持多种语言;
- 📊 接入分析:接入访问统计以跟踪访客互动并优化内容;
- 🚀 性能优化:在各项指标上争取满分成绩。
回顾与自学建议
围绕本实战,文档建议从三个层面持续自学:vscode.dev 进阶功能(官方文档系统讲述 Web 编辑能力)、Web 开发最佳实践(CSS Grid/Flexbox 响应式布局、WCAG 无障碍指南、Lighthouse 性能工具、SEO 基础),以及职业成长路径(用更多项目充实作品集、参与开源协作、把简历站分享到开发者社区获取反馈、持续跟踪技术趋势)。
下一步行动:把简历网站分享给朋友、家人或导师,收集反馈后迭代改进。请记住——这个项目不仅是一份简历,更是你作为 Web 开发者成长轨迹的直接证明,正如课程所强调的:你刚刚完成了一次完全在浏览器中发生、与行业日常完全一致的云端开发流程。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00


