/mfw

Primary LanguageJavaScript

mfw logo

mfw - Еще один микрофреймворк.

Я не претендую на уникальность кода, но весь код написан мной самостоятельно с учетом всего моего опыта веб-мастерства. Сделан с любовью к пользователю.

API фреймфорка состоит из 4-х функций.

$( [parent,] ... selector )

Возвращает найденый элемент соответствующий selector. Если необходим поиск внутри конкретного элемента, корневой элемент поиска parent указывается до selector. Уточнящийся поиск обходит все переданные функции аргументы слева направо. Аргументов может быть сколько угодно. Принимает в качестве аргументов строки selector и объекты элементов.

Примеры использования

Тестовое окружение

 <ul>
   <li> 1 </li>
   <li> 2 </li>
   <li> 3 </li>
 </ul>

Использование

 $( 'ul li:last-child' ).innerHTML            // => 3
 $( 'ul', 'li:last-child' ).innerHTML         // => 3
 $( $( 'ul' ), 'li:last-child' ).innerHTML    // => 3
 $`ul li:last-child`.innerHTML                // => 3

$$( [parent,] ... selector )

Возвращает коллекцию найденных соответствующих selector элементов. Если необходим поиск внутри конкретного элемента, корневой элемент поиска parent указывается до selector. Уточнящийся поиск обходит все переданные функции аргументы слева направо. Аргументов может быть сколько угодно. Принимает в качестве аргументов строки selector и объекты элементов.

Примеры использования

Тестовое окружение

 <ul>
   <li> 
      <p> 1 </p> 
      <ul>
        <li> 1.1 </li>
        <li> 1.2 </li>
        <li> 1.3 </li>
      </ul>
   </li>
   <li> 
      <p> 2 </p> 
      <ul>
        <li> 2.1 </li>
        <li> 2.2 </li>
        <li> 2.3 </li>
      </ul>
   </li>
   <li> 3 </li>
 </ul>

Использование

 $$( 'ul li:last-child' )               // => [ <li> 1.3 </li>, <li> 2.3 </li>, <li> 3 </li> ]
 $$( 'ul', 'li:last-child' )            // => [ <li> 1.3 </li>, <li> 2.3 </li>, <li> 3 </li> ]
 $$( $( 'ul' ), 'li:last-child' )       // => [ <li> 1.3 </li>, <li> 2.3 </li>, <li> 3 </li> ]
 $$`li:last-child`                      // => [ <li> 1.3 </li>, <li> 2.3 </li>, <li> 3 </li> ]
 $$( 'ul li:nth-child(2)', 'ul li:last-child' )  // => [ <li> 2.3 </li> ]

_( def )

_( { ... def } )

_( [ { def } ] )

