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 相关文章推荐
javascript 定义初始化数组函数
Sep 07 Javascript
使用js检测浏览器的实现代码
May 14 Javascript
javascript常见用法总结
May 22 Javascript
详谈javascript中的cookie
Jun 03 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
Jul 29 Javascript
JS实现的车标图片提示效果代码
Oct 10 Javascript
浅谈js的异步执行
Oct 18 Javascript
bootstrap是什么_动力节点Java学院整理
Jul 14 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 Javascript
JavaScript的垃圾回收机制与内存管理
Aug 06 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高效率写法(详解原因)
2013/06/20 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
json数据的列循环示例
2013/09/06 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
python实现的简单FTP上传下载文件实例
2015/06/30 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
详解python做UI界面的方法
2019/02/27 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
为什么说python适合写爬虫
2020/06/11 Python
python 图像增强算法实现详解
2021/01/24 Python
农贸市场管理制度
2014/01/31 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
python实现进度条的多种实现
2021/04/29 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
Python与C++中梯度方向直方图的实现
2022/03/17 Python