Завершен перевод очередного раздела "Архитектура MVC (Модель-Вид-Контроллер)" из официальной документации по фреймверку Ext JS 4.2. Раздел был очень большой, поэтому разбит на девять частей:
Обращаю внимание, что это не дословный, а авторский перевод. Структура фреймверка Ext JS 4.2 основна на парадигме ООП, поэтому в тексте встречаются термины "объект", "свойство", "метод", "наследование". Не следует писать мне на емайл что в JS нет ООП, а объекты наследуются через прототипы. Я это прекрасно знаю, а дотошным блюстителям чистоты кода предлагаю прочитать цитату из главы "Система классов":
Язык JavaScript - это прототипно-ориентированный язык программирования, в котором отсутствуют классы. Следовательно, по своей природе язык JavScript чрезвычайно гибок, что позволяет делать одну и ту же работу различными путями, используя совершенно разные стили и методики написания кода. Однако за такую гибкость приходится платить большую цену. Цена эта - трудно прогнозируемое качество результата работы программиста. Не имея четкой и унифицируемой структуры, на языке JavaScript легко создать трудно понимаемый код, непригодный для сопровождения и повторного использования.
Модель программирования, основанная на классах, всё ещё остается очень популярной методикой, называемой объектно-ориентированным программрованием (ООП). Языки, основанные на классах, обычно требуют строгую типизацию данных, эффективно скрывают реализацию, а разработчики обычно придерживаются стандартов в соглашениях о кодировании. Заставляя разработчиков придерживаться общепринятых принципов, написание кода можно сделать более предсказуемым, а код более расширяемым и масштабируемым в течении длительного времени. Однако, у таких языков нет тех же возможностей по динамическому расширению кода, которые есть у JavaScript.
У каждого подхода есть свои достоинства и недостатки, однако почему бы не взять всё хорошее из обеих подходов, при этом отбросив все неудачные решения? Именно это мы и реализовали в нашем фреймверке Ext JS 4.