云端一体化部署工具 CloudBase Framework (简称 CBF)自开源发布以来迭代迅速,不仅支持 Vue、React 等前端框架,也支持 Nuxt 等 SSR 框架,基于 Node 开发的应用如 Express、Koa 等也可以一键托管。除此之外,借助底层 Serverless 云应用的能力,也可以部署其他后端的应用(PHP、Java、Go 等),值得一提的是可以部署 Dart Server,可以配合 Flutter 实现 Dart 语言的云端一体化,这也是国内云厂商对 Dart 语言和生态的一大补充。
现在,CloudBase Framework 已支持部署Deno,可能是首个支持部署Deno的前后端一体化部署工具!下面就来介绍下 Deno 插件的开发流程。
Deno是基于V8引擎和Rust语言所创建的JavaScript**、TypeScript运行环境**,由Node.js的原始开发者Ryan Dahl所创造,目前 github star 66.7k+。
(来自 justjavac 大神的点赞)
开发准备
云开控制台:https://console.cloud.tencent.com/tcb
当 CloudBase Framework 正式推出后,一直觉得 Deno 和云开发应该是绝配,所以尝试为其贡献了 Deno 插件与模板,并调研感受了下 Deno 开发过程。
相关产出:
- cloudbase-framework deno 插件 framework-plugin-deno
- 简易在线示例
- 简易在线示例代码 deno 模板
开始着手 deno 插件开发时,CloudBase Framework 插件开发的文档暂缺,不过好在其他插件代码清晰易懂,可以参考其他插件进行开发。
考虑到 deno 运行状态,应该就是需要打通容器部署环节,于是根据 CloudBase Framework 作者建议,参考了 framework-plugin-node 和 framework-plugin-dart 两款插件的代码来进行开发。
整个 CloudBase Framework deno 插件开发,主要需要编写代码的文件就 3 个:
调研基本示例
由于需要进行容器部署,所以在 dockerhub 找了个 docker image aredwood/deno 作为参考镜像进行改造。来编写 CloudBase Framework 插件所需 的 Dockerfile 。
为方便验证 Dockerfile 和 deno 应用如何整合,构建了一个简单项目来验证镜像构建流程:deno-docker
deno 生态有一个类似 node koa 的应用框架 oak 直接使用它的官方示例,存为一个 entry.ts
,很快就完成了本地示例的搭建。执行示例也非常简单 deno run entry.ts
。
插件开发
接下来考虑如何部署的问题,开始开发 CloudBase Framework deno 插件,src/index.ts
主要需要提供一个插件类给 CloudBase Framework 命令行组件使用。这个类需要继承自 @cloudbase/framework-core
的 Plugin。
参考其他插件写法,Plugin 是抽象类,需要自行实现抽象类的各个方法。其中在 build 方法中,需要构建中间产物,主要是编译过后的 Dockerfile 和需要包装到镜像的文件,然后通过 framework-plugin-container
提供 docker container 构建产物。
import {
plugin as ContainerPlugin } from '@cloudbase/framework-plugin-container';
/*** code:other ***/
class