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 10 Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
JS的事件绑定深入认识
Jun 26 Javascript
jQuery中:checked选择器用法实例
Jan 04 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
原生JS实现N级菜单的代码
May 21 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 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 Smarty初体验二 获取配置信息
2011/08/08 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
Jquery attr("checked") 返回checked或undefined 获取选中失效
2013/10/10 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
深入理解Python中的super()方法
2017/11/20 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
python安装twisted的问题解析
2018/08/21 Python
python对于requests的封装方法详解
2019/01/03 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
如何理解python对象
2020/06/21 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
市政管理求职信范文
2014/05/07 职场文书
工地安全质量标语
2014/06/07 职场文书
甜品店创业计划书
2014/08/14 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
学术研讨会主持词
2015/07/04 职场文书