背景

最近在浏览微软的文档的时候发现,微软喜欢用Hugo这个文档框架,有些技术产品的文档页面就用Hugo来做的,同时搭配Github + Azure Static Web Apps Service这个组合来完成自动构建和发布。

刚好我也有个和Hugo类似的静态前端框架在用,结果还真的在Azure Static Web Apps Service支持的范围内,索性就尝鲜一试。

什么是Azure静态网站应用服务(Azure Static Web Apps)

Azure Static Web Apps是一种服务,可从代码存储库自动生成完整的堆栈Web应用,并将其部署到Azure。

使用下来通俗的感受就是,基于Git,发布你的静态SPA到Github上,然后会自动触发Github的Actions进行流程构建,在Github构建流程中会编译SPA,并且最终发布到Azure的静态应用中去,加上自定义域名,也就实打实的一个静态网站了,应该特别适合一些技术产品的网站或者文档中心来着。

基本概念

Azure静态Web应用的工作流适用于开发人员的日常工作流。基于代码更改生成并部署应用。

当你创建Azure Static Web Apps资源时,Azure会直接与GitHub或Azure DevOps交互以监视你选择的分支。每次你向受监视的分支推送提交或接受拉取请求时,系统都会自动运行一次生成,并将你的应用和API部署到Azure。

通常使用不需要服务器端渲染的库和框架(例如,AngularReactSvelteVueBlazor)来生成静态Web应用。这些应用包括构成应用程序的HTML、CSS、JavaScript和映像资产。对于传统Web服务器,这些资产与任何所需的API终结点一起由单个服务器提供。

使用静态Web应用时,静态资产与传统Web服务器分离,由分布在世界各地的服务器端提供。由于文件在物理上离最终用户更近,这种分布使文件提供的速度更快。此外,API终结点使用无服务器体系结构,无需将完整的后端服务器组合在一起。

Azure Functions是一种无服务器解决方案,可以使用户减少代码编写、减少需要维护的基础结构并节省成本。无需担心部署和维护服务器,云基础结构提供保持应用程序运行所需的所有最新资源。

主要功能

  • 适用于HTML、CSS、JavaScript和映像等静态内容的Web托管。
  • 由Azure Functions提供的集成API支持。
  • 一流的GitHub和Azure DevOps集成,其中的存储库更改会触发生成和部署。
  • 全球分布的静态内容,使内容更接近你的用户。
  • 可自动续订的免费SSL证书。
  • 自定义域为应用提供品牌自定义。
  • 调用API时使用反向代理的无缝安全模型,这不需要配置CORS。
  • 身份验证提供程序与Azure Active Directory、Facebook、Google、GitHub和Twitter集成。
  • 可自定义的授权角色定义和分配。
  • 后端路由规则,使你能够完全控制所提供的内容和路由。
  • 生成的临时版本由拉取请求提供支持,在发布前提供站点的预览版本。

可对静态Web应用执行的操作

  • 使用Angular、React、Svelte、Vue等JavaScript框架和库构建新式Web应用程序,或使用带Azure Functions后端的Blazor创建WebAssembly应用程序。
  • 使用Gatsby、Hugo、VuePress等框架发布静态站点。
  • 使用Next.js和Nuxt.js等框架部署Web应用程序。

安装Visual Studio Code扩展

通过VSC的扩展菜单搜索Azure Static Web Apps关键词安装即可。

实在找不到就用下面的地址:

https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps

安装完成之后,VSC的左侧菜单会多出一个Azure图标。

准备好Github和Azure账号

GitHub账号就不用多说了,至于Azure账号,比较推荐的就是走Free Trial就行了,但是需要信用卡这是硬伤哈。

https://azure.microsoft.com/free

需要登录Azure和GitHub。 如果尚未从Visual Studio Code登录到Azure和GitHub,该扩展将在创建过程中提示你登录到这两个站点。

创建静态网站应用

回到Visual Studio Code的左侧Azure菜单,点击Static Web Apps旁边的加号

会弹出创建一个静态网站应用的六个步骤,第一步先输入应用名称

第二步,选中静态应用对应的SPA框架。

设置你的SPA程序的代码路径,默认是/,但是对有些代码来说,比如丢在/src/中了,那就要对应的修改。

接下来会让你创建一个Azure Function的目录,如果你把默认的api删掉就可以跳过这个创建,这里我们不需要就暂时跳过。

接下来就是设定SPA的静态输出目录了,我们知道对vuepress来说,默认就是.vuepress/dist,如果你改了,这里就需要跟着改。

再接着,就是让你选Azure的区域了,这决定了你这个会被创建在Azure的哪个片区,就中国而言,当然东亚就是我们要的片区。

接下来就等着完成一系列的创建吧。

创建成功之后,可以点击弹窗消息中的Browse Website即可。

我们查看这个项目的Github Action会发现,完成了一个ci: add Azure Static Web Apps workflow file的流程。

其核心就是添加了一个yml文件。

剩下的就简单了,只要你再次编辑SPA里面的东西,并且git提交到Github之后,它就会自动构建和发布。

你看是不是把Github+Azure完美的结合起来了,肯定又是微软用来圈钱的新武器。

如果不需要这个应用,也可以在VSC那个Azure扩展中,一键删除。

设置自定义域名

默认创建好静态网站应用后会自动分配一个二级域名,这个大家用过Azure都知道,我们只需要在自己域名添加cname到这个域名就可以添加自定义域名绑定。

