Vue中自定义全局组件的实现方法


Posted in Javascript onDecember 08, 2017

前言

有时候我们在做开发的时候,就想自己写一个插件然后就可以使用自己的插件,那种成就感很强。今天就解决了一个长期困扰着我的问题,现在记录一下,供日后参考。

涉及知识点是Vue.js官网教程中的插件使用

方法如下:

首先我遇到的问题就是我自定义的组件如果需要在项目中其他组件中多次被调用,而我之前的解决方法就是简单的,哪里需要在哪引用。这无疑增加了许多代码重复。

而在使用Vue.js的一些UI框架的时候则注意到,只需要在项目的入口文件中import这个插件然后在接着Vue.use(‘插件名')。这样就能在整个项目里面使用这个框架中的组件以及方法了。

查阅资料后发现,自定义的组件需要提供一个install方法

import sideblockComponent from './sideBlock'
const defaultComponentName = 'sidebar'

const Sidebar = {
 install(Vue, options = {}) {
 const componentName = options.componentName || defaultComponentName //提供可选的组件名
 Vue.component(componentName, sideblockComponent)
 }
}
export default Sidebar

像这样 引入自己编写好的组件,然后创建一个对象,并包含一个install方法,并使用Vue.component()方法注册成Vue全局组件,最后export default导出这个对象。

到此最关键的步骤已经做好,接下来是最最关键的步骤。

我们需要在项目的入口文件中引入刚刚做好的组件,并且通过Vue.use(引入的组件)来使用插件。

到此,一个全局Vue组件就弄好了。我们在提供install方法的同时也可以通过Vue.$emit()的方法来触发组件中的方法,但最近在使用Element UI时发现他们组件中的方法一般都是通过Vue.$refs()来触发的。具体原因留到日后再做研究。

vue $refs的基本用法

<div id="app">
<input type="text" ref="input1"/>
<button @click="add">添加</button>
</div>
<script>
new Vue({
  el: "#app",
  methods:{
  add:function(){
    this.$refs.input1.value ="22"; //this.$refs.input1 减少获取dom节点的消耗
    }
  }
})
</script>

一般来讲,获取DOM元素,需document.querySelector(".input1")获取这个dom节点,然后在获取input1的值。

但是用ref绑定之后,我们就不需要在获取dom节点了,直接在上面的input上绑定input1,然后$refs里面调用就行。

然后在javascript里面这样调用:this.$refs.input1 这样就可以减少获取dom节点的消耗了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery Tools tooltip使用说明
Jul 14 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
Feb 26 Javascript
javascript实现验证IP地址等相关信息代码
May 10 Javascript
jquery实现弹出层效果实例
May 19 Javascript
Jquery数字上下滚动动态切换插件
Aug 08 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
浅谈javascript的闭包
Jan 23 Javascript
JS排序之冒泡排序详解
Apr 08 Javascript
Node.js中的http请求客户端示例(request client)
May 04 Javascript
深入浅析Vue中的Prop
Jun 10 Javascript
JavaScript实现预览本地上传图片功能完整示例
Mar 08 Javascript
Vue中的Vux配置指南
Dec 08 #Javascript
利用10行js代码实现上下滚动公告效果
Dec 08 #Javascript
vue axios 二次封装的示例代码
Dec 08 #Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
Dec 08 #Javascript
js断点调试心得分享(必看篇)
Dec 08 #Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 #Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
Dec 08 #Javascript
You might like
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python greenlet实现原理和使用示例
2014/09/24 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
python中关于for循环的碎碎念
2017/06/30 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
python实现的分层随机抽样案例
2020/02/25 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
幼儿园美术教学反思
2014/01/31 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
市场开发计划书
2014/05/07 职场文书
党性教育心得体会
2014/09/03 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis