30行のコードはJavascriptのMVCを実現します.

2149 ワード

MVCの本質はcontrolで業務ロジックを完成し、modelを修正し、同時にmodelの変化によってviewの自動更新を引き起こします.function  Model(value) {    this._value = typeof  value === 'undefined'  ''  : value;    this._listeners = [];}Model.prototype.set = function  (value) {    var  self = this;    self._value = value;    setTimeout(function  () {        self._listeners.forEach(function  (listener) {            listener.call(self, value);        });    });};Model.prototype.watch = function  (listener) {    this._listeners.push(listener);};Model.prototype.bind = function  (node) {    this.watch(function  (value) {        node.innerHTML = value;    });};function  Controller(callback) {    var  models = {};    var  views = Array.prototype.slice.call(document.querySelectorAll('[bind]'), 0);    views.forEach(function  (view) {        var  modelName = view.getAttribute('bind');        (models[modelName] = models[modelName] || new  Model()).bind(view);    });    callback.call(this, models);}