Где должны жить веб-компоненты?

Для меня это большой вопрос относительно веб-компонентов; Обещание веб-компонентов заключается в том, что они предназначены для использования в качестве универсальных повторно используемых компонентов, которые может взять и запустить любой желающий; в конечном итоге возможность создавать и переделывать веб-компоненты для создания собственных приложений и использования существующих приложений.

Однако возникает большой вопрос, как реализовать такое видение, как:

  1. У нас есть идея приложения, мы создаем репозиторий для приложения, мы создаем веб-компоненты внутри репозитория приложения.

  2. У нас есть идея приложения, мы создаем github org для приложения, мы создаем репо для каждого веб-компонента

Вариант 1, похоже, уменьшит наибольшую часть накладных расходов, но увеличивает степень фрагментации, уменьшает обнаруживаемость и препятствует привлечению новых участников (поскольку теперь они сталкиваются со всем вашим приложением, а не только с веб-компонентом).

Вариант 2, похоже, увеличит накладные расходы, но уменьшит степень фрагментации, улучшив при этом обнаруживаемость веб-компонентов и возможность для участников приступить к работе с вашим веб-компонентом, поскольку группа специалистов по сопровождению может поддерживать один и тот же веб-компонент вместе .

Тем не мение. Вариант 1, хотя и увеличивает фрагментацию, кажется, что он лучше учитывает эволюцию веб-компонентов с течением времени, тогда как в варианте 2 будет обнаружено множество устаревших компонентов в пользу более качественных компонентов, разработанных позже в процессе разработки.

Тем не мение. Однако этому, вероятно, противостоит тот факт, что отказ от поддержки, согласованный сообществом, лучше, чем фрагментация компании. Например. лучше иметь a, b и c, веб-компоненты, где c является последним. Чем иметь, company1-a, company2-a, company3-a, при этом все они поддерживаются.

Итак, как можно реализовать обещание веб-компонентов, находя при этом хороший баланс с их реализацией?


person balupton    schedule 14.04.2014    source источник


Ответы (1)


Решаем, что должно быть многоразовым

Вы должны думать об этом на уровне компонентов, а не на уровне приложения. Если у вас есть полезные функции приложения, вполне вероятно, что они могут быть включены в компонент. На этом этапе автор выбирает, делать ли компонент доступным для других. В некоторых случаях не имеет смысла делиться компонентами (например, они относятся к приложению). Для компонентов, которыми следует делиться, команда Polymer поддерживает ваш № 2.

Одно репо на компонент

Если вы посмотрите на Polymer org, каждый компонент находится в отдельном репо. Идея состоит в том, что пользователи могут легко установить отдельные элементы по меню:

bower install Polymer/core-ajax

Получите то, что вам нужно, - это одно из обещаний веб-компонентов.

Компромисс высокой детализации: накладные расходы

Высокая степень детализации имеет свою цену: накладные расходы. Как авторы компонентов, мы готовы взяться за это. ИМО, гибкость для потребителей значительно превышает поддержку, которую мы берем на себя как авторы.

Создание наборов компонентов из нескольких репозиториев

Имейте в виду, что большинство людей не создадут сотни элементов. Они создадут всего несколько. Для поставщиков не так уж и сложно создать репозиторий оболочки, который объединяет набор компонентов. Например, все наши основные элементы можно установить с помощью одной команды Bower:

bower install Polymer/core-elements

Зависимости управляются за нас Bower. Каждое репозиторий компонентов поддерживает свой собственный список зависимостей.

person ebidel    schedule 14.04.2014
comment
Спасибо за ответ, это интересно, поскольку кажется, что это сильно зависит от bower и ограничений bower (репо для каждого пакета bower). Будет интересно увидеть, как этот подход будет отличаться при использовании другого диспетчера пакетов (например, component.io или npm, или без диспетчера пакетов и прямого импорта html вместо этого). - person balupton; 14.04.2014