Архитектура приложения и MVC

Архитектура MVC. Создание проекта

В предыдущих главах руководства мы смотрели те или иные моменты ExtJS на небольших примерах, при этом весь код ExtJS находился на самой веб-странице. При создании полнофункциональных приложений такой подход можно применять, однако если приложение очень большое, объемы кода, использующие фреймворк ExtJS, довольно объемные, то написание приложение в таком духе становится немного проблематичным.

Чтобы помочь программистам, создающим крупные приложения, разработчики компании Sencha внедрили в фреймворк ExtJS поддержку шаблона MVC. Сразу отмечу, что создание приложения в духе MVC - это не необходимость, а общая рекомендация разработчиков Sencha, которая призвана оптимизировать работу программиста. А сами программисты уже могут использовать ту архитектуру, которая им нравится.

В силу популярности шаблона MVC особенно в веб-среде за ним закрепилось множество различных трактовок, которые иногда не совсем совпадают друг с другом. Но в общем плане его смысл состоит в выделении в отдельные части трех ключевых компонентов:

Благодаря использованию шаблона MVC мы можем добиться большей масштабируемости приложения. Также нам легче интегрировать в состав приложения те компоненты, которые написаны другими разработчиками.

Подготовка проекта

В рамках данной главы мы создадим небольшое приложение, которое покажет особенности архитектуры MVC применительно к ExtJS. Суть приложения - мини-библиотека, которая реализует CRUD-интерфейс. Первым делом подготовим проект.

Итак, проект приложения MVC будет иметь следующую структуру:

Создаваемое приложение будет носить название BookApp и находится оно, в моем случае, в корневом каталоге веб-сервера Apache. Там же находится каталог фреймворка ExtJS.

В папке BookApp находится каталог app, который и будет содержать все основные части непосредственно приложения. И в этом каталоге app определены следующие подкаталоги:

Поскольку в приложении я еще буду использовать стили, то для стилей в каталоге BookApp я создал специальную папку styles

Для начала создадим веб-страничку со стандартным именем index.html и поместим его в каталог BookApp. Она будет иметь такое содержание:

<html>
<head>
<title>BookApp</title>
<meta charset='utf-8'>
<link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" >
<script type="text/javascript" src="../extjs/ext-all-debug.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>

Здесь у нас только идет подключение файла стилей фреймворка и файлов javascript. Больше нам ничего не нужно.

Хотя у нас еще нет никакой инфраструктуры создадим файл приложения app.js, который также будет находится в каталоге BookApp:

Ext.application({
    requires: ['Ext.container.Viewport'],
    name: 'BookApp',

    appFolder: 'app',

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: {
				xtype: 'panel',
				html: '<h2>Библиотека</h2>'
            }
        });
    }
});

Файл приложения пока не реализует шаблон MVC, а просто выводит элемент Viewport, в котором определена панель с текстом.

Обратите внимание на два свойства: name: 'BookApp' указывает имя приложения, которое будет затем использоваться для создания полных имен классов приложения. Свойство appFolder: 'app' указывает папку с инфраструктурой приложения (контроллеры, модели и т.д.). Поскольку все классы у нас будут находиться в папке app, то эту папку мы и указываем.

В принципе мы можем протестировать приложение, запустив на локальном веб-сервере. В моем случае строка запроса в браузере выглядела бы так: localhost/BookApp.

Таким образом, в папке BookApp получается следующая структура:

А начнем работу над непосредственно приложением с создания моделей, которые будут описывать используемые в приложении сущности.

    Поддержать сайт на родительском проекте КГБ