前言: 在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
云爲車兮風爲馬,玉在山兮蘭在野。app