如何在飞镖中创建表单?

时间:2013-05-13 12:59:27

标签: dart dart-webui

在用户输入后创建表单(文本字段,复选框,单选按钮,...)和处理数据的最佳方法是什么?

只使用网络组件作为dart的web ui?

编辑:让我们想象下面的示例应用程序:我想创建一个在线测验/测试。

  • 首先,用户必须注册
  • 数据将存储在文本文件或数据库中
  • 用户可以登录并进行在线测验或进行在线测试。
  • 对于该测验/测试,我需要使用预定义的正确答案评估输入

3 个答案:

答案 0 :(得分:2)

以下是您问题的高级答案。

要处理服务器端的数据,可以使用HttpServer类启动Web服务器。请参阅此article

要将数据存储在平面文件中,您需要使用dart:io包打开文件并写入文件。请参阅File.openWrite()的文档。

要在数据库中存储数据,可在mysqlpostgresql的酒吧上找到包。

实现客户端有两种不同的方法。传统方法是使用templating生成带有表单标记内输入元素中数据的html,然后在Web服务器中处理表单提交。

现代方式,即Dart社区的重点,是编写单页应用程序,使用HttpRequest从服务器读取数据并将数据发送到服务器(通常使用json

答案 1 :(得分:1)

在客户端,您可以从服务器检索数据(例如,作为JSON)并使用它来构建表单。这似乎非常适合Web组件,因为可以根据接收的数据动态添加元素。

该组件将绑定到模型,因此您可以在提交时serialize the model object to JSON提交并在提交时将其发送到服务器,或者将其作为标准HTML表单发送。

故事的服务器端不太清楚,没有我所知道的生产质量的Web服务器库,但您可以查看DartExpress作为示例,或Stream,还有其他人,或多或少完整。无论如何,您必须从HttpRequest中提取POST有效内容(如果以JSON格式发送)或使用the form data也可以通过queryParameters属性访问 - 请注意这是{{1} } class,而不是Dart:io.HttpRequest,它仅在服务器端可用。

上述服务器框架稍微简化了这一部分。

答案 2 :(得分:1)

使用Web-UI将是一个不错的选择。 todomvc应用程序很好地说明了如何动态捕获用户的输入。就选择而言,服务器端的处理是敞开的。 Dart确实具有服务器端功能,您可以使用一些现有的库来完成您想要的任务。

您可以处理信息服务器端的另一种方法是使用基于REST的Web服务(如CouchDB)直接与DB通信。 Cloudant提供此类服务,并允许您从客户端直接与DB通信,前提是您可以克服Same-Origin-Policy。有两种方法可以做到这一点。在CouchDB实例上启用CORS,或在具有DB的服务器上托管您的应用程序,这也可以通过CouchDB实现。

Dart服务器端还支持websockets,因此您可以使用Web套接字轻松地将用户提供的数据传送到服务器,然后在服务器端执行您喜欢的任何处理。

我能想到的另一个选择是将信息处理并保存在本地浏览器中。您可以从Dart客户端访问本地数据库或本地浏览器文件系统,并将所有内容保留在本地。对于统计信息,您可以让客户端更新您选择的Web服务。