首页 > 其他分享 >vue注册全局组件,批量注册全局组件的所有方式

vue注册全局组件,批量注册全局组件的所有方式

时间:2023-07-27 20:14:25浏览次数:33  
标签:vue const component js 注册 组件 全局

本文列出所有主流在vue中批量注册全局组件的方法

本文下面所有例子的组件目录如下:

 

 

方法一:直接在main.js中循环遍历注册

1.在main.js中

// 引入所有需要注册的全局组件
import aboutView from '@/components/common/aboutView.vue'
import infoView from '@/components/common/infoView.vue'
//定义一个数组结构
const components = [
  { name: 'aboutView', component: aboutView },
  { name: 'infoView', component: infoView },
];
//遍历数组进行循环注册
components.forEach(component => {
  Vue.component(component.name, component.component);
});

 

方法二:利用vue的插件模式

1.在register.js中

// 引入所有需要注册的全局组件
import aboutView from './aboutView.vue'
import infoView from './infoView.vue'

const globalComponents = [aboutView, infoView];

export default {
  install (Vue) {
    globalComponents.forEach(component => {
      // 这里用的是组件里面的name
      //如果引入的组件没有写name,会报错 : vue.esm.js:100 Uncaught TypeError: Cannot read properties of undefined (reading 'toLowerCase')
      Vue.component(component.name, component);
    });
  }
}

2.在main.js中

// 引入全局注册组件
import globalComponent from '@/components/common/register.js'
Vue.use(globalComponent)

 

方法三:使用自动化导入,请注意文件路径

1.在main.js中

const componentContext = require.context('@/components/common', true, /\.vue$/);

componentContext.keys().forEach(fileName => {
  //获取当前遍历的组件
  const componentConfig = componentContext(fileName);
  //获取当前组件的文件名称
  const componentName = fileName.replace(/^\.\//, '').replace(/\.\w+$/, '');
  //注册组件
  Vue.component(componentName, componentConfig.default || componentConfig);
});

上述代码会自动匹配components/common目录下以.vue为后缀的组件文件,并自动注册为全局组件

 

方法四:使用Vue插件和组件自动化注册(推荐)

1.在register.js中

const VueAutoRegister = {
  install (Vue) {
    //获取所有的vue文件
    const requireComponent = require.context('@/components/common', true, /\.vue$/);

    requireComponent.keys().forEach(fileName => {
      //获取当前遍历的组件
      const componentConfig = requireComponent(fileName);
      //获取当前组件的文件名称
      const componentName = componentConfig.default.name || fileName.replace(/^\.\/(.*)\.\w+$/, '$1');
      //把文件名称当成组件名称,全局注册
      Vue.component(componentName, componentConfig.default || componentConfig);
    });
  }
};

export default VueAutoRegister;

2.在main.js中

// 引入全局注册组件
import globalComponent from '@/components/common/register.js'
Vue.use(globalComponent)

 

 

 

 


 

标签:vue,const,component,js,注册,组件,全局
From: https://www.cnblogs.com/wiliam/p/17585881.html

相关文章

  • 如何编写难以维护的React代码?耦合组件
    如何编写难以维护的React代码?耦合组件在许多项目中,我们经常会遇到一些难以维护的React代码。其中一种常见的情况是:子组件直接操作父组件方法,从而导致父子组件深度耦合。这样的实现让子组件过于依赖父组件的具体实现细节,使得代码难以维护和扩展。让我们来看一个例子:functionCom......
  • vue--day46---组件自定义事件的解绑
    查看vue版本命令npmlistvue1.App.vue<template><div><h1>{{msg}}</h1><!--通过父组件给子组件传递函数的props实现子给父传数据--><School:receiveSchoolName="receiveSchoolName"></School><!--v-on在student组件标签上所以说是在给......
  • 【Spring Cloud】服务注册、发现与调用的核心原理
    参考:https://www.bilibili.com/video/BV1i14y1D7DY/?spm_id_from=333.337.search-card.all.click 给出核心的几个类,与之间交互说明、 服务注册: NacosAutoServiceRegistration实现了spring的事件监听,当web初始化完成后进行服务的注册  服务发现  服务调用......
  • 【Azure 环境】AAD 注册应用获取AAD Group权限接口遇 403 : Attempted to perform an u
    问题描述通过AzureAD的注册应用获取到Token后,访问AADGroup并查看日志信息时候,遇见了 {"error":{"code":"UnauthorizedAccessException","message":"Attemptedtoperformanunauthorizedoperation."}}Python代码--使用AAD注册应用获取Tokenimportre......
  • 【医疗仪器注册之测试流程】
    加样准确性(称重):吸液量偏倚  CVv<10  ±1 <5%10<v<50   ±10%    <3%v>50 ±5%  <2%称重:1.将20个反应杯称重后记录好质量为:m02.控制试剂针或样品针往该容器中加入规定量除气纯水,再在电子天平上称量其质量并记录:m13.使用m......
  • Android应用程序主要组件知识小结
    Android系统中通过几个主要的组件以其灵活的组织方式在方便了开发者的同时,也不失其炫丽的效果,实在是值得我不断深入了解和学习,下面的图作为近一段时间对Android组件知识的一个小结,难免有遗漏或错误之处,敬请各位不吝赐教。我觉得深刻理解和掌握这几个组件的使用方法以及相互关系,就......
  • Hive架构组件
    架构图Hive组件......
  • WINUI 全局异常捕捉
    因整个解决方案(solution)由多个项目(project)组成,而程序在运行时,在程序入口的appclass中添加的UnhandledException事件(Application.UnhandledException)只能捕捉到主程序的异常,导致不能捕捉到其他类库的异常。通过查找文档与相应资料,了解到可以通过AppDomain.CurrentDomain.FirstC......
  • Vue3 组件篇
    组件命名组件的命名一般分为两种在单文件组件中,推荐为子组件使用PascalCase的标签名,以此来和原生的HTML元素作区分。虽然原生HTML标签名是不区分大小写的,但Vue单文件组件是可以在编译中区分大小写的。我们也可以使用/>来关闭一个标签。使用kebab-case形式并显式地......
  • DevExpress WPF Tree List组件,让数据可视化程度更高!(一)
    DevExpressWPFTreeList组件是一个功能齐全、数据感知的TreeView-ListView混合体,可以把数据信息显示为REE、GRID或两者的组合,在数据绑定或非绑定模式下,具有完整的数据编辑支持。DevExpressWPF 拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过......