Загружать обычные скрипты Java в элементах Polymer 3 или lit-элементах - PullRequest
2 голосов
/ 29 января 2020

Я нахожусь в процессе преобразования приложения Polymer 2 в Polymer 3. У меня не работал Modulizer, поэтому я преобразовал его вручную. Благодаря великолепному руководству по обновлению, оно до сих пор было в основном прямым.

Однако осталась одна задача: в моем приложении Polymer 2 у меня был специальный html импорт (d3-import. html), который принес d3. js lib версии 3, которая поставляется в виде простого JavaScript файла (без модуля ES6!). Этот импорт был динамически загружен только на двух из 20 страниц, поскольку другие 18 страниц в нем не нуждались.

В Polymer 3 я не могу импортировать его как модуль ES6, поскольку он не является модулем. Загрузка его в моем главном запуске. html будет означать, что он будет загружен, даже если пользователь использует только остальные 18 страниц, которые ему не нужны. Я пытался написать скрипт-теги в шаблонах своих веб-компонентов, но это не сработало. К сожалению, я не вижу ошибок в инструментах браузера. Шаблон просто перестает загружаться в строке тегов script.

Есть идеи, как это сделать?

Дополнительный вопрос: так как я начинаю использовать lit-element в том же приложении. Как решить ту же проблему с lit-element?

Редактировать: Обратите внимание, что в настоящее время я не использую какие-либо шаги / инструменты сборки, за исключением сборки полимера, чтобы заменить пути модулей на фактические пути к файлам.

1 Ответ

3 голосов
/ 29 января 2020

Обратите внимание, что эта задача не имеет ничего общего с Polymer или LitElement, это только проблема с загрузкой немодульных ресурсов из модуля.

Самый простой способ, который я знаю, это использовать такой пакет, как Rollup, который может поддерживать Common JS или UMD. Для этого в накопительном модуле есть общий плагин js: https://github.com/rollup/plugins/tree/master/packages/commonjs

Другой вариант заключается в обновлении до D3 5.x, который, как представляется, публикуется как стандартные модули. Учитывая количество задействованных файлов, вы все равно, вероятно, захотите, чтобы упаковщик уменьшил количество сетевых обращений.

...