首页 > 其他分享 >看看Vue中如何封装一个自动化注册全局组件

看看Vue中如何封装一个自动化注册全局组件

时间:2023-07-28 11:01:48浏览次数:24  
标签:Vue 封装 name js globalComponents 注册 组件 全局

在项目的开发过程中,我们常常会去封装一些比较常用的全局组件,
但是每添加一个组件就需要手动在main.js引入注册,不仅麻烦还代码量多,着实让人心烦。
所以干脆封装一个自动化注册全局组件。

1、自定义全局组件文件夹

在src下新建一个globalComponents,用于存放全局组件,并新建一个组件,例如Orange

2、组件自动注册配置文件

globalComponents中创建一个index.js,用来查找全部组件并自动注册

// 自动注册全局组件,每次新增组件必须重新编译
import Vue from 'vue'

const requireComponent = require.context(
  '../globalComponents', // 其组件目录的相对路径
  true, // 是否查询其子目录
  /\.vue$/ // 匹配基础组件文件名的正则表达式
)
requireComponent.keys().forEach(fileName => {
  const componentConfig = requireComponent(fileName); // 获取组件配置
  /**
   * 兼容 import export 和 require module.export 两种规范
   */
  // 如果这个组件选项是通过 export default 导出的,就会优先使用 .default
  const comp = componentConfig.default || componentConfig; 
  Vue.component(comp.name, comp) // 此处的name是组件属性定义的name
})

3、编辑Orange/index.vue

组件最重要的是组件属性定义的name(name为自动注册的组件名)

<template>
  <div class="wrapper">
    Orange
  </div>
</template>

<script>
export default {
  name: 'Orange', // 此处的name属性值将为后面使用的组件名 <orange />,需唯一
  components: {},
  props: {},
  data() {
    return {}
  },
  created() {},
  mounted() {},
  methods: {}
}
</script>

4、入口文件main.js中导入globalComponents/index.js

// main.js

import Vue from 'vue'
// 自动注册全局组件
import './globalComponents/index.js'

基本完成以上几步就大功告成了,后面就是可以直接使用这个全局组件了~

5、使用方法:

<template>
  <div class="wrapper">
    <!-- 自动注册的全局组件 -->
    <orange />
  </div>
</template>

 

标签:Vue,封装,name,js,globalComponents,注册,组件,全局
From: https://www.cnblogs.com/liyunxi/p/17587012.html

相关文章

  • vue-cli构建Vue3项目
    1、node环境检查node-v//查询Node版本 2、vue-cli版本检查vue-V//查询vue-cli版本npmuninstall-gvue-cli//卸载旧版vue-clinpminstall-gvue-cli//旧版vue-cli2npminstall-g@vue-cli//vue-cli3  其他命令:vue-V//查询vue-cli脚手架版本np......
  • Android-组件属性
    ImageView:app:tint=“”(tint:染色)作用:将非透明像素点染成指定颜色 EditText:android:selectAllOnFocus="true"作用:输入框获取焦点后,获取到所有文本内容 ......
  • 如何用DHTMLX组件为Web应用创建甘特图?(一)
    dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。甘特图仍然是项目管理应用程序中最需要的工具之一,DHTMLXGantt组件提供了能提升研发甘特图功能所需的重要工具。在这篇文章中,您将学习如何添加一个基本......
  • Unity UGUI的Physics2DRaycaster (2D物理射线检测)组件的介绍及使用
    UnityUGUI的Physics2DRaycaster(2D物理射线检测)组件的介绍及使用一、什么是Physics2DRaycaster组件?Physics2DRaycaster是Unity中的一个UGUI组件,用于在2D场景中进行物理射线检测。它可以检测鼠标或触摸事件在UI元素上的碰撞,并将事件传递给相应的UI元素。二、Physics2DRaycaste......
  • Unity UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用
    UnityUGUI的PhysicsRaycaster(物理射线检测)组件的介绍及使用1.什么是PhysicsRaycaster组件?PhysicsRaycaster是UnityUGUI中的一个组件,用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上,并将事件传递给相应的UI元素。2.PhysicsRaycaster的工作......
  • vue-elementAdmin项目打包后白屏的问题
    Vue项目打包后出现白屏的可能原因有很多1.可能的思路和解决方案:1.确认静态资源路径是否正确。  在Vue项目中,打包后会生成一个dist目录,确保index.html引用的资源路径都是相对于dist目录的。2.确认路由是否正确配置。  如果打包后出现了白屏,可能是因为路由没......
  • vue注册全局组件,批量注册全局组件的所有方式
    本文列出所有主流在vue中批量注册全局组件的方法本文下面所有例子的组件目录如下:  方法一:直接在main.js中循环遍历注册1.在main.js中//引入所有需要注册的全局组件importaboutViewfrom'@/components/common/aboutView.vue'importinfoViewfrom'@/components/com......
  • vue-router钩子执行顺序
    Vue的路由在执行跳转时,根据源码可知,调用了router中定义的navigate函数functionpush(to:RouteLocationRaw){returnpushWithRedirect(to)}functionreplace(to:RouteLocationRaw){returnpush(assign(locationAsObject(to),{replace:true}))}functionpush......
  • Vue3多条数据复制功能,复制内容用逗号拼接
    <divclass="person-list"><divclass="person-item">9939939939399399</div><divclass="person-item">1111111111111111</div></div>&......
  • Vue3的响应式数据处理方式
    问题:data[0].tableId是undefined,但控制台可以打印出data[0]的值原因: Vue3的响应式数据处理方式导致的。Vue3使用了Proxy来实现响应式数据。当你访问一个响应式对象的属性时,Vue会在底层进行拦截,并返回响应式的值。这意味着,当你访问`data[0].TableId`时,Vue会返回......