美文网首页
如何使用VUE动态的对异步组件进行加载?

如何使用VUE动态的对异步组件进行加载?

作者: 皇甫贝 | 来源:发表于2019-07-09 21:19 被阅读0次

需求是 首先通过一个异步的方式获取一个组件名称的列表,然后根据这个列表(字符串数组形式)加载这个列表上的组件,然后循环显示在页面上

先上代码吧:第一种
<template>
  <div class="pageconfig">
    <!-- :gutter="dataArr.layout.gutter" -->

    <el-row :gutter="layout.gutter">
      <el-col :span="itme.span" v-for="(itme,index) in col" :key="index">
        <div class="grid-content bg-purple-dark" >
          <component 
          :is="plugItem" 
          v-for="(plugItem, plugIndex) in plugs" 
          :key="plugIndex"
          ></component>
        </div>
      </el-col>
    </el-row>
  </div>
</template>


<script>
//import '../../uitl/pageConfig.js';
//require
import http from '@/api'
import { PageConfig } from '@/api/url.js'
export default {
  data () {
    return {
      layout: "",
      col: "",
      plugs:[]
    };
  },
  created () {
   
    const _this = this
    http.post(PageConfig, {}, _this).then(res => {
      if (res.code == 0) {
        console.log(res.data)
        _this.layout = res.data.layout
        _this.col = res.data.layout.col
        console.log(_this.layout, "00000----------")
         _this.plugs = []
        res.data.layout.col.forEach(item => {
       //主要是一下这句话
        _this.plugs.push(() => import(`../common/${item.PlugInUnit}`))
      })
       
      }

    }).catch(function (error) {
      _this.$message.error(error);
    });
  },
  computed: {
  },
  methods: {
    
  }
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

<style scoped lang="scss">
.el-row {
  margin-bottom: 20px;
  &:last-child {
    margin-bottom: 0;
  }
}
.el-col {
  border-radius: 4px;
  margin-top: 20px;
}
.bg-purple-dark {
  background: #99a9bf;
}
.bg-purple {
  background: #d3dce6;
}
.bg-purple-light {
  background: #e5e9f2;
}
.grid-content {
  border-radius: 4px;
  min-height: 36px;
}
.row-bg {
  padding: 10px 0;
  background-color: #f9fafc;
}
</style>

主要代码如下:

 _this.plugs.push(() => import(`../common/${item.PlugInUnit}`))

声明变量,然后获取组件信息,进行组件导入:在template体中循环组件

<component 
:is="plugItem" 
v-for="(plugItem, plugIndex) in plugs" 
:key="plugIndex"
>
</component>

第二种

Vue的异步组件实践有两种,第一种是路由懒加载将应用由路由层分为多个chunk,减小单个入口的打包体积。
还有一种就是在Tab页、弹窗等不需要立即展示的都可以使用异步组件进行加载,

<template>
  <div id="pageconfig">
    <component :is="dataAll"></component>
  </div>
</template>

<script>
export default {
  name: 'pageconfig',
  components: {
   table : () => import(`../pageconfig/table`),
    tabs: () => import(`../pageconfig/tabs`),
  },
  data () {
    return {
      plugs: [],
     dataAll: 'table'
    }
  },
}
</script>

首先加载两个动态组件Link1和Link2,通过data中的currentLink来指定动态组件的名称,这样就可以动态的加载组件

相关文章

  • 如何使用VUE动态的对异步组件进行加载?

    需求是 首先通过一个异步的方式获取一个组件名称的列表,然后根据这个列表(字符串数组形式)加载这个列表上的组件,然后...

  • vue项目按需加载

    原理:利用webpack对代码进行分割是懒加载的前提,懒加载就是异步调用组件,需要时候才下载。 1、vue异步组件...

  • Vue路由异步组件

    vue异步组件和懒加载可以优化vue的性能 一、 原理 利用webpack对代码进行分割是懒加载的前提,懒加载就是...

  • vue-01

    vue+webpack 优化 一.异步加载 1.异步加载组件,其实就是组件懒加载。可以理解为:当我需要使用组件的时...

  • vue项目实现按需加载的3种方式:vue异步组件技术、es提案的

    1. vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载。但是,这种情况...

  • vue项目实现按需加载的方式

    ,1. vue异步组件技术vue-router配置路由,使用vue的异步组件技术,可以实现按需加载。但是,这种情况...

  • Vue的异步组件

    异步组件,顾名思义,按需加载组件。 在vue的文档中,除了异步组件的高级使用方法外,介绍了三个异步组件的解决方案 ...

  • vue中组件懒加载

    vue中组件懒加载的方法 1.异步实现路由懒加载 2.import(推荐使用这种方式) 同理,路由懒加载和组件懒加...

  • router - 2018-06-25

    2018-06-25 创建 vue异步组件技术 vue-router配置路由,使用vue的[异步组件](组件 — ...

  • vue.js v1 懒加载实践

    vue指南说,可以异步加载component vue指南 => 异步加载组件 注意 下面的内容假设你已经学会: w...

网友评论

      本文标题:如何使用VUE动态的对异步组件进行加载?

      本文链接:https://www.haomeiwen.com/subject/pnzfkctx.html