在项目中,可能你的许多组件只是包裹了一个输入框或按钮之类的元素,是相对通用的。我们有时候会把它们称为基础组件,它们会在各个组件中被频繁的用到。所以会导致很多组件里都会有一个包含基础组件的长列表:但是只用于模板的一小部分。
import Button from \'./ Button.vue\'
import Icon from \'./ Icon.vue\'
import Input from \'./ Input.vue\'
export default {
components: {
Button,
Icon,
Input
}
}
如果你使用了 webpack (或在内部使用了 webpack 的 Vue CLI 3+),那么就可以使用 require.context 只全局注册这些非常通用的基础组件。这里有一份可以让你在应用入口文件 (比如 src/main.js) 中全局导入基础组件的示例代码:
import Vue from \'vue\'
import upperFirst from \'lodash/upperFirst\'
import camelCase from \'lodash/camelCase\'
const requireComponent = require.context(
// 其组件目录的相对路径
\'./components\',
// 是否查询其子目录
false,
// 匹配基础组件文件名的正则表达式
/ [A-Z]\\w+\\.(vue|js)$/
)
requireComponent.keys().forEach(fileName => {
// 获取组件配置
const componentConfig = requireComponent(fileName)
// 获取组件的 PascalCase 命名
const componentName = upperFirst(
camelCase(
// 剥去文件名开头的 `./` 和结尾的扩展名
fileName.replace(/^\\.\\/(.*)\\.\\w+$/, \'$1\')
)
)
// 全局注册组件
Vue.component(
componentName,
// 如果这个组件选项是通过 `export default` 导出的,
// 那么就会优先使用 `.default`,
// 否则回退到使用模块的根。
componentConfig.default || componentConfig
)
})
记住全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生。
继续阅读与本文标签相同的文章
上一篇 :
什么是智能锁虚位密码?它有什么用?
下一篇 :
人民日报评论:打开虚拟现实的想象空间
-
带你校园一日游 雷诺自动驾驶打车测试项目对外揭秘
2026-05-19栏目: 教程
-
我终于搞清楚了和String有关的那点事儿。
2026-05-19栏目: 教程
-
巧用这19条MySQL优化,效率至少提高3倍
2026-05-18栏目: 教程
-
谷歌新品发布会,也是谷歌摄影成果展
2026-05-18栏目: 教程
-
测试开发进阶(三十一)
2026-05-18栏目: 教程
