【问题标题】:What do i need underscore templates for? [closed]我需要什么下划线模板? [关闭]
【发布时间】:2013-01-18 11:04:39
【问题描述】:

我来自非常严格的 OOP flash 背景,我真的很想更深入地了解骨干,我的问题是:

如果我有所有视图的类(很像在 flash 中),对我来说 _.template 功能有什么用途/好处,还是我现在可以忽略它?

【问题讨论】:

  • 好吧,我认为你已经阅读了文档......如果你可以做你想做的事而不会觉得你在破解我会说你现在可以保持原样。只是不要一起忘记这一切
  • 是的,我很肯定我可以在课堂上获得模板的所有功能,甚至更多(在我看来,这是最好的练习)。只是想确保这不是坏习惯,而我忽略了任何重要的事情。谢谢
  • 我完全理解你为什么要自己上课。但在这样做之前,我建议您至少也按原样使用该框架。与自定义构建的类交互时,您很可能会花费大量时间来调整您的类以与标准框架对象无缝交互......也许只是从框架的类之一扩展您的类,以避免最明显的陷阱?但这正是我要做的......过去在使用我自己的代码时曾与一些库/框架作斗争,我现在倾向于尽可能地坚持使用 FW

标签: javascript templates backbone.js underscore.js


【解决方案1】:

标记模板,无论是使用下划线还是任何其他模板框架,都非常有用。

您似乎将 View 类和模板视为某种非此即彼的命题。但事实并非如此。他们完全解决了一个不同的问题;它们相互补充,而不是替代。

视图类(在您的情况下为Backbone.View)范围并封装了与视图相关的逻辑和事件处理。这是一种很好的做法,无论您是否决定使用模板引擎,都应该使用它。

另一方面,模板只是将您的数据转换为 HTML,仅此而已。这是您的视图需要做的事情,在我看来,有几种方法可以实现:

  • 通过字符串连接构建 HTML
    • "<div>" + this.model.name + "</div>"...呃)
  • 用 jQuery 填充 DOM 节点
    • $(".name").text(this.model.name) 荒谬的...
  • 使用某种数据绑定
  • 使用模板引擎
    • 比数据绑定更轻更简单
    • 将表示与逻辑分开

选择权在你,但我不会没有数据绑定或模板框架。 underscore 提供的模板功能强大,但我更喜欢语义化、无逻辑的模板,例如Handlebars

【讨论】:

  • 是的,我编写了自己的库,它使用 jQuery 填充视图(有点像在 Coffeescript 中制作的 ActionScript,哈哈),它具有模型绑定功能。对象只是监听事件以使自身失效并获取新数据
【解决方案2】:

如果您在视图中将 JSON 对象作为 HTML 输出,那么您可以从中受益。

根据我的经验,如果您打算制作一个不仅仅是基本的应用程序,而且还会不断发展壮大,那么模板化是一种很好的做法,可以在以后为您节省一些时间。

您可以在模板文档页面http://underscorejs.org/#template获取更多信息

【讨论】:

  • 在我问之前一定要阅读它,不想浪费你的时间。但是假设我有一个 JSON 格式的列表,我想以某种方式显示所有表。我只需为带有输入参数的表创建一个类,然后循环遍历父级中的 JSON 并创建每个表。
  • 对我来说,模板似乎与 Backbone 中的整体工作流程有些分离,好像它们完全不适合;有点与 OOP 实践相矛盾
  • 对不起,八月,我没有阅读您的评论。我更新了这个问题。您描述的从 JSON 创建字段(在表中?)的算法是有意义的。
猜你喜欢
  • 2011-12-10
  • 2017-01-30
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2019-04-05
  • 2020-08-03
  • 2011-05-27
  • 1970-01-01
相关资源
最近更新 更多