| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Model-View-Controller для JavaScript
Приветствую Вас дорогие читатели! Для тех из вас, кто знаком с RubyOnRail, CodeIgniter, CakePHP, парадигма Model, View, Controller не является новинкой. Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента: модель (Model) для предоставления данных, представление (View) для отображения информации и контроллер (Controller) для интерпретации данных, введенных пользователем. Если для таких языков программирования, как PHP, Ruby, Python, существует множество фреймворков, использующих MVC, то для JavaScript это пока диковинка. Совсем недавно появился именно такой фреймворк для JavaScript - JavaScriptMVC ![]() Разработка фреймворка пока еще в стадии “альфа”, но тем не менее, он уже сейчас обладает внушительными возможностями. Есть большой набор дополнительных плагинов для использования AJAX, тестирования, добавления объекта History, работы с массивами, строками и много другое. Также, что немаловажно, возможно использование JavascriptMVC с другими библиотеками - jQuery, Prototype и др. Я решил попробовать библиотеку в действии и создать простое приложение. Вот что у меня получилось: demo.
Теперь шаг за шагом о том, как я сделал его. Шаг 1: установкаСкачайте дистрибутив и распакуйте его локально или на веб сервер. Шаг 2: HTMLСоздадим пустой HTML документ, в который добавим скрипт include.js с двумя параметрами - именем приложения и параметром, определяющим режим разработки: development, production, test, compress. Тип development удобен при разработке и отладке приложения, test при тестировании (автоматически появится pop-up окно с тестами), compress автоматически сожмет все скрипты, production - режим “готового” приложения.
Шаг 3: создание приложения.В параметре include.js мы указали название приложения - helloworld. Это значит, что скрипт include будет искать файл приложения helloworld.js в папке apps. Создадим его, и добавим туда несколько строк:
Здесь мы подключаем плагины view, controller и model, а затем подключаем контроллеры main и hello, которые будут управлять всеми событиями на странице. Контроллер main (MainController) - это специальный тип контроллера, который позволяет добавлять обработчики событий к объектам window и document. В последней строке мы добавляем модель hello, которая нужна для получения данных от сервера.
Шаг 4: Создание контроллеров.Контроллеры создаем в папке controllers, обязательно указывая для них постфикс _controllers.js. В файл main_controller.js пишем следующее:
Здесь мы инициализируем новый контроллер и функцию load, которая будет выполняться при загрузке страницы. В файл hello_controller.js пишем следующее:
В этом контроллере функция click будет выполняться для элементов с атрибутом class=”link”. Здесь следует упомянуть о правилах именования элементов, определяющих порядок присвоения контроллеров к элементам HTML:
Что касается аргумента params, то это объект, который включает в себя переменные event (объект “событие”), element (ссылка на элемент, который вызвал событие) и action (например “click” - тип события). Далее я использую функцию preventDefault() объект event чтобы предотвратить действие ссылки по умолчанию (объект event кроссбраузерный, поэтому это будет работать и в IE).
Шаг 5: создание шаблонов (View)Шаблоны подключаются примерно следующим образом:
Здесь параметр url указывает имя файла шаблона, который должен находиться в папке view. Для отображения шаблона (или обработки его содержимого) используется функция render(), в которую нужно передать объект с переменными шаблона. Пример:
В нашем примере я подключил черыре разных шаблона в контроллер main:
Самый главный шаблон здесь - layout.ejs, который определяет основную структуру документа, содержимое остальных трех передается в layout.ejs в качестве переменных шаблона. Содержимое этого шаблона запишем следующим образом:
Как видите это просто HTML с добавлением переменных шаблона в тэгах <%= … %>. Если у нас в шаблоне, к примеру есть переменная <%= header %>, а в функцию render() был передан объект data, то переменная шаблона header будет заменена на содержимое переменной data.header. Теперь создаем остальные шаблоны. header.ejs - “шапка” страницы:
sidebar.ejs - сайдбар:
В этом шаблоне помимо обычных тэгов, используются тэги без знака “равно” <% … %>. Они не возвращают результат, а их содержимое просто выполняется интерпретатором. Я использую их здесь для организации цикла. footer.ejs - “подвал” страницы:
Шаг 6: создание моделей (Model)В серверных приложениях MVC, таких как Ruby On Rails, Codeigniter и др., модели выполняют роль связующего звена между контроллерами и базой данных. В JavascriptMVC для этой цели используются асинхронные запросы к серверу при помощи библиотеки Jester, которая имитирует ActiveResource в приложениях Rails.
Здесь мы просто создаем объект класса Model. Для его создания я использовал только два параметра - имя модели и опции. В опциях указаны формат сообщений (json или xml), prefix - путь к файлам обработчикам (в данном примере путь будет /jmvc/resource) и urls - файлы, которые будут возвращать результат при выборке данных (get.php) создании (create.php) и обновлении (update.php). Для работы с данными в классе Model есть функции find() для выборки данных, create() - для добавления данных в БД, update() для обновления данных в БД и прочее. В данном примере я использую только функцию find() для получения записи (смотрите выше в контроллере links).
Здесь id - это параметр, который будет подставлен в URL (выше мы указали для запроса show: “get.php?id=:id”, т.е. если id=3, то получим запрос get.php?id=3). Последний параметр это callback для обработки полученных результатов. На этом всё. Смотрите демо, если нужно скачивайте пример. Только
устанавливать надо на веб сервер чтобы увидеть в работе работу модели.
Рубрика: Java Script
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|