全部View的代码异常简约,View组织逻辑也一览无余。
javascript
var View = Backbone.View = function(options) { this.cid = _.uniqueId('view'); options || (options = {}); _.extend(this, _.pick(options, viewOptions)); this._ensureElement(); this.initialize.apply(this, arguments); this.delegateEvents(); };
- 天生唯一cid
- 兼并参数列表
- 列表项目
- View的初始化
- 用户定义的初始化
- 事宜处置惩罚
能够看到,最主要的代码,在于View的初始化。
javascript
_ensureElement: function() { if (!this.el) { var attrs = _.extend({}, _.result(this, 'attributes')); if (this.id) attrs.id = _.result(this, 'id'); if (this.className) attrs['class'] = _.result(this, 'className'); var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs); this.setElement($el, false); } else { this.setElement(_.result(this, 'el'), false); } }
这段代码能够看出,假如实例化的时刻有传入一个DOM节点,则绑定这个DOM节点,不然天生一个如许的DOM节点。
javascript
var view = new View({ el: $('body'), model: new Backbone.Model() })
结语:嗯,Backbone.View真的好简朴,没做什么事情。