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中的取反再取反~~没有意义
Apr 06 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
Feb 26 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
Jan 10 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
JS异步文件分片断点上传的实现思路
Dec 25 Javascript
JavaScript编写九九乘法表(两种任选)
Feb 04 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
Aug 15 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
Sep 01 Javascript
Layui数据表格之获取表格中所有的数据方法
Aug 20 Javascript
JavaScript箭头函数中的this详解
Jun 19 Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 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
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
Python程序语言快速上手教程
2012/07/18 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
学习党章思想汇报
2014/01/07 职场文书
善意的谎言事例
2014/02/15 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
师德师风个人整改措施
2014/10/27 职场文书
2014年保密工作总结
2014/11/22 职场文书
党委工作总结2015
2015/04/27 职场文书
开业典礼致辞
2015/07/29 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
html5调用摄像头截图功能
2022/01/18 Javascript