Я пытаюсь создать стороннее расширяемое приложение, поэтому я работаю над системой плагинов с Django в качестве бэкэнда и Javascript / Vue / Webpack в качестве внешнего интерфейса.
Теперь у меня есть команда Django, которая собираетвсе плагины Javascript (которые находятся в asubdir каждого внутреннего приложения Django) и на лету создают файл js, который выглядит следующим образом:
// plugins.js
module.exports =[
'../../medux/plugins/blah/frontend/medux-plugin-blah',
'../../medux/plugins/foo/frontend/medux-plugin-foo',
]
Теперь я хочу, чтобы мое основное приложение js импортировало эти файлы динамически.
import("medux-plugin-foo")
работает, так как medux-plugin-foo
(все плагины внешнего интерфейса) также устанавливается через npm.
import foo from medux-plugin-foo
работает в любом случае.
Что не работает, так это импортэтот массив из main.js, перебирая его и импортируя все его содержимое:
// main.js
import plugins from "../plugins"
for (var x in ["plugins"]) {
import(plugins[x]).then((module) => {
module.init()
})
}
Я также пробовал что-то вроде
import(`../${plugin[x]}`)
// or
var plugin = plugins[x]
import(`../${plugin}`)
Я даже создал функцию, в которой аргументом является плагин- Я слышал, что тогда импорт (переменная) должен работать
function loadPlugin(p) {
import(p)
}
Ничего не работает.
Это потому, что динамический импорт не поддерживает переменные - что является полной чушью ИМХО. Есть ли способ сделать то, что я хочу?
Моя цель просто: импортировать (динамически изменяющийся, но при запуске определяется сервером) список модулей и вызвать там функцию (например, зарегистрировать этот плагин).
Есть несколько пакетов, которые нацелены сделать что-то подобное, но я не смог заставить их работать: architect , ScaleApp , js-plugins - всеиз которых полностью устарели, не обслуживаются или усложняются.