1

我正在使用红石聚合物使用 Dart 开发 Web 应用程序 因为 Dart 允许服务器和客户端开发,所以我想知道 Web 应用程序的好的模式是什么(特别是 Dart)

选项1:

  1. 有一个服务器,比如说,/bin/server.dart

    1.1。在那里得到一个请求并用 json 响应

    @app.Route("/user/:id", methods: const [app.GET])
    getUser(int id) { ... }
  1. 有一个客户端,即 web/user.html 和 web/user.dart

    2.1 在 user.dart 中向服务器发出请求

    2.2 接收json并形成合适的user.html

选项 2:

  1. 有一个服务器 /bin/server

    1.1 在那里得到一个请求并用一个html页面响应,类似于

    @app.Route("/")
    helloWorld() => "Hello, World!";

如果在第一种情况下,我或多或少知道(并且理解)如何使事情正常进行,而我发现我没有利用 Dart 的服务器-客户端代码共享真的很令人沮丧:我需要编码和解码回 json得到相同的数据。有没有办法避免它?

第二个选项对我来说不太清楚:我将如何以这种方式提供网页?我将如何让 Polymer 发挥作用?

非常感谢对文本中问题的回答以及对开发 Web 应用程序的笨方法的一般解释。

4

2 回答 2

2

您可以在此处查看 Redstone + Polymer 应用示例:https ://github.com/luizmineo/io_2014_contacts_demo

基本上,它Option 1的工作原理是:客户端和服务器通过服务 API 进行通信,数据被编码为 JSON。虽然,Redstone 也使用该shelf_static包将客户端代码提供给浏览器。

如果您愿意,也可以使用服务器端模板引擎,例如 mustache,在服务器中构建 html 页面,不过,我认为将其与 Polymer 集成起来非常困难。

最后,在客户端和服务器之间传输数据时,您总是必须以某种方式对数据进行编码,但这并不意味着它们不能共享代码。例如,它们可以使用相同的域类。查看上面链接的示例应用程序以获取更多详细信息。

于 2015-02-18T12:14:09.327 回答
0

我认为选项 2 是不可能的。Polymer 依赖于 dart:html,这在服务器端是不允许的。

于 2015-02-18T10:58:28.737 回答