Home - msdoom2011/subclass-framework GitHub Wiki
##Что такое Subclass
Subclass - это расширяемый JavaScript фреймворк, позволяющий выстроить структуру масштабируемого проекта любой сложности и размеров, и удовлетворить практически любой каприз, связанный с построением его архитектуры.
Subclass особенно прийдется по душе разработчикам, имеющим небольшой опыт разработки на JavaScript, но умеющим писать код используя ООП принципы и привыкшим использовать паттерны проектирования (не типичные для JavaScript), и не представляющим себе как можно выстроить архитектуру проекта не полагаясь на такие структурные элементы, как, например, интерфейсы, абстрактные классы и т.д.
##3 проблемы, которые поможет решить Subclass:
1. Масштабируемость
Каждый проект, написанный на базе Subclass, представлен в виде модуля или набора модулей. Любой модуль проекта может включать в себя зависимости, т.е. другие модули, расширяющие его функциональность.
2. Автоматическая подгрузка классов
Subclass умеет самостоятельно в автоматическом режиме подгружать файлы с классами. Такая особенность в значительной степени упрощает подключение проекта на страницу, поскольку не нужно задумываться о мануальном подключении на страницу всех файлов проекта и следить за этим на протяжении всего периода разработки. Вместо этого достаточно подключить на страницу только файлы с определениями модулей проекта.
3. Построение проекта с использованием ООП принципов и паттернов проектирования
Чем сложнее и масштабируемей проект, и чем больше функциональности на него возложено, тем, по определению, сложнее должна быть его архитектура. По-этому, для подобного рода задач вполне целесообразно использовать объектно ориентированный подход. Для обеспечения такой возможности, Subclass предоставляет возможность создавать необходимые для этого структурные элементы, такие как: классы, абстрактные классы, трейты (или миксины), интерфейсы.
##Особенности
- Возможность создавать структурные элементы: классы, абстрактные классы, трейты, интерфейсы;
- Динамическое создание новых структурных элементов (классов, абстрактных классов...) и редактирование определения существующих;
- Reflection API;
- Отсутствие необходимости собирать проект (реализована втоматическая подгрузка классов);
- Возможность расширения функциональности проекта;
- Возможность расширения функциональности фреймворка;
- Не имеет зависимостей (не зависит от стороннего JS кода).
##Материалы