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 相关文章推荐
用jscript实现新建和保存一个word文档
Jun 15 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
在JS数组特定索引处指定位置插入元素的技巧
Aug 24 Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 Javascript
纯JS打造网页中checkbox和radio的美化效果
Oct 13 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
Jun 26 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
详解React 元素渲染
Jul 07 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实现的功能是显示8条基色色带
2006/10/09 PHP
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
python中pop()函数的语法与实例
2020/12/01 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
房地产销售大学生自我评价分享
2013/11/11 职场文书
小学生运动会报道稿
2014/09/12 职场文书
终止劳动合同协议书
2014/10/05 职场文书
毕业典礼致辞
2015/07/29 职场文书