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 文件

相关推荐
平头哥技术团队16 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
yume_sibai16 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
剑之所向19 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
渡我白衣20 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
八角丶21 小时前
Node 网络编程 —— TLS 模块
javascript·后端·node.js
倔强的石头10621 小时前
【Linux指南】动静态库系列(七):符号表与重定位:链接器如何把函数调用接起来
linux·前端·javascript
图扑软件1 天前
中篇・运笔|统一 DataModel 底座,HT UI 组件万物同源
javascript·低代码·ui·性能优化·数据可视化
小小尚@1 天前
WebGIS/ECharts 地图开发|MapLand 在线行政区划边界一键下载 GeoJSON 工具
前端·javascript·echarts
葡萄城技术团队1 天前
工业数据可视化:使用活字格 AIcoding + Three.js 构建轻量化三维设备监控大屏
开发语言·javascript·信息可视化
默_笙1 天前
🚍 一条 Todo 的奇幻漂流:TypeScript 全栈类型安全的"护照检查"
前端·javascript