通常我在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本机解决方案会使用什么?
为了拓宽视野,我也开始使用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!
我想我会用这个.
您提到了处理这种模板小部件的首选方法.这是非常有趣的事情,WIDGETS作为页面控制器与模板!
1)我的第一个javascript web 2.0 MVC页面控制器是一个很大的自定义jQuery UI小部件.我听说jQuery UI团队正在计划将模板集成到他们的小部件中.
在使用backbone.js迁移到jquery后,我转身离开了它.
2)据我所知和理解,来自JavascriptMVC的Justin Meyer采用了jQuery UI小部件工厂部分(jQuery UI小部件的基础部分),并在其框架中将其用作页面控制器.
3)Mark Wubben在Dojo Conf谈论模板:他说:
This leads to a new and interesting approach for writing Dojo widgets. They can become much more like controllers: handling DOM events,implementing application logic and updating a model. The view will automatically reflect the changes.
解决方法
对于简单的事情,你可以使用
dojox.dtl.
我的偏好是创建一个Templated Widget,另请参阅Creating a custom widget的教程.