我们平时可能这样引入注册组件。每次都得需要在头部引入,然后注册,最后在模板上使用。
<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 环境才可以使用。
