Мы создаем реализацию панели мониторинга.Мы хотим использовать Webpack для создания основного кода панели мониторинга и набора стандартных реализаций виджетов и хотим, чтобы другие могли создавать свои собственные реализации виджетов, которые реализуют «API виджета панели мониторинга» и интегрируются с панелью мониторинга.
В среде Webpack, как мы можем позволить авторам расширений использовать преимущества import
, уже присутствующие в ядре , не требуя, чтобы все расширения были доступны при сборке ядра ?
Если я думаю о пакетных файлах как о .so
общих библиотеках, как мне создать javascript-эквивалент .so
файлов, которые позволяют авторам расширений «связываться» с ними, чтобы создавать расширения, использующие зависимости и API в «* 1010»?* "?
В нашей старой реализации панели мониторинга RequireJS, которую он заменяет, каждый виджет был require
d, и они, в свою очередь, загружали свои собственные требования.Работал отлично.Это позволило:
- Базовая сборка, которая предоставляет несколько API-интерфейсов, доступных как для ядра, так и для расширений через RequireJS
require
. - Требования, такие как
lodash
, были загружены только один раз и предоставлены для совместного использования.между ядром и расширениями. - Расширения могут быть написаны и протестированы независимо от ядра .
- Может быть записано после того, как ядро установлено на сервере
- Обновление ядра вообще не требует изменения расширений, пока API остается стабильным.
Теперь, когда мы используем Webpack, как это можно сделать?
Конечно, мы могли бы просто определить API и позволить каждому расширению запускать Webpack самостоятельно, а затем использоватьТребовать JS, чтобы загрузить их.Попробовал это.Но теперь зависимости не являются общими.Загрузка BootstrapVue и Vue и больше ничего не дает - 427 КБ.Умноженный на 20 типов виджетов, это не идеально ...