vue 实现基础组件的自动化全局注册


Posted in Vue.js onDecember 25, 2020

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

在日常开发中,有一些组件是比较常用,但是为了避免在开发过程中不停地引入,或者在main.js中注册,,或者每添加一个组件就需要手动注册一次。则直接进行自动化全局注册。

自动化全局注册,官网上都详细的说明,以下是自己官网的说明基础上进行了一个demo开发实例:

1、自定义文件夹:

在src下新建一个components文件夹,用于存放组件。并新建一个用于存放需要自动化全局注册的组件,例如base。

vue 实现基础组件的自动化全局注册

2、在base文件夹下定义index.js,具体代码如下示:

// 基础组件的自动化全局注册
import Vue from 'vue'
const requireComponent = require.context(
    // 其组件目录的相对路径
    './',
    // 是否查询其子目录
    true,
    // 匹配基础组件文件名的正则表达式
    /\.vue$/
  )
  requireComponent.keys().forEach(fileName => {
    // 获取组件配置
    const componentConfig = requireComponent(fileName)
    // 全局注册组件
    Vue.component(
        componentConfig.default.name,   // 此处的name,是组件属性定义的name
        // 如果这个组件选项是通过 `export default` 导出的,
        // 那么就会优先使用 `.default`,
        // 否则回退到使用模块的根。
        componentConfig.default
    )
  })

以上代码需要解释的地方:

1、匹配基础组件文件名的正则表达式,此处需要根据实际的组件名称和规则进行配置;

2、componentConfig.default.name此处用到的,是表示组件的名称,并不是固定的写法。可以用不同的写法来表示组件名称,例如可以直接解析fileName得出文件夹的名称作为组件名称也是可以的。componentConfig.default.name中的name,来自于组件定义的时候页面的name。若页面没有定义name,则报错。

vue 实现基础组件的自动化全局注册

3、在main.js中引入index.js文件

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

// 基础组件的自动化全局注册。全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生
import './components/base/index'

vue 实现基础组件的自动化全局注册

4、直接在需要的地方使用该组件即可

vue 实现基础组件的自动化全局注册

页面效果如下示:

vue 实现基础组件的自动化全局注册

以上就是vue 实现基础组件的自动化全局注册的详细内容,更多关于vue 组件全局注册的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue 插槽简介及使用示例
Nov 19 Vue.js
Vue实现图书管理小案例
Dec 03 Vue.js
Vue 组件注册全解析
Dec 17 Vue.js
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
vuex的使用和简易实现
Jan 07 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
解决vue中provide inject的响应式监听
Apr 19 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 #Vue.js
基于vue+echarts数据可视化大屏展示的实现
Dec 25 #Vue.js
vue3使用vue-count-to组件的实现
Dec 25 #Vue.js
vue+openlayers绘制省市边界线
Dec 24 #Vue.js
vue项目中openlayers绘制行政区划
Dec 24 #Vue.js
Vue+penlayers实现多边形绘制及展示
Dec 24 #Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 #Vue.js
You might like
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
php生成短域名函数
2015/03/23 PHP
php简单防盗链实现方法
2015/07/29 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
python3中int(整型)的使用教程
2017/03/23 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
python构建基础的爬虫教学
2018/12/23 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
python生成requirements.txt的两种方法
2019/09/18 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
Java如何支持I18N?
2016/10/31 面试题
财务管理专业推荐信
2013/11/19 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL