【问题标题】:Dart + Web-UI and dynamic client side templatingDart + Web-UI 和动态客户端模板
【发布时间】:2013-02-13 06:57:17
【问题描述】:

有没有什么好的方法可以用 Web-UI 构建 Dart 应用程序并通过网络动态加载新的 HTML 模板(客户端模板)?

看起来 Web UI 模板总是与生成的 *.js 文件一起加载:

  <head>
    <!-- this will be transformed by WebUI compiler to *_generated.js code -->
    <link rel="components" href="common_templates.html"> 
  </head>

【问题讨论】:

    标签: dart dart-webui


    【解决方案1】:

    目前无法使用 WebUI 动态加载和处理模板。 WebUI 需要提前处理模板。我认为来自其他答案/cmets 的@ChrisBuckett 建议将是一个很好的方法:在可用时使用延迟加载。

    另一个疯狂的想法是将 web-ui 编译器与您的应用程序一起提供并在浏览器中处理模板。注意,这在今天甚至是不可能的,因为 web-ui 目前不能用 dart2js 编译(它对 dart:io 有一些依赖)。假设,如果可能的话,它可能会比运送额外的模板要大得多。因此,如果您的目标是减少初始下载量,那么这个想法是行不通的。

    【讨论】:

    • 是的,我考虑在我的应用程序中使用 web-ui 编译器,但你说得对 - 这真的很疯狂 :D 无论如何 - 对于当前的实现 Dart+ 来说似乎没有办法做到这一点WebUI,我接受这个答案。
    【解决方案2】:

    我正在开发一个单页应用程序,该应用程序可以根据左侧选择的菜单将新内容动态加载到页面的内容部分。内容部分是从 WebUi 组件中填充的,但它确实是动态发生的,并且确实发生在客户端。在菜单上,我有类似的东西;

            <li> <a href="#/active">Active</a> </li>
            <li> <a href="#/completed">Completed</a> </li>
    

    我让应用程序在单击菜单项时响应哈希更改。他们在 ToDo 应用的 WebUi 实现中做了类似的事情。

    内容有一个条件模板,该模板根据所选菜单加载 WebUi 组件。

    这可能不是您的想法。如果我在这里偏离轨道,请提供更多详细信息。

    【讨论】:

    • 抱歉,这不是我要找的答案。我正在尝试动态 通过 HTTP 加载 适用于 WebUi 的新模板。在一页中加载所有模板并不好。当然我可以在服务器端分成很多页面,但这需要服务器端模板。
    • 关于“在一页所有模板中加载不好” - 您可能有兴趣跟踪此错误:dartbug.com/3940 - 这是关于拆分 dart2js 的输出以允许延迟加载部件你的应用程序。不是特定于 web-ui 的,但可以更一般地将您的应用拆分为动态加载的较小部分。
    【解决方案3】:

    现在可以执行 Dart 代码的延迟加载。如果你的客户端模板是作为 Dart 源实现的,你可以使用 DeferredLibrary 类。

    更详细的文章可能很快就会出现在 Dart 网站的articles section

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 2013-11-23
      • 2015-10-15
      • 2011-05-27
      相关资源
      最近更新 更多