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 相关文章推荐
Js+Flash实现访问剪切板操作
Nov 20 Javascript
jQuery把表单元素变为json对象
Nov 06 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
Bootstrap实现下拉菜单效果
Apr 29 Javascript
HTML Table 空白单元格补全的简单实现
Oct 13 Javascript
Vue.js 2.0中select级联下拉框实例
Mar 06 Javascript
js实现图片上传预览原理分析
Jul 13 Javascript
addeventlistener监听scroll跟touch(实例讲解)
Aug 04 Javascript
详解关于微信setData回调函数中的坑
Feb 18 Javascript
vue中使用vee-validator完成表单校验方案
Nov 01 Javascript
vue 使用post/get 下载导出文件操作
Aug 07 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 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
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
Exception类的常用方法
2012/06/16 面试题
4s店市场专员岗位职责
2014/04/09 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
2019年思想汇报
2019/06/20 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电