Создает элемент по параметрам:

  • n - имя тега элемента

  • x - пространство имен XML (xmlns)

  • d - корневой документ

  • o - клонировать объект

  • t - клонировать вместе с деревом потомства

  • u - использовать уже созданный элемент

  • c - список классов элемента

  • p - параметры (аттрибуты) элемента

  • k - ключевые значения объекта элемента

  • e - обработчики событий элемента

  • s - значения стиля элемента

  • i - структура внутренних элементов

  • z - выжать результат в массив элементов

  • h - внутренний html-код

  • f - поместить элемент первым внутрь элемента

  • l - поместить элемент последним внутрь элемента

  • b - поместить элемент перед элементом

  • a - поместить элемент после элемента

  • r - заменить указаннй элемент текущим

  • m - применить к объекту определения элемента миксины

  • w - применить к результирующему элементу миксины

    ┏━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
    ┃Имя па-┃ Тип                   ┃ значение  ┃ описание эффекта                       ┃             
    ┃раметра┃ параметра             ┃ умолчания ┃ действия                               ┃
    ┣━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
    ┃ Параметры иициализация элемента      /* используется {d,n,x} или {o,t} или {u}) */ ┃
    ┠───────┰───────────────────────┰───────────┰────────────────────────────────────────┨
    ┃ def.d ┃  Document             ┃ document  ┃ Ссылка на используемый объект document ┃
    ┃ def.n ┃  String               ┃ "div"     ┃ Название тэга элемента                 ┃
    ┃ def.x ┃  String               ┃ ""        ┃ Область имён элемента (xmlns)          ┃
    ┃ def.o ┃  Element              ┃ undefined ┃ Клонирование элемента вместо создания  ┃
    ┃ def.t ┃  Boolean              ┃ false     ┃ Клонировать вместе с потомками         ┃
    ┃ def.u ┃  Element              ┃ undefined ┃ Использование элемента вместо создания ┃
    ┠───────┸───────────────────────┸───────────┸────────────────────────────────────────┨
    ┃ Характиристики элемента               /* используются параметры без ограничений */ ┃
    ┠───────┰───────────────────────┰───────────┰────────────────────────────────────────┨
    ┃ def.c ┃  [String]|String      ┃ undefined ┃ Список классов элемента                ┃
    ┃ def.p ┃  Object               ┃ {}        ┃ Значения параметров элемента           ┃
    ┃ def.e ┃  Object               ┃ {}        ┃ Обработчики событий элемента           ┃
    ┃ def.k ┃  Object               ┃ {}        ┃ Значения ключевых свойств элемента     ┃
    ┃ def.s ┃  Object               ┃ {}        ┃ Стили элемента                         ┃
    ┠───────┸───────────────────────┸───────────┸────────────────────────────────────────┨
    ┃ Размещение элемента                               /* используются {h} или {i,z} */ ┃
    ┠───────┰───────────────────────┰───────────┰────────────────────────────────────────┨
    ┃ def.h ┃  String               ┃ ""        ┃ Переданный код в innerHTML             ┃
    ┃ def.i ┃  [Element]|Element    ┃ []        ┃ Вложеные внутрь элементы               ┃
    ┃ def.z ┃  Boolean              ┃ false     ┃ Выполнить .flat() массиву результата   ┃
    ┠───────┸───────────────────────┸───────────┸────────────────────────────────────────┨
    ┃ Параметры размещения элемента                /* используется один из параметров */ ┃
    ┠───────┰───────────────────────┰───────────┰────────────────────────────────────────┨
    ┃ def.f ┃  Element              ┃ undefined ┃ Вставить первым элементом внутырь      ┃
    ┃ def.l ┃  Element              ┃ undefined ┃ Вставить последним элементов внутрь    ┃
    ┃ def.b ┃  Element              ┃ undefined ┃ Вставить элемент до указаного          ┃
    ┃ def.a ┃  Element              ┃ undefined ┃ Вставить элемент после указаного       ┃
    ┃ def.r ┃  Element              ┃ undefined ┃ Заменить элемент вместо указаного      ┃
    ┠───────┸───────────────────────┸───────────┸────────────────────────────────────────┨
    ┃ Прочие параметры                      /* используются параметры без ограничений */ ┃
    ┠───────┰───────────────────────┰───────────┰────────────────────────────────────────┨
    ┃ def.m ┃  [Function]|Function  ┃ undefined ┃ список ранних миксинов для def         ┃
    ┃ def.w ┃  [Function]|Function  ┃ undefined ┃ список поздних миксинов для элемента   ┃
    ┗━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
    

Примеры использования

Пример 1.

  • окружение:

        <ul>
          <li> 1 </li>
          <li> 2 </li>
          <li> 3 </li>
        </ul>
    
  • код:

        _( { n: 'li', h: '4', l: $`ul` } )
    
  • результат:

        <ul>
          <li> 1 </li>
          <li> 2 </li>
          <li> 3 </li>
          <li> 4 </li>
        </ul>
    

Пример 2.

  • окружение:

     <ul>
       <li> 1 </li>
       <li> 2 </li>
       <li> 3 </li>
     </ul>
    
  • код:

     _( { n: 'li', h: '0', f: $`ul` } )
    
  • результат:

     <ul>
       <li> 0 </li>
       <li> 1 </li>
       <li> 2 </li>
       <li> 3 </li>
     </ul>
    

Пример 3.

_({n: 'a', p: { href: '/', title: 'Главная страница' }, h: '/главная' })
  // =>  <a href="/" title="Главная страница"> /главная </a>

__` <template/> `

Функция рендерит структуру из переданного кода html(xml) вместе с переданными элементами.