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 相关文章推荐
js弹窗代码 可以指定弹出间隔
Jul 03 Javascript
node.js中的console.dir方法使用说明
Dec 10 Javascript
jQuery基础知识点总结(必看)
May 31 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
canvas实现钟表效果
Feb 13 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
vue.js根据代码运行环境选择baseurl的方法
Feb 28 Javascript
使用vue2实现购物车和地址选配功能
Mar 29 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 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下连接mssql2005的代码
2011/01/17 PHP
php地址引用(php地址引用的效率问题)
2012/03/23 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
js的写法基础分析
2011/01/17 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
Python的语言类型(详解)
2017/06/24 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
Python字符串对象实现原理详解
2019/07/01 Python
Python Selenium截图功能实现代码
2020/04/26 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
Java的类与C++的类有什么不同
2014/01/18 面试题
大学同学聚会邀请函
2014/01/19 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
2014国庆节标语口号
2014/09/19 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL