首页 文章

如何在飞镖中创建表单?

提问于
浏览
0

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

只需使用Web组件作为dart的web ui?

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

  • 首先,用户必须注册

  • 数据将存储在文本文件或数据库中

  • 用户可以登录并进行在线测验或进行在线测试 .

  • 对于该测验/测试,我需要使用预定义的正确答案来评估输入

3 回答

  • 1

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

    要处理服务器端的数据,可以使用HttpServer类启动Web服务器 . 见article .

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

    要在数据库中存储数据,可以在pub上找到mysqlpostgresql的包 .

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

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

  • 2

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

    该组件将绑定到模型,因此您可以提交并在提交时将其发送到服务器,或者只是将其作为标准HTML表单发送 .

    故事的服务器端不太清楚,没有我所知道的 生产环境 质量的Web服务器库,但你可以看看DartExpress作为一个例子,或Stream,还有其他的,或多或少完整 . 无论如何,你必须从HttpRequest中提取POST有效负载(如果作为JSON发送)或使用the form data,也可以通过queryParameters属性访问 - 请注意,这是 Dart:io.HttpRequest 类,而不是 Dart:html.HttpRequest ,并且它仅在服务器端可用 .

    上面提到的服务器框架简化了这一部分 .

  • 1

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

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

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

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

相关问题