Skip to content

Mickommic/tokenize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Реактивность без React или как обойтись без id в html элементах

tokenize – это javascript функция, которая собирает референсы в удобную структуру с ветками, подветками и листьями (ссылками на DOM элементы)

Функция tokenize принимает следующие аргументы:

  • a. корневой DOM элемент, начало рекурсии (при старте приложения, обычно это document.body), обязательный аргумент;
  • b. Ваш объект-контейнер или экземпляр Вашего объекта/класса, в который будут собираться найденные ветки и листья. Если не указан или логическое ЛОЖЬ – объект-контейнер будет создан;
  • c. булевой аргумент. Если логическая ИСТИНА – найденные атрибуты удаляться не будут;
  • d. целочисленный аргумент – уровень вложенности для рекурсии. Если не указан или логическое ЛОЖЬ – без ограничений;
  • e. строковой аргумент – имя родительского объекта (имя токена).

Рекурсивно вызываемая, на каждом DOM элементе, функция tokenize, путём простого перебора, ищет атрибуты, имена которых маркированы спецсимволами:

  • * "звёздочка" – токен-ветка (объект-контейнер или экземпляр объекта);
  • ^ "карет" – токен-лист (ссылка на DOM элемент).

Я выбрал именно эти спецсимволы, так-как только эти хорошо заметны (зрительно) в гипертексте.

Имена атрибутов без "*" и без "^" (а в случае "звёздного" атрибута, то так же и без имени пользовательского объекта/класса, при наличии), используется как имя токена. И в родительском объекте создаётся параметр с этим именем, который ассоциируется с объектом или с ссылкой на DOM элемент. Перед ассоциированием имена токенов проверяются на конечную последовательность двух символов "[]" (квадратные скобки). При нахождении оных, они удаляются из имени токена, и в родительском объекте создаётся параметр-массив (если он ещё не создан), в который и добавляется (методом push) новый объект или ссылка на DOM элемент.

В объекте, созданном при нахождении атрибута со звёздочкой, будь то объект-контейнер или экземпляр пользовательского объекта/класса, создается параметр с именем "_" (нижнее подчёркивание), который ассоциируется с DOM элементом. Этот же объект и имя его токена будет передаваться аргументами при рекурсивном вызове tokenize`а.

Предварительно имена "звёздных" атрибутов проверяются на наличие в них имени пользовательского объекта/класса, указанного через знак "-" (минус). При нахождении подобного, tokenize попытается создать экземпляр объекта (если этот объект присутствует в родительском объекте или в глобальном контексте и доступен через window[искомое]), передав в его конструктор следующие аргументы (по порядку):

  1. ссылка на элемент, которому принадлежит найденный атрибут;
  2. значение "звёздного" атрибута (value);
  3. родительский объект-ветка;
  4. имя родительского объекта (имя токена).

Important

Предупреждаю заранее. Так-как браузеры lowercase`ят атрибуты html элементов, использовать заглавные буквы в именах пользовательских объектов/классов не получится.

Возможности tokenize не ограничены только лишь его начальным вызовом, при старте приложения. К примеру, если во время работы приложения, каким-либо способом было получен новый контент и вставлен где-либо в DOM дереве через "innerHTML", то этот новый контент может быть "токенизирован" отдельно, путём вызова tokenize на том элементе, куда был вставлен новый контент.

About

References to HTML elements without ids

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors