基于 Vite + Vue3 的组件自动注册功能

实现一个基于 Vite + Vue3 的组件自动注册功能,能让你无需手动 import 和注册组件,直接在模板中使用。

实现思路

  1. 使用 Vite 的 import.meta.glob 方法批量导入指定目录下的所有组件
  2. 创建一个组件注册插件,自动全局注册所有导入的组件
  3. 提供组件使用示例和目录结构规范

完整实现代码

1. 组件自动注册插件 (src\components\common\index.js)

javascript 复制代码
/**
 * 全局公共组件自动注册
 * 自动注册src/components/common目录下的所有组件
 */

// 导入所有公共组件
import JmForm './JmForm .vue'
import JmTable from './JmTable.vue'
 
/**
 * 自动导入并注册组件
 * @param {Object} app - Vue应用实例
 * @param {Array} exclude - 排除的组件名称列表
 */
export function registerCommonComponents(app, exclude = []) {
  // 组件列表
  const components = {
    JmForm ,
    JmTable
 
  }

  // 注册所有组件
  Object.entries(components).forEach(([name, component]) => {
    // 检查是否在排除列表中
    if (exclude.includes(name)) {
      return
    }
    
    // 全局注册组件
    app.component(name, component)
  })
}

export default {
  registerCommonComponents
}
  1. 入口文件引入插件 (src/main.js)
javascript 复制代码
// 导入全局公共组件自动注册
import { registerCommonComponents } from './components/common';
  1. 写一个组件页面

  2. 直接使用组件 (src/App.vue) 无需引入

html 复制代码
<template>
  <!-- 无需import,直接使用 -->
  <jm-form v-model="form" :items="items" />
  <jm-table :data="list" :columns="columns" /> 
</template>
相关推荐
To_OC7 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny8 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
触底反弹8 小时前
一文搞懂 Tailwind CSS 弹性布局:从原理到实战
前端·css·html
阳光是sunny8 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
To_OC8 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
小林ixn9 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
REDcker9 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
এ慕ོ冬℘゜9 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康9 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端