【问题标题】:use templates but keep jquery bindings?使用模板但保留 jquery 绑定?
【发布时间】:2012-03-18 18:40:25
【问题描述】:

我目前有一个大型单页应用程序,每个 html“视图”都是纯粹使用 jQuery DOM 创建/操作构建的。 javascript 文件非常大,添加或更改视图是一个非常复杂的过程。我开始考虑使用backbone.js 和模板。但是,如果我使用模板,我会失去将 jQuery 事件和数据绑定到元素的能力吗?

【问题讨论】:

  • 只要在模板渲染后继续绑定事件,完全没有问题。我实际上在它的模板系统中使用了很多主干,并使用 jQuery 绑定事件,我从来没有遇到过任何问题。

标签: javascript jquery templates backbone.js


【解决方案1】:

不,您仍然可以将所有 jQuery 魔法应用于生成的 DOM 元素。模板化会简化创建 DOM 元素的过程,但结果是一样的,可以完全一样的使用。

【讨论】:

  • 所以我不得不带着一堆 jquery 返回并添加事件。在我的情况下,使用模板似乎没有太大优势
  • 在创建复杂视图时模板将是一个优势,但在许多情况下也允许更冗长的代码:您通常用 HTML(而不是 JS 字符串)编写视图,某些语言(例如Mustache 和 Handlebars)提供数据和视图结构的分离。
  • 现在推荐的存储和检索所有这些大而复杂的视图的方法是什么?我想将每个视图存储在它自己的文件中,以便在开发过程中轻松组织,并在生产中编译它们以进行优化。
  • 您可以将它们存储为纯 HTML 并按需检索它们。有很多关于组织 Backbone 项目文件的资源,例如Organizing your application using Modules。此外,文件连接/压缩可以通过各种方式完成,参见例如require.js's optimizer.
  • 你将如何使用 require 来拉入 html 文件?
【解决方案2】:

如果您在 jQuery 中使用模板,为什么会失去任何功能?您可以通过模板实例化元素,并像往常一样绑定 - 在模板时或通过预设的 .live() 处理程序。

虽然我会确保Backbone.Router 不会为您提供更优雅的方式来处理您的交互。

【讨论】:

    【解决方案3】:

    如果性能是一个瓶颈问题,请在模板中内联您的事件。

    <input type="button" onclick="doit(this);">

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 2013-11-15
      • 2012-12-11
      • 2021-11-11
      • 2011-01-19
      相关资源
      最近更新 更多