Dojo 和模板解决方案
Posted
技术标签:
【中文标题】Dojo 和模板解决方案【英文标题】:Dojo and templating solutions 【发布时间】:2012-02-10 07:54:10 【问题描述】:通常我在 jQuery 世界中,我使用 requirejs、backbone.js 和 jquery 开发一个 wep 应用程序。 为了拓宽视野,我也开始使用 Dojo。 在我开始使用 Dojo 之前,我在几个博客中读到的关于 jQuery 的声明是这样的:“如果你正在制作一个带有一些 JS 效果的普通网站,你可以使用 jQuery,但对于 web 应用程序的东西你应该使用 Dojo”。 因此,正因为如此,当我开始使用 Dojo (1.7) 时,我渴望了解它用于 Web 应用程序开发的解决方案。 令我惊讶的第一件事是我没有找到任何 mvc 控制器组件的基类。在backbone.js 中你有一个视图(很多人说backbone.js 视图是一个控制器),这很有帮助。 现在,在我的 mvc 控制器组件中,我想渲染视图。我使用 amd 文本插件“加载”模板。对于简单的模板 - 我发现 - 你可以使用 dojo.string.substitute。但是我如果你想做一些更复杂的事情,你不能使用它。 我知道 Rebecca Murphey 是一位著名的 javascript 演讲者,当她开始在这个生态系统中开发时,她将 Mustache.js 引入了 Dojo。 但是,当 Dojo Web 应用程序程序员必须渲染具有动态行数的列表并且他们想通过 js 模板来实现这一点时,他们会使用哪些 Dojo 原生解决方案?
在下划线模板中。当你想这样做时,你可以在模板中编写如下内容:
<div><%= lang_test %></div> <!-- static things -->
<table>
<% _.each(list, function(listitem) %>
<tr>
<td><%= listitem.get('attr1') %></td>
<td><%= listitem.get('attr2') %></td>
</tr>
<% ); %>
</table>
非常感谢 沃尔夫冈
更新: 谢谢你,mkriheli,你的回答。我还偶然发现了 dojox.dtl! 我想我会用这个。 您提到处理此问题的首选方法是模板化小部件。这是非常有趣的事情,带有模板的小部件作为页面控制器!
1) 我的第一个 javascript web 2.0 MVC 页面控制器是一个大型的自定义 jQuery UI 小部件。我听说 jQuery UI 团队正计划将模板集成到他们的小部件中。 在使用主干.js 迁移到 jquery 后,我拒绝了它。
2) 据我所知和理解,来自 JavascriptMVC 的 Justin Meyer 采用了 jQuery UI 小部件工厂部分(jQuery UI 小部件的基础部分)并在他的框架中使用它作为页面控制器。
3) Mark Wubben 在 Dojo Conf 上谈到了模板:他说:
这为编写 Dojo 小部件带来了一种新的有趣的方法。它们可以变得更像控制器:处理 DOM 事件、实现应用程序逻辑和更新模型。视图将自动反映更改。
【问题讨论】:
【参考方案1】:对于简单的事情,您可以使用dojox.dtl。
我的偏好是创建Templated Widget,另请参阅Creating a custom widget 的教程。
【讨论】:
【参考方案2】:我知道您想要更健壮的东西,但是对于非常简单的基于替换的模板,您可以使用dojo/_base_lang/replace,这很像 dojox/dtl 或 Mustache 的更简单形式。并且具有不在 Dojox 中的好处(因此不完全支持)。
【讨论】:
以上是关于Dojo 和模板解决方案的主要内容,如果未能解决你的问题,请参考以下文章