Backbone.Layout.extend 和 Backbone.view.extend 之间的区别

Difference between Backbone.Layout.extend and Backbone.view.extend

所以我得到了这个新项目,它在每个视图中都有这条线。

Backbone.Layout.extend({ /*...*/ })

但是当我查看 Backbone 和其他教程的文档时,它有

Backbone.View.extend({ /*...*/ })

而且所有视图都有 initializeserializeafterRender 功能。我尝试搜索它,但没有找到任何有用的东西。

您的项目正在使用 backbone.layoutmanager

Provides a logical foundation for assembling layouts and views within Backbone. Designed to be adaptive and configurable for painless integration. Well tested, with full code coverage, in both the browser and Node.js environments.

查看 source of this library,我们可以看到它只是一个专门的 Backbone.View

var LayoutManager = Backbone.View.extend({ // line 53
// ...
});
// ...
// Expose through Backbone object.
Backbone.Layout = LayoutManager; // line 955

它添加了这些 methods and properties:

  • afterRender
  • cleanup
  • getView
  • getViews
  • insertView
  • insertViews
  • removeView
  • renderViews
  • setView
  • setViews
  • then
  • useRAF
  • serialize(未在 wiki 中记录)

initialize function 是 Backbone 视图中的默认值,它是空的,应该用自定义初始化代码覆盖。

为了更好地了解项目中发生的事情,请查看它加载的依赖项(.js 文件包含在 HTML 中的 <script> 标签中)。