Я тоже прошел через эту боль - сначала от Polymer HTML Imports, а затем от Polymer до LitElement.
Это немного сложнее, чем просто изменение синтаксиса, которое вы можете довольно легко сделать с помощью regex / grep и т.п., поскольку это фундаментальный сдвиг в подходе.
Полимер в значительной степени полагался на двусторонние привязки - вы помещаете <input value={{property}}>
, и он автоматически обновляется. Это полагалось на то, что Polymer выполнял много работы, и было довольно хрупким - вы были очень ограничены в том, что вы могли бы построить на его основе.
LitElement отбрасывает их - вам нужно сделать <input value=${this.property} @change=${e => this.property = e.target.value}>
, чтобы явно обрабатывать изменения. Это позволяет LitElement быть намного меньше, гораздо менее самоуверенным, гораздо более совместимым с другими библиотеками.
Кроме того, компоненты LitElement обычно более функциональны, чем компоненты Polymer. В Polymer у вас есть множество свойств / методов состояния, которые вы вызываете из шаблона, тогда как в LitElement эти свойства вызывают срабатывание метода render
и являются отправной точкой для создания содержимого шаблона.
Таким образом, вы можете найти и заменить множество компонентов и односторонние привязки (например, с <input value=[[property]]>
на <input value=${this.property}>
), но все остальное необходимо адаптировать к более простому и функциональному подходу LitElement.
С другой стороны, они могут работать бок о бок, так что вы можете обновлять их один за другим, но вам придется делать это вручную.
person
Keith
schedule
04.05.2021