Полимерные элементы сторонних производителей

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

Что мне нужно сделать, так это создать веб-компонент, который принимает в качестве входных данных со страницы вызывающего абонента URL-адрес изображения (атрибуты элемента в порядке), а внутри полимерного компонента он отображает изображение особым образом, используя холст HTML5.

Мне кажется, что полимер в настоящее время не предназначен для использования третьими лицами. Причины, почему:

  • необходимо иметь достаточный контроль над страницей вызывающего абонента, чтобы добавить platform.js к <head>, в частности к <head>
  • моя версия platform.js потенциально может отличаться от platform.js вызывающей страницы (или, как минимум, я загрязняю страницу JS-объектами полимера, верно?)
  • в стиле браузеров, отличных от Chrome, и другие теги вводятся в <head>, возможно, конфликтуя с исходной страницей
  • необходимо иметь контроль над тегом <body> вызывающего абонента, если вы хотите установить параметры, чтобы избежать FOUC

Традиционно все мои веб-компоненты были построены с помощью iframe, и я хотел бы модернизировать свой подход с прицелом на «теневое будущее».

Есть ли способ использовать полимер безопасным для третьих лиц способом? Возможно, мэшап с [lightningjs?


person Micah    schedule 29.03.2014    source источник
comment
Между прочим, если вам в конечном итоге нужна и (можете позволить) броня, которую может предоставить iframe, мое (непроверенное) впечатление таково, что да, lightningjs.com может подойти.   -  person Scott Miles    schedule 31.03.2014
comment
ДОЛЖНА ли быть платформа.js в голове? Итак, было бы неплохо создать компоненты, которые можно было бы использовать для внешних сайтов, например, компонент входа в Facebook. Я полагаю, вы могли бы предоставить фрагменты, которые могли бы загрузить js полимера и сразу после этого встроить элемент тега полимера. Я полагаю, что это не может быть хуже, чем вставка кода IFrame для потребителя.   -  person drogon    schedule 18.07.2015


Ответы (1)


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

Самое широкое понятие IMO заключается в том, что разработчики смогут выходить в Интернет и находить множество веб-компонентов на выбор. Это похоже на возможность выбора из огромного набора подключаемых модулей JQuery, но с гораздо большей степенью совместимости и компоновки, поскольку каждый экземпляр можно рассматривать как традиционный элемент.

платформа.js

Platform.js моделирует будущие возможности браузера, называемые веб-компонентами. Существуют практические реалии, позволяющие сделать эту работу прямо сейчас, так что да, для того, чтобы третья сторона вообще могла использовать веб-компоненты, им необходимо подписаться на platform.js (и все, что влечет за собой) . Это правда, что этот факт затрудняет (сегодня) внедрение веб-компонентов на чью-либо страницу без их согласия.

моя версия platform.js потенциально может отличаться от страницы вызывающего абонента

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

Это не отличается от современных библиотек, например. JQuery. Вы можете загрузить множество копий и/или версий JQuery в один документ, если не будете осторожны, но это расточительно. Предпочтительна координация.

За исключением platform.js, веб-компоненты основаны на N модулях, использующих M зависимостей, и все они оптимально работают вместе. Это еще один способ, которым совместное использование является основой дизайна.

в стиле браузеров, отличных от Chrome, и другие теги вводятся в , что может привести к конфликту с исходной страницей.

Это все цена полифиллинга. Если вам нужна чистота среды, вам придется подождать, пока веб-компоненты не будут широко реализованы изначально. С практической точки зрения теги стиля очень специфичны и вряд ли будут конфликтовать с чем-либо.

необходимо иметь контроль над тегом вызывающего абонента, если вы хотите установить параметры, чтобы избежать FOUC

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

Традиционно все мои веб-компоненты были созданы с помощью iframe.

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

Хотя platform.js по своей природе изменяет общую платформу, сами пользовательские элементы не должны связываться с глобальным пространством имен пользователя или его CSS (хотя они могут). Код может быть ограничен прототипом элемента, а CSS и DOM могут быть спрятаны внутри ShadowDOM. Общая цель состоит в том, чтобы ничего из этого не вытекало из Элемента, если только кто-то этого не хочет.

person Scott Miles    schedule 29.03.2014