是否可以将 Angular 2 Dart 前端与 Node.js 后端一起使用?

Is it possible to use an Angular 2 Dart frontend with a Node.js backend?

我正在计划我将在我的网络应用程序中使用的工具。我想使用 Node.js 作为服务器后端,因为它有一个对我特别有用的模块。但是,我还想在前端使用 Angular 2 (Dart) 和 Polymer.dart。对不起,如果答案应该是显而易见的,但是如何将我的应用程序的这两部分无缝地(并且没有转换工具)结合起来,就像在 MEAN 堆栈中通常做的那样,因为 Dart 不直接与 JS 兼容?

目前没有任何可用的教程或资源可以演示此组合。在我看来,更常见的用例是让 Dart 也充当服务器后端。

如何为 Dart 客户端应用程序提供服务

客户端和服务器可以是两个完全不相互绑定的不同应用程序。唯一需要的连接是,服务器可以解释客户端发送的请求,并且客户端可以解释响应。

构建的 Dart 客户端应用程序类似于静态 HTML,可以由任何 HTTP 服务器提供服务。我不知道 Node.js,但我假设它有一个提供静态内容的目录。这是放置 Dart 客户端应用程序的构建输出的地方。

Dart客户端与Node.js服务器之间的通信

为了客户端和服务器能够通信,Dart 需要以服务器期望的形式发送请求。您可以使用 REST、WebSocket、Ajax 和 JSON 主体或协议缓冲区。 在客户端和服务器上使用相同语言的一个优点是,序列化为有线协议格式或从有线协议格式反序列化的模型 类 和 serialization/deserialization 代码可以在客户端和服务器之间共享。在这种情况下这是不可能的。 Dart 团队正在努力从 Dart 生成 JS 和 TS,这可能最终会解决这个问题。如果您使用协议缓冲区,这也不适用,因为您可以从相同的原型文件生成两种语言的代码。

开发要求

为了开发,您必须考虑 "need" 两台服务器。 Node.js 服务器是您应用程序的实际服务器,也是 pub serve 用于快速更改和重新加载周期(以避免在每次更改后构建到 JS)。 这通常由代理完成(例如可以是 Nginx 或使用 shelf 和 shelf_proxy 包的自定义 Dart 脚本),它将对 Dart 源文件的请求转发到 pub serve 并将 Rest/Ajax/WebSocket 请求转发到您的 Node.js 服务器。