Об этом проекте
Diffuse — это музыкальный плеер, который подключается к облачным и распределенным хранилищам. Он построен как набор независимых от фреймворков пользовательских DOM-элементов (веб-компонентов), которые позволяют разработчикам собирать аудиоплеер, обрабатывать и просматривать аудиометаданные, перечислять аудиофайлы и потоки из различных источников, API и серверов, а также определять, как сохраняются или синхронизируются пользовательские данные.
Ключевые части проекта:
- Пользовательские элементы: переиспользуемые веб-компоненты для создания плееров, обработки метаданных, перечисления источников и сохранения пользовательских данных.
- HTML-загрузчик: загружает «интерфейсы» из локального кэша пользовательских данных, стандартного набора Diffuse, HTTP(S)-URL или URI AT Protocol. Интерфейсы получают дополнительные «функции», называемые фасетами, также загружаемые из локального кэша.
- Основа: стандартная конфигурация пользовательских элементов, используемая в стандартных фасетах. Элементы могут обмениваться данными между вкладками и фреймами через атрибут `group`.
- Лексиконы: схемы данных в виде лексиконов atproto, хранящиеся в каталоге `lexicons`.
Цель — кооперативное, податливое программное обеспечение. Более подробная информация доступна на сайте проекта.
Использование разработчиками: библиотеку можно использовать либо через развернутый экземпляр (элементы ссылаются на JavaScript-файлы), либо через JavaScript-пакет на JSR. Пользовательские элементы используются как любые другие DOM-элементы, либо в HTML, либо путем создания экземпляра класса. Пример показывает загрузку элемента движка очереди через тег script или его импорт и добавление в тело документа с атрибутом `group`.
Сборка из исходников требует Deno. Команды включают генерацию определений типов, сборку и обслуживание. Стек включает Deno, веб-компоненты, веб-воркеры (shared и service workers), сигналы (в настоящее время alien-signals, с надеждой на предложение TC39), lit-html, music-metadata, Lume и ESBuild.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.