vue實踐---vue動態加載組件


開發中遇到要加載10個或者更多的,類型相同的組件時,如果用普通的 import 引入組件,components注冊組件,代碼顯得太啰嗦了,這時候就需要用到 require.context 動態加載這些組件,然后用循環的方式引用。

這里以三個組件為例: Bus.vue  Car.vue Train.vue。

第一步

在相同目錄下新建index.js文件,如下:

第二步

index.js內容如下:

const resultComps = {}
let requireComponent = require.context(
    './', // 在當前目錄下查找
    false, // 不遍歷子文件夾
    /\.vue$/ // 正則匹配 以 .vue結尾的文件
  )
  requireComponent.keys().forEach(fileName => {
    let comp = requireComponent(fileName)
    resultComps[fileName.replace(/^\.\/(.*)\.\w+$/, '$1')] = comp.default
  })
  export default resultComps

resultComps 最終的結果是一個對象,如下:

key是 組件的名字,value就是組件。

第三步

使用方法如下:

<template>
  <div id="app">
    <component
      v-for="comp in comps"
      :key="comp.id"
      :is="allComps[comp]">
    </component>
  </div>
</template>

<script>
import allComps from './components/vehicle'
export default {
  name: 'app',
  data () {
    return {
      comps: ['Bus', 'Car', 'Train'],
      allComps: allComps
    }
  }
}
</script>

具體的代碼看這里: https://github.com/YalongYan/vue-practice/tree/master/dynamic-loading-component

vue實踐系列請看這里: https://github.com/YalongYan/vue-practice

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM