【问题标题】:Pure Dart DOM possibility?纯 Dart DOM 的可能性?
【发布时间】:2013-12-29 02:05:56
【问题描述】:

我正在学习 Dart,突然顿悟(或可能,顿悟):

我可以编写一个 Dart 网络应用程序,其中“视图”在 Dart 中 100% 完成吗?

我在说:绝对没有(无/零/nadda)HTML 文件 (.html)。 100% 飞镖代码。比如:

class SigninView {
    LabelElement signinLabel;
    InputElement emailTextField;
    InputElement passwordTextField;
    ButtonElement signinButton;

    // constructors, getters, setters, etc.

    // Perhaps called from inside constructor...
    void initUI() {
        signinLabel = new LabelElement();
        signinLabel.innerHTML = "<span class=\"blah\">Please sign in</span>";

        emailTextField = new InputElement();
        emailTextField.innerHTML = "<input type=\"text\" name=\"fizz\" placeholder=\"Email\"/>";

        // ...etc.

        // htmlFactory would be something I'd need to write myself (?)
        String html = htmlFactory.newHTML(signinLabel, emailTextField, ...);

        querySelector("#someDivTag").innerHTML = html;
    }
}

理论上(即我对上面代码的意图),一旦创建了SigninView,它就会初始化一堆DOM元素并用它们填充someDivTag

  1. 这可能吗?如果是这样,我是“做对了”,还是有不同/首选/标准化的方法?
  2. 这是否会引入我应该注意的任何其他/潜在警告(内存泄漏)、性能或安全问题?
  3. 如果我在整个应用程序中采用这种策略,我是否可以假设应用程序下载速度更快(HTML 文本更少),但执行速度更慢(动态 DOM 元素创建)?如果是这样,有没有办法以某种方式实例化我的应用程序需要的所有 DOM 元素(减慢初始下载时间),然后只使某些元素可见,因为我希望呈现不同的视图/屏幕(从而加快执行时间)?

【问题讨论】:

  • 您的下载大小如何变小?在您的示例中,除了创建元素所需的额外 Dart 代码之外,您仍然拥有 HTML。

标签: dart single-page-application dart-html


【解决方案1】:

你需要一个带有用于 Dart 启动的脚本标签的 HTML 文件。 其他任何事情都可以在 Dart 中完成。

【讨论】:

  • 这很酷 - 感谢@Gunter Zochbauer (+1) - 性能/安全问题如何(意思是,以这种方式实现 UI - 通过 Dart 以编程方式 - 引入任何其他警告)?
  • 我认为安全性没有太大区别。我预计性能会更差,因为你必须在 Dart 中做一些事情,否则原生高度优化的浏览器实现会做(比如加载和解析 HTML)。我希望代码变得更难阅读/维护。标记通常在以人类可读的方式定义 UI 布局方面做得更好。
  • 再次感谢@Gunter Zochbauer (+1) - 所以我想我有一个最后的后续问题:这是否意味着我会更好 - 就性能而言 - 下载我所有的 HTML sn-ps当我的应用程序启动时,然后将它们“绑定”到 Dart DOM 实例,例如querySelector("#someButton") as ButtonElement如果不是,为什么?如果是这样,这与我在上面的问题中提出的建议有何不同 - 再次,就性能而言 - ?再次感谢!
  • 恕我直言,您的问题非常笼统,可以提供更具体的答案。这取决于...
猜你喜欢
  • 1970-01-01
  • 2015-01-28
  • 2010-10-07
  • 2011-07-13
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多