- Сообщения
- 75
- Реакции
- 30
Всех с наступающим!
Я сейчас работаю над одним, на мой взгляд, амбициозным проектом, скриншот которого я приложил, но речь не о нём . Скажу только, что библиотеки, которые я разрабатываю в ходе работы над проектом, и которыми решил поделиться – уже достаточно самостоятельные и, на мой взгляд, действительно имеют определённую ценность и уже сейчас с лёгкостью могут быть использованы для облегчения работы над проектами разной степени сложности.
Пару слов о библиотеке MVC:
Начнём с MVC.jsx– это не что иное, как имплементация известного паттерна проектирования, разрабатываемая мной специально для AdobeExtendScript и ScriptUI. Что бы сильно не растекаться мыслями по бумаге – просто привожу пример небольшого полноценного приложения, использующего мою библиотеку:
Данный файл и ещё один, чуть более интересный находятся в архиве с библиотекой. Стоит сказать, что главная идея библиотеки – не только максимальное разделение моделей и их представлений в логике приложения но и максимально простая реализация данной парадигмы MVC с точки зрения программиста.
Первое требование в MVC.jsx реализуется таким образом, что мои модели абсолютно ничего не знают (и не обязаны знать) не только про свои представления, но и про контролёры. Представления, в свою очередь, тоже ничего не знают о моделях (могут узнать, если вам это понадобиться). Им известно только чуть-чуть о контролёрах, самую малость, так, что это может быть совсем незаметно…
Что касается других файлов из архива, скажу пару слов:
Collection.jsx — содержит класс, реализующий коллекции. Не буду здесь много про него рассказывать, скажу только что он мне был крайне необходим для реализации MVC, а в папке test есть отличный вводный пример.
Monkeys.jsx — ну куда же без него. Это небольшой сборник вспомогательных методов, например помогающих реализовать нужное мне наследование. Содержимое его навеяно известными библиотеками underscore.js, prototype.js и личными изысканиями «правильного» пути. Хочу только предупредить – это не тот Monkeys.jsx, который сопровождает многие js–проекты в мире Web.
_debug.jsx — сюда я поместил свои реализации методов _debug() и log() – ценность которых в отладке скриптов я просто не могу передать . Ну ещё там есть немного мусора… в любом случае всё это в фазе активной разработки.
Вот собственно и вся презентация – пользуйтесь!
П.С. Работа над MVC сейчас активно продолжается, сейчас я обдумываю добавление событийной модели взаимодействий между моделями и объектами приложения (будем имплементировать Observer)… так что ещё много чего планирую сделать.
Тоже касается и Collection– не паханное поле для рефакторинга .
Библиотеки выложены в обменнике:
http://forum.rudtp.ru/resources/biblioteka-mvc-dlja-es.362/history
Я сейчас работаю над одним, на мой взгляд, амбициозным проектом, скриншот которого я приложил, но речь не о нём . Скажу только, что библиотеки, которые я разрабатываю в ходе работы над проектом, и которыми решил поделиться – уже достаточно самостоятельные и, на мой взгляд, действительно имеют определённую ценность и уже сейчас с лёгкостью могут быть использованы для облегчения работы над проектами разной степени сложности.
Пару слов о библиотеке MVC:
Начнём с MVC.jsx– это не что иное, как имплементация известного паттерна проектирования, разрабатываемая мной специально для AdobeExtendScript и ScriptUI. Что бы сильно не растекаться мыслями по бумаге – просто привожу пример небольшого полноценного приложения, использующего мою библиотеку:
Код:
SnpMVC_Simple.jsx
#include "../MVC.jsx"
// Создаём объект «приложение»:
var myApp = new MVC.Application();
// Создаём объект «модель»
var myData = myApp.addModel({
id:"myData",
value:{ txt:"Очень большой текст его можно редактировать" }
});
// Добавляем представления:
myApp.addView({ id:"st", view:"statictext" });
myApp.addView({ id:"et", view:"edittext { characters:30 }" });
myApp.addView({ id:"bt", view:"button { text:'Ok'}" }); // данное представление не связано ни с одной моделью, оно просто добавится к диалогу.
// Добавляем контролёры.
myApp.addController({ binding:"myData.value.txt:st.text" });
myApp.addController({ binding:"myData.value.txt:et.text" });
// Запуск приложения: Application.run()
myApp.run();
Первое требование в MVC.jsx реализуется таким образом, что мои модели абсолютно ничего не знают (и не обязаны знать) не только про свои представления, но и про контролёры. Представления, в свою очередь, тоже ничего не знают о моделях (могут узнать, если вам это понадобиться). Им известно только чуть-чуть о контролёрах, самую малость, так, что это может быть совсем незаметно…
Что касается других файлов из архива, скажу пару слов:
Collection.jsx — содержит класс, реализующий коллекции. Не буду здесь много про него рассказывать, скажу только что он мне был крайне необходим для реализации MVC, а в папке test есть отличный вводный пример.
Monkeys.jsx — ну куда же без него. Это небольшой сборник вспомогательных методов, например помогающих реализовать нужное мне наследование. Содержимое его навеяно известными библиотеками underscore.js, prototype.js и личными изысканиями «правильного» пути. Хочу только предупредить – это не тот Monkeys.jsx, который сопровождает многие js–проекты в мире Web.
_debug.jsx — сюда я поместил свои реализации методов _debug() и log() – ценность которых в отладке скриптов я просто не могу передать . Ну ещё там есть немного мусора… в любом случае всё это в фазе активной разработки.
Вот собственно и вся презентация – пользуйтесь!
П.С. Работа над MVC сейчас активно продолжается, сейчас я обдумываю добавление событийной модели взаимодействий между моделями и объектами приложения (будем имплементировать Observer)… так что ещё много чего планирую сделать.
Тоже касается и Collection– не паханное поле для рефакторинга .
Библиотеки выложены в обменнике:
http://forum.rudtp.ru/resources/biblioteka-mvc-dlja-es.362/history
Вложения
Последнее редактирование: