Сочетание полимера 1.0 с 3.0

Я работаю над изменением существующего проекта, построенного на полимере 1.0.

Поскольку текущей версией полимера является полимер 3.0, как мы можем включить его, не внося значительных изменений в существующее приложение.

Основное отличие, которое я обнаружил, заключается в том, что в полимере 1.0 импортируются файлы .html, тогда как в полимере 3.0 импортируются файлы .js.

Добавлено ниже сравнение двух импортов

полимер 1

<head>
<link rel="import" href="../../bower_components/polymer/polymer-element.html">
</head>

полимер 3

import {PolymerElement, html} from '@polymer/polymer';

Когда мы пытаемся установить компоненты, создаются файлы js. Есть ли способ создавать полимерные компоненты старого типа через CLI?


person Sanjeev S    schedule 04.03.2019    source источник
comment
ты пробовал modulizer? github.com/Polymer/polymer-modulizer   -  person HakanC    schedule 04.03.2019
comment
Модулятор @HakanC работает с версиями от 2.0 до 3.0. не нашел ни одного документа, поддерживающего преобразование 1.0 -> 3.0   -  person Sanjeev S    schedule 04.03.2019


Ответы (1)


Я не думаю, что вам следует пытаться создавать элементы Polymer 3 в файлах HTML, поскольку импорт HTML либо не поддерживается (в FF для например) или устаревает (например, в Chrome), как вы можете видеть здесь.

Сочетание компонентов, созданных с помощью Polymer 1.x/2.x (с импортом HTML) и Polymer 3.x и/или LitElement, должно иметь шаг сборки webpack, на котором будут объединены все файлы JS. (например, есть один файл JS, в который вы импортируете новые элементы, передаете его через веб-пакет и включаете в свое приложение Polymer 1.x).

Но в долгосрочной перспективе переход отказ от импорта HTML кажется более безопасным. Возможно, вы захотите взглянуть на модулятор, как предложил @HakanC.

person mishu    schedule 04.03.2019
comment
Я предполагаю (не проверял), что хак может состоять в том, чтобы создать ваши элементы Polymer 3 в JS и просто иметь несколько HTML-файлов-оболочек, в которые вы включаете эти элементы с тегами script, просто чтобы у вас было HTML для импорта.. но, помимо того факта, что я никогда этого не делал, я даже не говорю, что это было бы хорошей идеей, все же думаю, что вам следует перейти на файлы JS.. - person mishu; 04.03.2019
comment
как сказано в описании, у меня есть существующее приложение, созданное с использованием полимера 1.0. Когда мы попытаемся построить/импортировать новый компонент, он будет в форме полимера 3.0. Как упоминалось модулятором @HakanC, он преобразует 2.0 в 3.0. - person Sanjeev S; 04.03.2019
comment
@SanjeevS прав, и для этого вы можете использовать веб-пакет для объединения ваших компонентов Polymer 3. У вас может быть точка входа, которая импортирует ваши компоненты, и эта точка может быть собрана webpack в один файл. Я предлагал мигрировать и, возможно, использовать модулятор только в качестве более позднего решения, так как оно более перспективно. - person mishu; 04.03.2019
comment
Я не получил вас в комплекте с вашими компонентами. Могут ли оба типа полимера существовать одновременно в одном веб-приложении??? - person Sanjeev S; 04.03.2019
comment
@SanjeevS, если вы не определяете один и тот же элемент дважды (что также может произойти при включении сторонних элементов, таких как paper-input, например, как в формате HTML, так и в формате JS), не имеет значения, в каком типе файла вы определяете их.. важна та строка, в которой вы регистрируете определение window.customElements.define('my-element', MyElement);.. так что да, вы можете определить некоторые элементы в JS-файлах Polymer 3.x и включить их в свое приложение Polymer 1.x - person mishu; 04.03.2019