首页
/ Web-Dev-For-Beginners 项目实战:用 VSCode.dev 从零构建、样式化并部署个人简历网站

Web-Dev-For-Beginners 项目实战:用 VSCode.dev 从零构建、样式化并部署个人简历网站

2026-09-07 14:06:08作者:鲍丁臣Ursa

本文是 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 仓库

真实世界的项目都始于良好的仓库规划,本步为整个项目打下版本控制与组织基础:

  1. 打开浏览器访问 GitHub 官网并登录你的账号;
  2. 点击右上角绿色的 "New" 按钮或 "+" 图标;
  3. 将仓库命名为 my-resume(也可以选择更个人化的名字,如 john-smith-resume);
  4. 填写简短描述:"Professional resume website built with HTML and CSS";
  5. 可见性选择 Public(公开),这样简历才能被潜在雇主访问;
  6. 勾选 "Add a README file",为项目生成初始说明;
  7. 点击 "Create repository" 完成创建。

💡 仓库命名建议:尽量使用能清晰表达项目用途的描述性、专业名称。无论是分享给招聘方,还是在作品集评审时,好名字都能让对方一眼看懂项目目标。

第二步:在 GitHub 上初始化项目结构

VSCode.dev 需要仓库中至少存在一个文件才能打开它。因此我们先直接在 GitHub 网页上创建主 HTML 文件,再切换到 Web 编辑器继续开发:

  1. 在新仓库页面点击 "creating a new file" 链接;
  2. 文件名输入 index.html
  3. 粘贴如下最小化 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>
  1. 填写提交信息(commit message):"Add initial HTML structure";
  2. 点击 "Commit new file" 保存。

在 GitHub 网页上创建 index.html 初始文件

这步初始化达成了什么:

  • 建立规范的 HTML5 文档结构,为后续语义化内容打好基础;
  • 引入 viewport meta 标签,为响应式设计铺路——它会告诉移动浏览器按设备宽度渲染页面;
  • 设置描述性 <title>,它将显示在浏览器标签页上;
  • 为专业内容组织创建了起点。

第三步:在 VSCode.dev 中打开你的项目

仓库骨架就绪后,进入主开发环节。在浏览器新标签页中:

  1. 访问 vscode.dev;

  2. 在欢迎屏点击 "Open Remote Repository"

  3. 从 GitHub 复制仓库链接并粘贴到输入框:

    https://github.com/your-username/my-resume

    请将 your-username 替换为你的真实 GitHub 用户名

  4. 按 Enter 键加载项目。

成功标志:侧边栏 Explorer 中出现项目文件列表,index.html 可以在主编辑区直接编辑。

项目在 vscode.dev 中成功加载,资源管理器显示 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) 营造渐变品牌感,圆角与阴影形成卡片化视觉效果;
  • 交互反馈:链接 colortransition: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:

  1. 点击活动栏中的扩展图标(🧩);
  2. 在市场搜索框中搜索 "CodeSwing";
  3. 在结果中选中 CodeSwing 扩展;
  4. 点击蓝色 "Install" 按钮完成安装。

安装后,编辑区会立刻出现简历网站的实时预览。你可以一边修改代码,一边看到页面随输入即时变化,无需手动刷新浏览器。这就是文档截图所呈现的效果——左侧是 index.html/style.css 源码,右侧 CodeSwing 预览面板实时渲染出简历成品(含 CONTACT、ABOUT、SKILLS 等区块):

安装 CodeSwing 扩展后,左侧源码与右侧实时预览分屏显示

增强后的界面能力:

  • 分屏视图:一侧写代码、另一侧看效果;
  • 实时更新:输入即反映变更,无需手动刷新;
  • 可交互预览:可测试链接点击与交互行为;
  • 移动端模拟:可直接在预览中测试响应式设计在不同屏幕宽度下的表现。

第七步:Git 版本控制与发布

网站完成后,用 Git 保存成果并使其上线:

  1. 点击活动栏中的源代码管理图标(🌿);
  2. 在 "Changes" 区审阅所有新建与修改过的文件;
  3. 点击每个文件旁的 "+" 图标暂存(Stage)变更;
  4. 填写描述性提交信息,例如:
    • "Add complete resume website with responsive design"
    • "Implement professional styling and content structure"
  5. 点击对勾(✓)完成提交与推送。

高效提交信息示例:

  • "Add professional resume content and styling"
  • "Implement responsive design for mobile compatibility"
  • "Update contact information and project links"

💡 职业建议:良好的提交信息能帮你追踪项目演化过程,也向招聘方展示你的细致——这是雇主非常看重的品质。

提交完成后,可通过左上角的汉堡菜单(☰)跳回 GitHub 仓库查看已提交的成果。此刻你的简历网站已处于版本控制之下,随时可以部署或分享。

部署选项:让简历链接可被任何人访问

为把简历正式呈现给雇主,文档推荐以下托管方案:

GitHub Pages(推荐首选):

  1. 打开仓库的 Settings 页面;
  2. 滚动到 "Pages" 区块;
  3. 选择 "Deploy from a branch",并选定 main 分支;
  4. 站点将发布在 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 模式配合完成):

  1. 添加深色/浅色主题切换,并配平滑过渡动画;
  2. 构建带动画进度条的交互式技能板块;
  3. 实现带表单验证的联系表单;
  4. 增加带悬停特效与弹窗(modal) 的项目作品集区块;
  5. 添加包含至少 3 篇学习心得示例文章的博客板块;
  6. 用合适的 meta 标签、结构化数据与性能优化提升 SEO;
  7. 通过 GitHub Pages 或 Netlify 部署增强版站点;
  8. 在 README.md 中用截图完整记录所有新功能。

挑战的最终目的是让增强版网站体现出响应式设计、JavaScript 交互与专业部署流程的完整掌握。

延伸挑战

  • 📱 移动优先重构:用移动优先的思路配合 CSS Grid 与 Flexbox 整体重构;
  • 🔍 SEO 专项优化:覆盖 meta 标签、结构化数据与性能优化;
  • 🌐 多语言支持:引入国际化特性支持多种语言;
  • 📊 接入分析:接入访问统计以跟踪访客互动并优化内容;
  • 🚀 性能优化:在各项指标上争取满分成绩。

回顾与自学建议

围绕本实战,文档建议从三个层面持续自学:vscode.dev 进阶功能(官方文档系统讲述 Web 编辑能力)、Web 开发最佳实践(CSS Grid/Flexbox 响应式布局、WCAG 无障碍指南、Lighthouse 性能工具、SEO 基础),以及职业成长路径(用更多项目充实作品集、参与开源协作、把简历站分享到开发者社区获取反馈、持续跟踪技术趋势)。

下一步行动:把简历网站分享给朋友、家人或导师,收集反馈后迭代改进。请记住——这个项目不仅是一份简历,更是你作为 Web 开发者成长轨迹的直接证明,正如课程所强调的:你刚刚完成了一次完全在浏览器中发生、与行业日常完全一致的云端开发流程。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.13 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.8 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
529
593
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
916
1.83 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.58 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.35 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.01 K
515
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
388