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 相关文章推荐
JavaScript更改字符串的大小写
May 07 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
Bootstrap按钮组件详解
Apr 26 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
Jul 20 Javascript
AngularJS实现的回到顶部指令功能实例
May 17 Javascript
JavaScript中一些特殊的字符运算
Aug 17 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
Feb 22 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 Javascript
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
vue修饰符.capture和.self的区别
Apr 22 Vue.js
详解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
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python下的twisted框架入门指引
2015/04/15 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Django--权限Permissions的例子
2019/08/28 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
基于python实现操作git过程代码解析
2020/07/27 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
python 模拟登陆github的示例
2020/12/04 Python
python中pyqtgraph知识点总结
2021/01/26 Python
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
经理秘书求职自荐信范文
2014/03/23 职场文书
租车协议书范本
2014/04/22 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014年科普工作总结
2014/12/06 职场文书
开学第一天的感想
2015/08/10 职场文书
Python测试框架pytest高阶用法全面详解
2022/06/01 Python