У меня есть приложение на основе микросервиса, и у каждого сервиса есть набор веб-компонентов на основе полимеров. Я хочу загрузить их во время выполнения в приложение, которое обслуживается одним из них во время выполнения, чтобы я мог запускать, поддерживать и развертывать службы отдельно.
Я хотел бы избежать использования репозитория npm, который обслуживает компоненты для центральной сборки, и каждая новая версия веб-компонента может потребовать перестройки и повторного развертывания приложения.
Существующие примеры отложенной загрузки - все компоненты отложенной загрузки одного и того же приложения, поэтому оно построено целиком и просто упаковано в куски.
Приложение доступно в / app /, а модули в /mod/...
Я могу сделать это, чтобы отреагировать на маршрут:
import('/mod/admindashboard/kw-admindashboard.js').then((module) => {
// Put code in here that you want to run every time when
// navigating to view1 after my-view1.js is loaded.
console.log("Loaded admindashboard");
});
и тогда я могу использовать соответствующий веб-компонент, но для этого мне нужно взломать компонент следующим образом:
import { PolymerElement, html } from '/app/node_modules/@polymer/polymer/polymer-element.js';
import '/app/node_modules/@polymer/iron-icon/iron-icon.js';
import '/app/node_modules/@polymer/iron-icons/iron-icons.js';
class KwAdmindashboard extends PolymerElement {
static get template() {
...
Но этот подход не позволяет мне полностью запускать тесты, создавать статические сборки, и поддержка IDE также недоступна во многих областях, поскольку она не может увидеть, что доступно позже во время выполнения. Так что в качестве абсолютного отступления это было бы возможно. Разве нет способа использовать serviceWorkers для обработки сопоставления?