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 相关文章推荐
jquery 表单取值常用代码
Dec 22 Javascript
基于jquery可配置循环左右滚动例子
Sep 09 Javascript
ExtJs使用总结(非常详细)
Mar 22 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 Javascript
jQuery多条件筛选如何实现
Nov 04 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
使用vue实现点击按钮滑出面板的实现代码
Jan 10 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
Koa2微信公众号开发之消息管理
May 16 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 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
单位速度在实战中的运用
2020/03/04 星际争霸
PHP音乐采集(部分代码)
2007/02/14 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
php调用C代码的实现方法
2014/03/11 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
详解python3中socket套接字的编码问题解决
2017/07/01 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
Python eval函数原理及用法解析
2020/11/14 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
AURALog面试题软件测试方面
2013/10/22 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
二年级学生期末评语
2014/12/26 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
党课主持词大全
2015/06/30 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书