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函数的等价原生函数代码示例
May 27 Javascript
jquery中prop()方法和attr()方法的区别浅析
Sep 06 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
jQuery实现鼠标划过修改样式的方法
Apr 14 Javascript
基于jQuery实现多层次的手风琴效果附源码
Sep 21 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
Sep 29 Javascript
在Vue中获取组件声明时的name属性方法
Sep 12 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
js原生map实现的方法总结
Jan 19 Javascript
JavaScript适配器模式原理与用法实例详解
Mar 09 Javascript
vue实现div单选多选功能
Jul 16 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原理之异常机制深入分析
2010/08/08 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP使用数组实现队列
2012/02/05 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
JavaScript创建对象的写法
2013/08/29 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
python验证码识别的示例代码
2017/09/21 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python日志模块logbook使用方法
2019/09/19 Python
python实现从wind导入数据
2019/12/03 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
如何写出好的Java代码
2014/04/25 面试题
药物学专业学生的自我评价
2013/10/27 职场文书
数控技术专业毕业自荐书范文
2014/02/05 职场文书
实名检举信范文
2015/03/02 职场文书
学校中秋节活动总结
2015/03/23 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
Apache自带的ab压力测试工具的实现
2022/07/23 Servers