我们平时可能这样引入注册组件。每次都得需要在头部引入,然后注册,最后在模板上使用。
<template>
<div id="app">
<comp-one></comp-one>
</div>
</template>
<script>
import compOne from './components/comp-one.vue'
export default {
name: 'App',
components: {
compOne
}
}
</script>
那么,有没有更加方便快捷的方法呢?我们不妨这样。
创建一个名为 globalComp.js 文件,假设我们这里与组件平级,即存放在组件文件夹中。
目录结构如:
-src
--components
---comp-one.vue
---globalComp.js
globalComp.js
import Vue from 'vue'
function changeStr (str){
return str.charAt(0).toUpperCase() + str.slice(1);
}
const requireComponent = require.context('./',false,/\.vue$/); // './'操作对象为当前目录
requireComponent.keys().forEach(element => {
const config = requireComponent(element);
const componentName = changeStr(
element.replace(/^\.\//,'').replace(/\.\w+$/,'')
)
Vue.component(componentName, config.default || config)
});
然后,我们需要在 main.js 文件中引入。
import './components/globalComp.js'
最后,我们只需要在模板直接使用就可以了。
<template>
<div id="app">
<comp-one />
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
注意,require.context 是 webpack 的一个 API,所以,需要基于 webpack 环境才可以使用。