要绑定新自定义域名,只要点击Azure Portal中该静态Web应用的自定义域名-添加按钮即可。

费用

目前这个服务还是预览版,预览版期间免费。

参考

尝鲜一试,Azure静态网站应用服务(Azure Static Web Apps) 免费预览,协同Github自动发布静态SPA的更多相关文章

  1. 存储账户静态网站与Azure CDN

    背景 把静态网站或文件托管在对象存储上,有很多可能很多好处,比如说:可以节省成本,因为相对虚机更便宜:性能更优,因为可以依赖于对象存储本身的高吞吐以及 CDN 的:更好的高可用性,因为也可以依赖于对象 ...

  2. MWeb 生成静态网站&博客

    MWeb 生成静态网站 & 博客 MWeb 的静态网站分类 在 MWeb 的文档库中,有两种分类,一种是普通分类,另一种就是静态网站分类了.你可以直接新增一个静态网站分类,也可以在普通分类的顶 ...

  3. 宣布正式发布 Biz Talk Services、Azure Active Directory 和 Traffic Manager, 同时发布 Azure Active Directory 高级版预览

    除经济优势之外,云计算还在可转化为竞争优势的应用程序开发方面提供了更大的灵活性.我们很高兴看到每天创建的新 Windows Azure 订阅超过 1000 个,更令人兴奋的是,有一半客户使用价值更高的 ...

  4. Github+Hexo搭建静态博客

    开始 在安装hexo之前,必须确认你已经安装了Node.js和Git,并且注册了一个Github账号. 1.创建Github仓库 1) 仓库名为xxx.github.io 创建一个以"用户名 ...

  5. Java | 静态嵌套类(Static Nested Class)

    前言 本文内容主要来自 Java 官方教程中的<嵌套类>章节. 本文提供的是 JDK 14 的示例代码. 定义 静态嵌套类(Static Nested Class),是 Java 中对类的 ...

  6. Azure 项目构建 – 托管静态网站

    本课程主要介绍了如何在 Azure 平台上快速构建和部署基于 Azure Web 应用的静态托管网站, 实践讲解如何使用 Azure 门户创建 Web 应用, 部署静态网站源代码,设置自定义域名等. ...

  7. 在Azure Storage 托管HTTP静态网站

    本文演示了在Azure Storage托管HTTP静态网站. 注意:HTTP已经不建议使用. 创建Azure StorageV2 存储账户 账户类型选择“StorageV2(通用版V2)”: 本例中, ...

  8. Azure CDN 为静态网站创建内容分发网络

    一,引言 最近刚刚接触 Edi.Wang 的 Moonglade 博客系统,正好这套系统中有使用到 Azure CND (内容分发网络),那就学习学习.那么今天就尝试利用 Azure CDN 来发布静 ...

  9. 微信小程序“满月”:尝鲜之后你还用过它吗?

    距离 2017 年 1 月 9 日微信小程序上线,整整过去了一个月时间.和互联网时代每天出现的众多新鲜事物相似,小程序甫一诞生,立即占据了各大科技媒体网站头屏并引起社交圈的兴奋讨论.由于背靠微信,纷纷 ...

随机推荐

  1. [bug] java.sql.SQLException: Unknown initial character set index '255' received from server. Initial cl...

    参考 https://www.jianshu.com/p/d86de6463cbd

  2. [bug] Importing maven project 卡在%9不动

    参考 Importing maven project 卡在%9不动 https://blog.csdn.net/weixin_43197380/article/details/89220337

  3. 攻防世界(七)ics-06

    攻防世界系列:ics-06 1.打开题目 很LiuPi的样子,根据题目提示点开报表中心(其他的点开没什么变化) 注意到URL中有?id=1,测试其他数值无果 3.抓包对id爆破 设置1-10000,爆 ...

  4. LTC4020锂电池充电模块开发记录

    前期不断的查找手册 翻译LTC4020的英文手册 同时在论坛上找帖子 参照比较多的帖子如下: http://adi.eefocus.com/module/forum/forum.php?mod=vie ...

  5. Mybatis Plus 多租户架构实现(完美教程)

    一.背景介绍 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性. 简单讲 ...

  6. CodeGen API分析

    CodeGen API分析 作为使用命令行界面的替代方法,开发人员可以使用核心CodeGen环境编写自定义工具或实用程序来生成代码,从而将CodeGen更紧密地集成到开发环境中. 为了实现这一点,Co ...

  7. Timer定时器开发

    Timer定时器开发 定时器的作用是不占线程的等待一个确定时间,同样通过callback来通知定时器到期. 参考:https://github.com/sogou/workflow 定时器的创建 同样 ...

  8. CVPR2020:基于自适应采样的非局部神经网络鲁棒点云处理(PointASNL)

    CVPR2020:基于自适应采样的非局部神经网络鲁棒点云处理(PointASNL) PointASNL: Robust Point Clouds Processing Using Nonlocal N ...

  9. https://www.jianshu.com/writer#/notebooks/164311/notes/88906048/preview

    什么是 webassembly 在 2019 年 12 月之前,如果你要编写一个web页面,那一定离不开 html.css.js 这三个好兄弟.在 2019 年 12 月之后 W3C 宣布 webas ...

  10. 在spring配置文件中引入外部properties配置文件 context:property-placeholder

    在spring的配置文件中,有时我们需要注入很多属性值,这些属性全都写在spring的配置文件中的话,后期管理起来会非常麻烦.所以我们可以把某一类的属性抽取到一个外部配置文件中,使用时通用spring ...