news 2026/9/11 3:18:15

使用 Azure Static Web Apps 部署 Web-Dev-For-Beginners 中的 Terrarium 项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Azure Static Web Apps 部署 Web-Dev-For-Beginners 中的 Terrarium 项目

使用 Azure Static Web Apps 部署 Web-Dev-For-Beginners 中的 Terrarium 项目

【免费下载链接】Web-Dev-For-Beginners24 Lessons, 12 Weeks, Get Started as a Web Developer项目地址: https://gitcode.com/GitHub_Trending/we/Web-Dev-For-Beginners

Terrarium 是 Web-Dev-For-Beginners 课程中一个经典的实战项目:用纯 HTML、CSS 与原生 JavaScript 构建一个可拖拽植物的虚拟植物园,共分三课完成。本文以仓库内 Terrarium 部署指南 为核心,完整讲解如何将这一纯前端项目通过Azure Static Web Apps免费发布到公网,并深入结合 solution 源码 说明部署配置背后的原理,让读者掌握"静态站点托管"这一 Web 开发者必备技能。

为什么 Terrarium 适合静态托管

在动手部署前,先明确一个关键判断:Terrarium 是一个纯静态(无后端)应用,这正是 Azure Static Web Apps 的最佳适用场景。

从仓库源码可以确认这一点。整个 3-terrarium/solution 目录只有四类文件:

  • index.html——页面结构,包含导航栏、植物陈列区与玻璃罐容器;
  • style.css——全部视觉样式,包括用 CSS 绘制的玻璃罐(jar-topjar-wallsjar-bottomdirt等)与光影反射;
  • script.js——全部交互逻辑,利用 Pointer Events 与闭包实现 14 株植物的拖拽;
  • images/——plant1.pngplant14.png共 14 张植物素材。

没有任何服务端代码、数据库或密钥。JavaScript 只通过document.getElementById()操作 DOM 并改写元素样式,script.js 中可以看到 14 次dragElement(...)调用,全部逻辑都在浏览器本地完成。这样的应用无需服务器动态渲染,交给静态托管服务后,访问者获得的就是"原样的文件 + 全速 CDN 分发"。

部署前置条件

开始部署前需要准备:

  1. 一个 GitHub 账号:Azure Static Web Apps 的自动构建与发布机制依赖 GitHub 仓库(仓库 fork 后会自动生成.github工作流文件,详见下文);
  2. 本仓库的 fork:将 Web-Dev-For-Beginners 仓库 fork 到自己的账号下,从而获得可被 Azure 授权访问、可写入的副本;
  3. 一个 Azure 账号:用于进入创建向导并承载托管资源,首次使用可关注其免费层的额度适用范围(具体以 Azure 官方定价为准,此处不展开)。

提示:如果你只想本地体验项目效果,无需任何部署——直接用浏览器打开 3-terrarium/solution/index.html 即可运行。

三步完成部署

原文档给出的部署流程精炼为三步,下面逐一展开并补充每一步的细节与原理。

第 1 步:Fork 本仓库

进入本仓库首页,点击右上角的Fork,将仓库复制到自己的 GitHub 账号下。

这一步的意义在于:Azure Static Web Apps 需要在你的仓库中写入一个 GitHub Actions 工作流文件(.github/workflows/下的配置),只有你拥有写权限的 fork 仓库才能做到。这也是为什么不能直接对只读的上游仓库执行部署。

第 2 步:点击 Deploy to Azure 按钮

