Полимерни елементи на трети страни

Опитвам се да разбера дали полимерът е създаден за конкретен случай на употреба -- уеб компоненти на трети страни.

Това, което трябва да постигна, е да създам уеб компонент, който приема като вход от страницата на обаждащия се URL адрес на изображение (атрибутите на елемент са ок) и вътре в полимерния компонент изобразява изображението по специален начин, използвайки HTML5 платно.

За мен изглежда, че полимерът в момента не е създаден за употреба от трети страни. Причини защо:

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

Традиционно всичките ми уеб компоненти са изградени чрез вградени рамки и бих искал да модернизирам подхода си с оглед към „бъдеще в сянка“.

Има ли начин да се използва полимер по безопасен за трети страни начин? Може би комбинация с [lightningjs?


person Micah    schedule 29.03.2014    source източник
comment
Fwiw, ако в крайна сметка имате нужда и (можете да си позволите) вида броня, която iframe може да осигури, моето (непроверено) впечатление е, че да, lightningjs.com може да е начин да отидете.   -  person Scott Miles    schedule 31.03.2014
comment
Трябва ли platform.js да е в главата? Така че би било хубаво да се създадат компоненти, които да се добавят към външни сайтове, като компонента за влизане във facebook. Предполагам, че бихте могли да предоставите фрагменти, които биха могли да заредят js на полимер и да вградят елемента на полимерния етикет веднага след това. Не може да бъде по-лошо от поставянето на IFrame код за потребителя, предполагам.   -  person drogon    schedule 18.07.2015


Отговори (1)


Polymer и Web Components са изцяло структурирани около използване от трети страни, това е централен стълб на дизайна.

Най-общата концепция на IMO е, че разработчиците ще могат да отидат в мрежата и да намерят множество уеб компоненти, от които да избират. Това не е различно от възможността да избирате от огромен набор от плъгини JQuery, но с много по-голяма степен на оперативна съвместимост и композиция, тъй като всеки екземпляр може да се третира като традиционен елемент.

platform.js

Platform.js моделира бъдещите възможности на браузъра, наречени уеб компоненти. Има практически реалности това да работи точно сега, така че да, за да може трета страна изобщо да използва уеб компоненти, тя ще трябва да се включи в platform.js (и всичко, което води до това) . Вярно е, че този факт затруднява (днес) инжектирането на уеб компоненти в нечия страница без тяхното съгласие.

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

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

Това не е различно от съвременните библиотеки, напр. JQuery. Можете да заредите множество копия и/или версии на JQuery в един документ, ако не сте внимателни, но е разточително. Координацията е за предпочитане.

С изключение на platform.js, уеб компонентите са насочени към N модула, използващи M зависимости и всички те работят оптимално заедно. Това е друг начин, по който споделянето е стълб на дизайна.

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

Това е цялата цена на полифилинга. Ако се нуждаете от чистота на средата, ще трябва да изчакате, докато уеб компонентите се внедрят масово. От практическа гледна точка етикетите за стил са много специализирани и е малко вероятно да са в конфликт с нещо.

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

Това не е абсолютно вярно, можете да изградите уеб компоненти, които контролират собствените си FOUC до определен момент. Но това е много допълнителна работа и като трета страна, вие наистина не можете да знаете какви механизми за зареждане или идиоми ще използва даден разработчик, така че опитът да се оркестрира твърде много без неговото съдействие ще бъде трудно.

Традиционно всичките ми уеб компоненти са изградени чрез iframes

IFRAME е доста по-различен от уеб компонентите. IFRAME е нов контекст и така имате много повече предпазна мрежа, но е тежък и има разходи за координация.

Въпреки че platform.js по своята същност променя споделената платформа, самите потребителски елементи не трябва да се забъркват с глобалното пространство на имената на потребителя или неговия CSS (въпреки че могат). Кодът може да бъде ограничен до прототипа на елемента, а CSS и DOM могат да бъдат скрити в ShadowDOM. Общото намерение е нищо от това да не изтича от Елемента, освен ако някой не го иска.

person Scott Miles    schedule 29.03.2014