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 相关文章推荐
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
为jQuery增加join方法的实现代码
Nov 28 Javascript
Jquery事件的连接使用示例
Jun 18 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
Oct 10 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
JS实现点击循环切换显示内容的方法
Oct 19 Javascript
基于JavaScript实现抽奖系统
Jan 16 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
微信小程序上传图片到php服务器的方法
May 23 Javascript
vue过滤器实现日期格式化的案例分析
Jul 02 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使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
js实现扫雷源代码
2020/11/27 Javascript
python冒泡排序简单实现方法
2015/07/09 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python requests接口测试实现代码
2020/09/08 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
高三上学期学习自我评价
2014/04/23 职场文书
2015年党员承诺书
2015/01/21 职场文书
体育教师教学随笔
2015/08/15 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书