在 Terrarium 部署指南 中,原文档放置了一个Deploy to Azure品牌按钮([![Deploy to Azure](https://aka.ms/deploytoazurebutton)](https://portal.azure.com/#create/Microsoft.StaticApp))。

点击后会自动跳转到 Azure 门户的"创建 Static Web App"向导页面,并预填了创建该类型资源所需的部分参数,省去在门户中逐项查找入口的步骤。这是微软为开源项目提供的标准化部署入口模式。

第 3 步:跟随向导创建应用

进入向导后,按文档要求完成三件关键配置:

3.1 设置 App root

将 App root(应用根目录)设置为/solution或你代码库的根目录。

这是整个部署中最重要的参数。它的含义是:告诉 Azure 构建服务"网站的入口文件index.html在哪里"。对本仓库而言,可直接使用solution子目录,即 3-terrarium/solution——因为该目录下恰好平铺着index.htmlstyle.cssscript.jsimages/,是完整的可发布单元。

如果你把自己的 Terrarium 代码放在了 fork 仓库的根目录,则设为/(根目录)即可。该参数最终会写入自动生成的 GitHub Actions 工作流中,作为app_location字段。

3.2 跳过 API 配置

此应用没有 API,因此可以跳过 API 配置。

Azure Static Web Apps 支持在同一托管下附带无服务器 API(Azure Functions)。由于 Terrarium 是纯前端应用,向导中的 API location(API 位置)一栏留空即可。这从源码上也能得到印证:solution目录中不存在任何api/子目录或函数代码。

3.3 自动生成的.github文件夹

一个.github文件夹会被自动创建,用于帮助 Azure Static Web Apps 构建并发布你的应用。

点击创建后,Azure 会在你的 fork 仓库中自动写入 GitHub Actions 工作流。其大致作用链路为:

  1. 工作流文件被写入.github/workflows/目录;
  2. 每次向托管分支推送代码,GitHub Actions 都会运行"构建"任务;
  3. 构建服务依据你在向导中填写的App root找到静态文件;
  4. 产物被发布到 Azure Static Web Apps 的全球边缘网络,并分配一个新的公网 URL。

整个"提交代码 → 自动构建 → 自动发布"的过程是 Azure Static Web Apps 的核心价值:开发者只关心推送代码,发布是自动完成的。

部署完成后的验证与体验

部署成功后,你会获得一个 Azure 分配的 HTTPS 公网地址。打开它,你应该看到与本地运行 3-terrarium/solution/index.html 完全一致的效果:

  • 页面左右两侧各陈列 7 株植物;
  • 鼠标按住任意植物即可拖拽,植物会"飞进"中间的玻璃罐;
  • 玻璃罐的透明度、高光与土壤层均由 CSS 实现。

这段交互体验背后的原理,来自 script.js 的闭包设计:dragElement外层函数为每株植物创建独立的pos1~pos4私有坐标变量,内层pointerDragelementDragstopElementDrag通过闭包共享并持久化这些状态,从而实现互不干扰的多元素拖拽。部署到静态托管后,这段逻辑以原样静态文件的形式被分发,浏览器加载后即完成全部执行。

进阶:修改后如何更新线上版本

静态托管的更新链路非常简单:

  1. 在本地修改 3-terrarium/solution 下的index.htmlstyle.cssscript.js
  2. 提交并推送(push)到 fork 仓库的托管分支;
  3. 等待 GitHub Actions 工作流自动完成构建与发布;
  4. 刷新线上 URL 即可看到更新。

这是"GitOps"式发布的最简实践:仓库即真相,推送即发布,无需登录服务器、无需手动上传文件。

从部署到更深层的理解

部署只是项目交付的最后一公里。如果你想把 Terrarium 从"能跑"推进到"懂原理",仓库内的三节课程是完整的知识链路:

  • Part 1: 认识 HTML——学习 DOCTYPE、语义化标签、<div>容器与<img>布局,搭建页面骨架;
  • Part 2: 认识 CSS——学习层叠、选择器、定位体系,并用百分比尺寸与透明度"画"出玻璃罐;
  • Part 3: DOM 操作与 JavaScript 闭包——通过 Pointer Events 与闭包实现拖拽交互。

理解这三课,你就能明白为何部署一个 Terrarium 只需"静态文件 + 静态托管",也能举一反三地将同样的部署流程迁移到你自己的任何纯前端项目(个人主页、作品集、小型工具站)上。

【免费下载链接】Web-Dev-For-Beginners24 Lessons, 12 Weeks, Get Started as a Web Developer项目地址: https://gitcode.com/GitHub_Trending/we/Web-Dev-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 3:17:11

分治算法与合并排序:原理、实现与优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 3:17:04

基于BERT+BiLSTM+CRF与知识图谱的医生推荐系统实践

简介&#xff1a;一套面向毕业设计场景的基于BERTCRFBiLSTM知识图谱医生推荐系统源码包&#xff0c;包含完整的Python项目、说明文档与配套数据集。资源针对计算机相关专业正在准备毕设或需要项目实战练习的同学&#xff0c;既可作为毕业论文核心系统&#xff0c;也能用于课程设…

作者头像 李华
网站建设 2026/9/11 3:14:43

电机NVH仿真全流程:从模态分析到瀑布图生成

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 3:09:55

零成本本地AI短剧制作全流程:从一句话到成片

从“一句剧本”到“一部短剧”&#xff0c;这句话听起来像是广告语&#xff0c;但这个周末我真把它跑通了——而且是全程在本地电脑上完成&#xff0c;不花一分钱API费用。我用一句话当起点&#xff1a;“深夜加班的程序员&#xff0c;发现自己写的代码正在一步步删除整座城市的…

作者头像 李华
网站建设 2026/9/11 3:09:44

一条命令跑起 Android 模拟器:Docker-Android 完整使用教程

一条命令跑起 Android 模拟器:Docker-Android 完整使用教程 【免费下载链接】docker-android Android in docker solution with noVNC supported, video recording and mcp server 项目地址: https://gitcode.com/GitHub_Trending/do/docker-android 想在服务器或 CI 机…

作者头像 李华