1

所以我有点想使用 Dart 与我的 MySQL 服务器进行交互。我查看了人们是如何做到这一点的,我得到了 sqljocky。现在我在我的主文件中导入 sqljocky,我收到错误:内置库 'dart:io' 在 Dartium 上不可用。现在这里出了什么问题,为什么谷歌在 Dartium 不可用时制作 dart:io?

提前致谢!

4

1 回答 1

5

dart:io库可用于类似于 Node.js 的服务器端进程。它允许开发人员在客户端和服务器上使用一种语言。它提供了诸如创建本机套接字、本机文件 i/o 等功能,由于沙盒限制,这些功能无法在客户端(以任何语言)完成。

SQLJockey 使用创建本机套接字的能力来连接到 MySQL 服务器。它不是可以在客户端完成的事情(或者至少根本不容易),即使可以,也不应该这样做,因为一旦代码是客户端,它总是容易被最终用户修改(我可以修改 javascript在我的浏览器中我点击的任何页面上的行为都不同)。在服务器端,您可以清理发送到数据库的命令,而不必担心其他人能够更改您的清理规则。当然,更不用说在您的客户端代码中为您的 MySQL 提供用户名和密码以供任何人访问,以及您的 MySQL 连接需要在任何地方接受登录表单,而不仅仅是“本地主机”或特定服务器/域会让你太容易受到影响。

所以 dart:io 库将像 Ruby(在 Rails 或 Sinatra 等)脚本,或者像 PHP 或像 Node.js 一样在服务器端运行。它不是为在客户端运行而设计的,因为它提供了出于安全原因无法在浏览器中实现的功能(这种安全性内置于浏览器中,而不仅仅是语言)。

于 2014-01-15T13:55:35.063 回答