Vue 动态引入组件

当基于 Vue 的单页应用采用 SSR 后,有些组件由于内部使用了 document 等浏览器端的变量,会在 import 时报错。比较好的解决方法是在 mounted 中动态的 import 组件,赋值到 data 中,在模板里通过 v-bind:is 来引入。

示例:

<template>
  <component v-bind:is="Comp"></component>
</template>

<script>
export default {
  data() {
    return {
      Comp: null
    }
  },
  mounted() {
    import('comp').then(Comp => {
      this.Comp = Comp;
    });
  }
}
</script>