【发布时间】:2022-01-24 04:16:05
【问题描述】:
<script lang="ts">
export let name; // widget name
let childComponent;
import { onMount } from 'svelte';
onMount(() => {
switch(name) {
case 'Widget1':
import('./Widget1.svelte')
.then(res => childComponent = res.default)
.catch(err=> { throw "Cannot load component `" + name+ '` ' + err.message; });
break;
case 'Widget2':
import('./Widget2.svelte')
.then(res => childComponent = res.default)
.catch(err=> { throw "Cannot load component `" + name + '` ' + err.message; });
break;
// more cases ...
default:
throw "Unknown component `" + name + '` ';
}
});
</script>
<svelte:component this={childComponent}>
</svelte:component>
上面的代码运行良好,除了很长的cases。
我的 Svelte 项目通过 rollup 打包到 AMD 中。
例如。 Widget1.svelte 内置在 Widget1-69d8780f.js 中,这是延迟加载的。
可以汇总将我的小部件构建到单独的 AMD 模块中而不在代码中列出它们吗?
【问题讨论】:
标签: svelte rollupjs svelte-3 svelte-component