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 相关文章推荐
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
javascript事件函数中获得事件源的两种不错方法
Mar 17 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
Node.js读写文件之批量替换图片的实现方法
Sep 07 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
微信小程序获取微信运动步数的实例代码
Jul 20 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
Vue开发之封装分页组件与使用示例
Apr 25 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
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在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python实现图书借阅系统
2019/02/20 Python
python中安装django模块的方法
2020/03/12 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
Ref与out有什么不同
2012/11/24 面试题
个人自我评价范文
2014/02/05 职场文书
幼儿园老师寄语
2014/04/03 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
如何书写授权委托书?
2019/06/25 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
css height属性中的calc方法详解
2021/06/03 HTML / CSS
Python Pandas 删除列操作
2022/03/16 Python