Если честно, MVC не очень подходит для Javascript.Конечно, он может поддерживать базовые принципы проектирования - вы можете создавать псевдоклассы, выступающие в качестве контроллеров или моделей, поддерживать базовое наследование, и вы можете управлять им или создавать любое количество элементов DOM, но за это вы платите цену- в накладных расходах, доступности и удобстве использования.
По моему мнению, я считаю Javascript скорее дополнением - менталитет KISS существует по уважительной причине.Если вы заинтересованы в более эффективных способах организации своего кода, всегда есть возможность упаковать связанные функциональные возможности в модули (sic) и абстрагировать части по мере необходимости.Например, создание фабрики для более сложного управления запросами AJAX или псевдокласса для обработки подобных типов данных.Использование стандартной базовой функции для контроллеров, другой для моделей и т. Д., В качестве прототипов для новых экземпляров этих объектов может выполнять аналогичную функциональность ... но, опять же, это своего рода противоречие Javascript.
Однако,если вы застряли на идее MVC просто ради структуры, рассмотрите что-то вроде следующего:
;(function(window, $) {
/**
* Event Object
* A quick description goes here.
**/
var Events = window.Events = {
'bindTrackables': function() {
$('a.trackable').live('click', function() {
if(!_gaq)
_gaq = [];
_gaq.push(['_trackPageview', '/ajax/foobar']);
});
},
'bindSomeEvent': function() {
// etc
}
};
/**
* Data Cache
* I'll need to remember stuff later, so I store it here
**/
var Cache = window.Cache = {
'data': {},
'store': function(key, value) {
Cache.data[key] = value;
},
'fetch': function(key) {
return Cache.data[key];
}
};
/**
* Request Object
* Stores native AJAX requests for later use
**/
var Request = window.Request = {
'current_requests': [],
'send': function(url, type, data, callback) {
Request.current_requests.push($.ajax({
'url': url,
'type': type,
'data': data,
'callback': callback
}));
},
}
// add some private logic here
})(window, jQuery);
Это чрезвычайно просто, но вы поняли идею.Модульный код является ключевым ... в JS это важнее, чем принуждать ваше приложение (или язык) к определенному стилю.