我正在计划我将在我的网络应用中使用的工具。我想将Node.js用作服务器后端,因为它有一个对我特别有用的模块。但是,我还想在前端使用带有Polymer.dart的Angular 2(Dart)。对不起,如果答案应该是显而易见的,但是如何将我的应用程序的这两个部分无缝地组合(并且没有转换工具),这通常在MEAN堆栈中完成,因为Dart与JS不直接兼容?
目前没有任何教程或资源可用于演示此组合。在我看来,更常见的用例是让Dart也充当服务器后端。
答案 0 :(得分:2)
如何投放Dart客户端应用
客户端和服务器可以是两个完全没有绑定的不同应用程序。唯一需要的连接是,服务器可以解释客户端发送的请求,客户端可以解释响应。
构建的Dart客户端应用程序类似于静态HTML,可以由任何HTTP服务器提供服务。我不知道Node.js,但我认为它有一个目录,它从中提供静态内容。这是放置Dart客户端应用程序的构建输出的位置。
Dart客户端与Node.js服务器之间的通信
为了使客户端和服务器能够进行通信,Dart需要以服务器期望的形式发送请求。您可以使用REST,WebSocket,Ajax和JSON正文或协议缓冲区。 在客户端和服务器上使用相同语言的一个优点是,可以在客户端和服务器之间共享从有线协议格式序列化或反序列化的模型类以及序列化/反序列化代码。在这种情况下,这是不可能的。 Dart团队正致力于从Dart生成JS和TS,最终可能解决这个问题。如果您使用协议缓冲区,这也不适用,因为您可以从相同的原型文件生成两种语言的代码。
发展要求
对于开发,你必须考虑到你需要"两台服务器。 Node.js服务器,它是您应用程序的实际服务器,也是pub serve
的快速更改和重新加载周期(以避免在每次更改后构建到JS)。
这通常由代理(可以是Nginx或使用shelf和shelf_proxy包的自定义Dart脚本)完成,它将对Dart源文件的请求转发给pub serve
,并将Rest / Ajax / WebSocket请求转发给Node.js服务器。