Dart以其在Flutter中的使用和在移动应用中的部署而闻名,但一个名为Dart Frog的新框架允许开发人员在后端利用Dart——这是一家专门从事Flutter应用的咨询公司Very Good Ventures所创立的。VGV最著名的是Hamilton应用程序——没错,是音乐应用程序,这是首批在谷歌之外使用Flutter构建的商业应用程序之一。
VGV前首席工程师Felix Angelov表示,最终,后端的问题会影响移动应用程序,因此开发人员管理后端和前端非常重要。
“如果你有一个非常慢的后端或一个没有很好记录的后端,开发人员很难与该后端进行交互,这会破坏用户体验,或者反映在你交付的最终产品中。”Angelov表示,“Dart Frog是我们探索的方式,我们可以基本上使用与构建移动应用程序完全相同的编程语言和技术堆栈,而Flutter位于后端。”
为什么Dart用在后端?
Dart是一种通用语言,经过优化,可以在任何平台上创建快速应用程序。谷歌已经在后端使用了Dart——它的包管理器pub.dev允许开发者上传可以拉入项目的包,已经在后端内嵌在Dart中。Angelov说,后端广泛使用的问题是,工具“根本不存在”。
“这并不是因为语言没有能力。只是因为在所有底层组件之上没有足够的工具和抽象来让它更吸引人。”
Dart可以在服务器上运行,生成原生可执行文件,或者编译成JavaScript和机器代码,他补充道。
Angelov说:“Dart非常酷,因为它是一种灵活的语言,可以用于许多目标,我认为这就是它的特殊之处。”
此外,随着Flutter越来越受欢迎,将有更多的开发人员希望在后端使用Dart。
Dart Frog:前端移动到后端
Dart Frog仍处于幼年期。尽管开源框架现在是稳定的,但根据Angelov的说法,VGV的团队正在努力于今年某个时候发布1.0版本,目标是第三季度。VGV有一个功能路线图,它希望将其作为V1.0版本的一部分添加。Angelov说,目标是让开发者体验尽可能简单,并保持框架的轻量级。这就是他将Dart Frog与ServerPod等产品区别开来的原因——ServerPod是一个开源、可扩展的应用服务器,可用于在Dart中构建API。Angelov说,ServerPod结合了用于缓存的Redis、用于数据库的Postgres,以及对“可能需要或不需要的各种东西”的迁移支持。
他说:“尽管我们对Dart Frog的理念是:这是一个非常简单的核心,一组功能,无论什么情况下,每个人都需要,然后我们正在开发单独的模块,供稍后添加。Dark Frog主要是,如何才能使用Dart快速创建端点,然后为开发人员提供一些其他实用程序,使代码易于测试,从而实现热重载。”
热重载是Flutter最流行的功能之一。它确保实时更新所做的任何更改。这对于团队协作开发应用程序非常重要。
Angelov说,Dart Frog还使开发人员可以轻松地在云中部署API,以便与前端应用程序进行对话。
“你基本上可以在几分钟内生成一个新的Dart Frog项目,定义一个前端应用程序可以与之通信的几个端点,然后部署它。我们为现有的流行云提供商(如Google Cloud、AWS或Digital Ocean)提供了一些部署指南。”
VGV使用Dart Frog的一种方式是与客户公司开发和/或维护的遗留系统集成。这种方法允许公司逐步淘汰遗留系统,而不必破坏前端,这可能是一个真正的问题。当Angelov在宝马工作时,他们迁移到Flutter,作为迁移的一部分,必须重做API。
Angelov说:“如果使用Dart Frog这样的东西,我们可以创建移动应用程序,可以为前端层创建后端,比如中间件层,与遗留系统通信,然后就可以做各种事情,比如优化和缓存。我们基本上完全控制了移动应用程序和后端之间的通信渠道。前端不知道(就像隐藏在一个黑盒子后面)也不关心应用程序的实现细节。”
最终,Dart Frog可以部署一个代理,比如“对数据进行规范化和转换的中间件”。他补充道,这样的层还将支持许多其他优化。VGV使用这种方法是因为客户通常不允许顾问访问更改遗留系统,这将需要大规模更改和高风险。
他说:“通过采用这种模式,在客户端和遗留系统之间放置中间件,给了开发人员更多的控制权,并允许我们在前端和后端之间共享大量代码。这样,我们就不必在每次对遗留系统进行更改时都向App Store推送新版本。我们只需在中间件中修复这些更改即可。而且客户最终也不会在意——只要我们保持相同的合同,每个人都会很高兴。”
他补充道:“这真的是最大的好处之一,让我们的开发人员能够控制合同。”
此外,Dart Frog将生成一个Docker文件,该文件可以部署在任何支持容器的地方。
Dart Frog即将登场
Dart Frog有计划支持更多的云,特别是针对Heroku和Vercel的请求。正在讨论的一个选项是添加deploy命令,以便更容易地部署到用户想要的任何云提供商。
他说:“这是目前摩擦最大的一点。不是所有人都知道Docker是如何工作的,也不是每个人都知道如何将Docker容器上传到谷歌云。因此,可能有很大的空间来优化部署过程,只需单击或单击一个命令即可部署到某些云提供商。”
VGV希望做的事情之一是直接为IDE提供工具,例如Visual Studio代码和Android Studio。
他说:“我们希望直接从你的IDE中提供工具,让你可以在Dart Frog中创建一个新的端点,也可以直接从IDE中附加调试器,或者直接从IDE生成一个新项目。你不必打开一个新终端,运行一些命令或其他什么。”
Dart Frog是麻省理工学院授权的,Angelov鼓励其他人在1.0版发布之前尝试它。
“这就是我们的目标:轻便、快速、模块化,这样你就可以添加任何需要的东西。我们尝试用Dart Frog尽可能多地照顾你的复杂性,并提供与Flutter尽可能相似的开发体验。你使用Flutter获得的所有好处,如调试、开发工具等,我们尝试用 Dart Frog提供相同的东西。”