Основы sFF
Основная концепция sFF состоит в максимальной изолированности объектов фреймворка (во избежание коллизий при создании объектов и их функций, и обращении к ним) от объекта Window. Основные принципы разработки:
Всё находится в одном месте.
Ко всему обращаться единообразно.
Всё доступно для всех.
ООП - основа приложений sFF.
Все операции с HTML-элементами и стилями проводятся внутри классов компонентов, проведение их из пользовательского кода крайне не рекомендуется.
Пользователь может разрабатывать и подключать собственные и сторонние библиотеки классов.
Всё работает максимально быстро.
Весь sFF со всем его содержимым (объектами, компонентами, функциями, картами, коллекциями и т.д.) расположен в классе globalApplicationObjectStore (обращение к контенту осуществляется вызовом функции window.$_GAOS() или $_GAOS()). Первая выполняемая функция запуска приложения - создание уникального для приложения экземпляра класса globalApplicationObjectStore, после чего в приложении становятся доступен весь его контент.
В DOM (Объектной Модели Документа) HTML все элементы страницы рассматриваются в качестве структурированной группы узлов и объектов, могущих иметь свойства и методы. DOM связывает элементы страниц со скриптами. При этом элементы страницы и JS-код с его объектами и классами не являются единым целым и живут отдельно друг от друга.
sFF объединяет JS и элементы страницы (совмещая и упрощая деятельность верстальщика и JS-программиста), создавая компоненты из классов, включая в них визуальную (HTML + CSS) и программную (JS) части. И поскольку компоненты всегда имеют программную часть, собственные id и имя, внутреннюю иерархическую структуру, программные свойства и методы, отпадает потребность использовать селекторы для обнаружения элементов с целью применения к ним каких-либо операций. Компонент, его положение, отображение и функциональное поведение рассматривается как единое целое. Компонент неделим, но при этом его класс сам может состоять из нескольких связанных классов компонентов.
Внутри классов компонентов НЕ ДОЛЖНО БЫТЬ "свободно шатающихся" свойств и методов, так как при нарушении этого правила в случаях наследования классов друг от друга по цепочке, результирующий класс может содержать в себе любое количество свойств и методов неопределённого происхождения, взаимно перекрывающих друг друга по именам (конфликт имён), расположенных на произвольном уровне вложенности и непонятно каким образом классифицируемых и изменяемых в Редакторе свойств. Таким образом, адресация к классу компонента выглядит как Label; адресация к включенному классу выглядит Label.Panel; адресация к свойству - как Label.Panel.cursor. ВСЕ классы компонентов ДОЛЖНЫ ИМЕТЬ трёхуровневую вложенность адресации свойства (ни больше, ни меньше).
Ответ на вопрос, почему обращение к объектам осуществляется по имени или идентификатору, а не через глобальную переменную, прост: потому что для хранения компонентов предназначена главная карта (Map) sFF, имеющая название ACM (Application Component Map) и находящаяся по адресу $_GAOS().Component.Comp или $_GC() (что соответствует концепции sFF), а вовсе не глобальный объект Window.
Ответ на вопрос, почему такой странный доступ к объектам через $ и функции, скажем, что можно и от Window путь провести, но он будет ещё более странным, а про $ и функции - сравните, например, с jQuery. Переменные и пользовательские функции таковы потому, что они тоже расположены в картах (Map), как и всё в sFF.
Last updated