为什么要定义Backbone JS模型和;在jQuery上加载视图并将其连接到窗口对象?

时间:2012-05-31 10:09:23

标签: backbone.js

我看到许多教程在jQuery加载后初始化Backbone模型/视图。这是为什么?你以前不能定义它吗?

例如 link

jQuery ->

  class ListView extends Backbone.View

    el: $ 'body'

    initialize: ->
      _.bindAll @
      @counter = 0
      @render()

您可以在文档加载之前定义类,并在文档加载后初始化视图/模型吗?


另外,我看到window下定义的模型/视图为什么会这样?

window.TodoView = Backbone.View.extend
  ...

2 个答案:

答案 0 :(得分:1)

为什么在jQuery之后初始化View?

来自main Backbone page;

  

Backbone唯一的硬依赖是Underscore.js(> 1.3.1)。对于RESTful持久性,通过Backbone.Router的历史支持和使用Backbone.View 的 DOM操作,包括json2.js,以及 jQuery (> 1.4.2)或Zepto。

[强调我的]

那就是那里的依赖。

window下定义的模型/视图?

它简化了这些小教程示例 - 一切都可以访问window,因此它为全局变量(ctors,变量,函数等)提供了一个有用的(如果是混乱的)转储基础。

IMO,对于大型(非演示)项目,您应该使用类似RequireJS的内容。

答案 1 :(得分:1)

我敢肯定,这是为了简单起见。当然,您可以(也可能应该)在jQuery(document).ready()之外定义构造函数。而且你也可以(也可能应该)使用一个你自己的全局对象,以免污染全局空间。