前言: 在vue中對於一些複用性比較高的組件,爲了不頻繁的import...導入操做,咱們能夠將其註冊爲 全局組件,下來呢,咱們一塊兒來搞點事情,對->盤它(註冊全局組件).html
<!--main.js文件--> import Vue from 'vue' import App from './App.vue' import store from './store' import router from './router' //第三方庫 import _ from 'lodash' Vue.use( _ ) //全局組件 import GL_Component from '@/utils/globalComponents' Vue.use(GL_Component); Vue.config.productionTip = false new Vue({ store, router, render: h => h(App) }).$mount('#app') 複製代碼
<!--globalComponents.js--> //引入 import BaseComponentA from '@/components/BaseComponentA' import BaseComponentB from '@/components/BaseComponentA' function plugins (Vue) { //註冊 Vue.component('BaseComponentA',BaseComponentA); //第一個參數:組件名稱,第二個參數:要註冊的組件 Vue.component('BaseComponentB',BaseComponentB); } export default plugins; 複製代碼
或者vue
<!--globalComponents.js--> //引入 import BaseComponentA from '@/components/BaseComponentA' import BaseComponentB from '@/components/BaseComponentA' const plugins = { //註冊 install(Vue) { Vue.component('BaseComponentA',BaseComponentA); //第一個參數:組件名稱,第二個參數:要註冊的組件 Vue.component('BaseComponentB',BaseComponentB); } } export default plugins; 複製代碼
而後main.js入口文件中導入globalComponents.js文件Vue.use()便可.那麼在須要應用的組件中使用kebab-case在模板中直接引用就ok,最後我會貼出來圖,稍後.正則表達式
<!--globalComponents.js--> const plugins = { install(Vue) { const requireComponent = require.context( // 其組件目錄的相對路徑(組件目錄相對於當前js文件的路徑) '../components', // 是否查詢其子目錄 false, // 匹配基礎組件文件名的正則表達式(所以要註冊爲全局組件的組件名稱約定很重要) /Base[A-Z]\w+\.(vue)$/ ) requireComponent.keys().forEach(fileName => { // console.log(fileName) ./BaseComponentA.vue // 獲取組件配置 const componentConfig = requireComponent(fileName) //這裏的componentConfig包含當前fileName對應組件的全部該組件信息,等於拿到了當前組件實例 // 獲取組件的 PascalCase 命名 const componentName = _.upperFirst( //這裏 _ 表明main.js中引入的的lodash實例對象 _.camelCase( // 獲取和目錄深度無關的文件名 fileName .split('/') .pop() .replace(/\.\w+$/, '') //將.(包括.)字符之後的字符用''代替 ) ) // 全局註冊組件 Vue.component( componentName, // 若是這個組件選項是經過 `export default` 導出的, // 那麼就會優先使用 `.default`, // 不然回退到使用模塊的根。 componentConfig.default || componentConfig ) }) } } export default plugins; 複製代碼
以上就是vue中註冊全局組件的方式了,雖然不是很難,但我仍是想再多bb兩句,主要是一些建議(想法).npm
云爲車兮風爲馬,玉在山兮蘭在野。markdown