Home - msdoom2011/subclass-framework GitHub Wiki

##Что такое Subclass

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

Subclass особенно прийдется по душе разработчикам, имеющим небольшой опыт разработки на JavaScript, но умеющим писать код используя ООП принципы и привыкшим использовать паттерны проектирования (не типичные для JavaScript), и не представляющим себе как можно выстроить архитектуру проекта не полагаясь на такие структурные элементы, как, например, интерфейсы, абстрактные классы и т.д.


##3 проблемы, которые поможет решить Subclass:

1. Масштабируемость

Каждый проект, написанный на базе Subclass, представлен в виде модуля или набора модулей. Любой модуль проекта может включать в себя зависимости, т.е. другие модули, расширяющие его функциональность.

2. Автоматическая подгрузка классов

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

3. Построение проекта с использованием ООП принципов и паттернов проектирования

Чем сложнее и масштабируемей проект, и чем больше функциональности на него возложено, тем, по определению, сложнее должна быть его архитектура. По-этому, для подобного рода задач вполне целесообразно использовать объектно ориентированный подход. Для обеспечения такой возможности, Subclass предоставляет возможность создавать необходимые для этого структурные элементы, такие как: классы, абстрактные классы, трейты (или миксины), интерфейсы.


##Особенности

  1. Возможность создавать структурные элементы: классы, абстрактные классы, трейты, интерфейсы;
  2. Динамическое создание новых структурных элементов (классов, абстрактных классов...) и редактирование определения существующих;
  3. Reflection API;
  4. Отсутствие необходимости собирать проект (реализована втоматическая подгрузка классов);
  5. Возможность расширения функциональности проекта;
  6. Возможность расширения функциональности фреймворка;
  7. Не имеет зависимостей (не зависит от стороннего JS кода).

##Материалы

  1. С чего начать;
  2. Обучающие материалы;
  3. Перечень API.