Vue2系列 -- 组件自动化全局注册(require.context)

参考官网:https://v2.cn.vuejs.org/v2/guide/components-registration.html

1 作用

省略 import 引入组件

省略 在main.js 中注册

实现自动化引入组件

2 自定义文件夹

在 src 下新建一个 components/base 文件夹,用于存放要自动注册的组件

3 在 base 文件夹下定义 index.js

使用 require.context 自动全局注册这些通用的基础组件

javascript 复制代码
import Vue from 'vue'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'

// 1 拿到该目录下所有组件
const requireComponent = require.context(
  // 1.1 其组件目录的相对路径
  './相对路径',
  // 1.2 是否查询其子目录
  false,
  // 1.3 匹配基础组件文件名的正则表达式 (需要根据实际的组件名称和规则进行配置)
  /Base[A-Z]\w+\.(vue|js)$/
)

// 2 遍历 调用 Vue.component 来全局注册
requireComponent.keys().forEach(fileName => {
  // 2.1 获取组件配置
  const componentConfig = requireComponent(fileName)

  // 2.2 获取组件的 PascalCase 命名
  const componentName = upperFirst(
    camelCase(
      // 获取和目录深度无关的文件名
      fileName
        .split('/')
        .pop()
        .replace(/\.\w+$/, '')
    )
  )

  // 2.3 全局注册组件
  Vue.component(
    componentName,
    // 如果这个组件选项是通过 `export default` 导出的,
    // 那么就会优先使用 `.default`,
    // 否则回退到使用模块的根。
    componentConfig.default || componentConfig
  )
})

4 在 main.js 中引入 index.js 文件

由于全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生

所以要在 main.js 中引入 index.js 文件

相关推荐
仿生狮子5 小时前
把 Git 提交历史变成一条流动的河——Project River
vue.js·设计·vibecoding
LCG元8 小时前
STM32实战:基于STM32F103的Bootloader设计与IAP在线升级
javascript·stm32·嵌入式硬件
xixingzhe29 小时前
idea启动vue项目
java·vue.js·intellij-idea
前端一小卒10 小时前
前端工程师的全栈焦虑,我用 60 天治好了
前端·javascript·后端
coderyi11 小时前
LLM Agent 浅析
前端·javascript·人工智能
我叫黑大帅11 小时前
TypeScript 6.0 弃用选项错误 TS5101 解决方法
javascript·后端·面试
科雷软件测试11 小时前
使用python+Midscene.js AI驱动打造企业级WEB自动化解决方案
前端·javascript·python
We་ct12 小时前
LeetCode 120. 三角形最小路径和:动态规划详解
前端·javascript·算法·leetcode·typescript·动态规划
|晴 天|13 小时前
Vue 3 + LocalStorage 实现博客游戏化系统:成就墙、每日签到、积分商城
前端·vue.js·游戏
changshuaihua00114 小时前
React 入门
前端·javascript·react.js