Vue 自定义动态组件实例详解


Posted in Javascript onMarch 28, 2018

现在基于vue的UI组件库有很多,比如iview,element-ui等。但有时候这些组件库满足不了我们的开发需求,这时候我们就需要自己写一个插件。

举第一个栗子

用vue-cli搭建好项目目录之后,在src/components下面新建一个文件夹放我们要写的插件,如图所示:

Vue 自定义动态组件实例详解

index.vue里写我们的组件,代码如下:

Vue 自定义动态组件实例详解

index.js里面写index.vue的install方法,并用Vue.component注册组件,代码如下:

Vue 自定义动态组件实例详解

接下来我们要在默认的main.js里将刚刚写的index.js文件导入,并通过Vue.use来使用它,代码如下:

Vue 自定义动态组件实例详解

大功告成,接下来在app.vue里直接使用就可以啦,可以看到页面已经显示相应的组件了,如图:

Vue 自定义动态组件实例详解

这时候我们还可以自定义click事件,并通过参数的方式传递给我们的插件,插件可以通过props属性获取到该事件,如图:

Vue 自定义动态组件实例详解

可以看到页面已经生效了:

Vue 自定义动态组件实例详解

Vue.component(id, [definition])用于注册或获取组件。

Vue.use(plugin)用于安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作为参数传入。当 install 方法被同一个插件多次调用,插件将只会被安装一次。

举第二个栗子

我们再建一个文件夹,如图:

Vue 自定义动态组件实例详解

我们要写一个组件,能够显示外部传进来的内容,并在3秒后自动消失,代码如下:

Vue 自定义动态组件实例详解

接下来我们要在index.js里使用构造器来创建它,如图:

Vue 自定义动态组件实例详解

依旧在默认的main.js里引用刚刚的js文件,并加入到Vue实例上,这样我们就可以直接通过this.$seconddemo()来调用了,代码如下:

import SecondDemo from './components/global/seconddemo/index'Vue.prototype.$seconddemo = SecondDemo

在app.vue里使用它,发现插件加载成功了,如图:

Vue 自定义动态组件实例详解

Vue.extend(options)是 Vue 的构造器,用于创建一个“子类”。

统一管理自定义组件

当组件数量很多时,我们可以通过提供一个统一的出口文件来管理这些自定义组件,首先在global文件夹下新建一个index.js文件,代码如图:

Vue 自定义动态组件实例详解

index.js文件帮我们把所有自定义的组件都通过Vue.component注册了,最后export一个包含install方法的对象给Vue.use()使用。

这时候我们不需要在main.js里逐个添加动态组件了,只需要导入统一的index.js文件,并用Vue.use它就ok了。

Javascript 相关文章推荐
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
Javascript数组操作函数总结
Feb 05 Javascript
JavaScript原生对象之Number对象的属性和方法详解
Mar 13 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 jQuery
利用百度地图API获取当前位置信息的实例
Nov 06 Javascript
mpvue写一个CPASS小程序的示例
Sep 04 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
在node中使用jwt签发与验证token的方法
Apr 03 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
node.js文件操作系统实例详解
Nov 05 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
Mar 28 #Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 #Javascript
js中el表达式的使用和非空判断方法
Mar 28 #Javascript
JS实现左边列表移到到右边列表功能
Mar 28 #Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 #Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 #jQuery
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 #Javascript
You might like
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
理解Python中的类与实例
2015/04/27 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
毕业生教师求职信
2013/10/20 职场文书
文秘专业大学生求职信
2013/11/10 职场文书
领导干部考察材料
2014/02/08 职场文书
暑期培训随笔感言
2014/03/10 职场文书
安踏广告词改编版
2014/03/21 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
2014年稽查工作总结
2014/12/20 职场文书
个人道歉信大全
2019/04/11 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers