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实现字符串的16进制编码不加密
Apr 25 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
AngularJS自定义控件实例详解
Dec 13 Javascript
微信小程序开发之map地图实现教程
Jun 08 Javascript
Vue的百度地图插件尝试使用
Sep 06 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
Dec 26 Javascript
element-ui 时间选择器限制范围的实现(随动)
Jan 09 Javascript
vue 解决computed修改data数据的问题
Nov 06 Javascript
JS实现秒杀倒计时特效
Jan 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模板,主要想体现一下思路
2006/12/25 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
js面向对象编程总结
2017/02/16 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
python机器学习实现决策树
2019/11/11 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
求职推荐信
2013/10/28 职场文书
初中校园之声广播稿
2014/01/15 职场文书
诚信考试承诺书
2014/03/27 职场文书
经典演讲稿开场白
2014/08/25 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
开除员工通知
2015/04/22 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
导游词之河北邯郸
2019/09/12 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
JS class语法糖的深入剖析
2022/07/07 Javascript