vue獲取全域性元件 Vue 全域性元件自動註冊

2021-10-16 23:28:05 字數 1988 閱讀 7683

在 vue 中,我們通過 vue.component('mycomponentname', ) 的方式來進行全域性元件註冊,但如果需要全域性註冊的元件很多,這時**就會變得比較臃腫,例如:

12// 註冊 5 個全域性元件

import examplecomponent1 from './components/examplecomponent1/index'

import examplecomponent2 from './components/examplecomponent2/index'

import examplecomponent3 from './components/examplecomponent3/index'

import examplecomponent4 from './components/examplecomponent4/index'

import examplecomponent5 from './components/examplecomponent5/index'

vue.component('examplecomponent1', examplecomponent1)

vue.component('examplecomponent2', examplecomponent2)

vue.component('examplecomponent3', examplecomponent3)

vue.component('examplecomponent4', examplecomponent4)

vue.component('examplecomponent5', examplecomponent5)

下面我們就針對這塊痛點,做些優化。

迴圈註冊

回看上面的演示**,最先能想到的優化方式,就是能不能做到批量註冊,但查了 vue 的手冊,並沒有看到元件批量註冊的 api。

沒辦法,只能改變下思路,既然不能批量註冊,那能不能做一層迴圈,在迴圈體內依次註冊我們的元件呢?

答案當然是可以的,來看下我的實現**:

16import examplecomponent1 from './components/examplecomponent1/index'

import examplecomponent2 from './components/examplecomponent2/index'

import examplecomponent3 from './components/examplecomponent3/index'

import examplecomponent4 from './components/examplecomponent4/index'

import examplecomponent5 from './components/examplecomponent5/index'

const components =

let instance = new constructor(`] = examplecomponent1

這時候,我們還需要修改一下自動註冊的**。

12import vue from 'vue'

const componentscontext = require.context('./components', true, /index.(vue|js)$/)

componentscontext.keys().foreach(component => else {

vue.use(componentconfig)

在迴圈依次讀取檔案中的 default 模組的時候,判斷一下檔案是 vue 檔案還是 js 檔案,如果是 vue 檔案,則進行元件註冊,如果是 js 檔案,則將元件掛載到 vue 原型鏈上。

上面這個 demo,在實際使用中,就可以通過 this.$examplecomponent1() 的方式呼叫元件了。

總結全域性元件自動註冊的功能也加入到 vue-autumation 中,這是乙個基於 vue cli 3 製作的 vue 腳手架,能方便快速進行業務開發。

參考

vue獲取全域性元件 解析Vue全域性元件和區域性元件

vue中元件分為兩種 1.全域性元件 2.區域性元件 接下來我們看看兩種元件的區別 一 使用範圍 全域性元件使用範圍 可以在頁面中任何位置使用 區域性元件使用範圍 只能在定義它的el中使用,不能再其他位置使用,否則就無法生效 二 定義元件的方法 全域性元件 可以使用vue.component tag...

Vue全域性元件註冊

最近編寫專案中,會應用到很多基礎元件,起初採用了區域性註冊進行使用,但區域性註冊對於開發人員並不友好,每個階段都要經歷import檔案匯入,component檔案註冊兩個階段,開發效率不高,於是採用了全域性註冊方式,引用基礎元件,但全域性元件會在初次渲染的時候一次性匯入,造成系統比較卡頓。於是,想到...

Vue 開發全域性元件

有時候專案中有一些元件,比如 loading toast等等,經常用到的,可以封裝好,註冊成全域性元件,這時候就要使用vue的指令 vue.extend以 toast 為例子,開發乙個 toast 全域性元件,只是簡易版的哈,彈出來然後消失那種 二 目錄結構 toast.vue 主要是寫html 以...