[Из песочницы] Расширенный HTML

В этой статье хотел бы рассказать немного про библиотеку, первую версию которой я создал еще в конце прошлого года. Суть очень простая — расширить возможности языка HTML, чтобы можно было без JavaScript’а писать простые и рутинные вещи: отправка формы в json формате, загрузка HTML тимплейтов на определенную страницу (по сути модульная система для HTML через http/s запросы), турболинки (привет пользователям RoR), простая шаблонизация на основе ответов ajax запросов и немного еще.

image

Библиотека называется EHTML или Extended HTML. Основана она на небезызвестной идее веб компонентов. Она доступна на гитхабе, там довольно таки структурированная документация с примерами. В этой статье я просто опишу основные идеи, возможно кому-то это зайдет.

Начнем с того, что для использования либы не нужен ни npm, ни cli тула для создания проекта, все что требуется — это HTML странички, где вы включаете скрипт библиотеки:


  

Начнем с простого — составление HTML странички из множества других:



  
    
  

  
    

Для этого мы используем кастомный элемент e-html, который имеет единственный атрибут data-src, где мы указываем где раздается HTML часть страницы. То есть если например first.html выглядит как-то так:

то в конечном счете, наша страница будет зарендерена следующим образом:



  
    
  

  
    

То есть теги e-html будут заменены контентом из HTML файла, который мы указывали в data-src атрибуте.

В библиотеке широко применяются элементы с тегом template. Тут вы можете найти информацию про этот элемент. Одним из примеров использования этого элемента является e-wrapper, который появился в последней версии либы. По сути это