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 相关文章推荐
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
Oct 15 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
Jan 16 Javascript
js调试工具Console命令详解
Oct 21 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
Oct 26 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
使用webpack搭建vue环境的教程详解
Dec 31 Javascript
详解Java中String JSONObject JSONArray List转换
Nov 13 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
php中文验证码实现方法
2015/06/18 PHP
PHP.vs.JAVA
2016/04/29 PHP
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
用Python进行行为驱动开发的入门教程
2015/04/23 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
详解Python中is和==的区别
2019/03/21 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
python如何写try语句
2020/07/14 Python
python中字典增加和删除使用方法
2020/09/30 Python
css实例教程 一款纯css3实现的超炫动画背画特效
2014/11/05 HTML / CSS
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
前台文员的岗位职责
2013/11/14 职场文书
美食节策划方案
2014/05/26 职场文书
志愿者工作心得体会
2016/01/15 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript