【发布时间】: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 事件、实现应用程序逻辑和更新模型。视图将自动反映更改。
【问题讨论】: