自定义vue2.0全局组件(下篇)

在上篇中,老K为大家介绍了一个初级自定义按钮组件的编写方法。虽然能用,但是还不算完美,可扩展性不够强大。在这一篇中,老K继续为大家完善这个按钮组件。

启动命令窗口, 进入在上篇中我们搭建的vue目录中,输入命令npm run dev启动测试环境,如下图:

查看测试页面,打开谷歌浏览器中的vue调试工具,查看生成的组件是否正确,如下图:

如果出现这个,则证明我们上次编写的组件运行正确。现在,我们可以根据Element-ui的按钮组件样式先把通用的按钮组件样式编写好。如下图:

刷新测试页面,查看效果,如下图:

但是,Element-ui的按钮组件有7种主题样式,由type属性来定义,默认是default。上述我们编写的就是default主题。但是,其他主题样式我们能否也能按照Element-ui的方式来定义呢?答案是肯定的。现在,我们就在上篇的代码基础上来实现这种方式。

为了方便理解,我们可以将上篇编写的<g-button>作为基础组件。其他主题的按钮组件都在此基础上进行扩展。进入custom-global-component/src/components目录,新建extendbutton目录,如下图:

进入extendbutton目录下,新建入口文件index.js、组件文件ExtendButton.vue,如下图:

打开ExtendButton.vue文件,尝试编写一个主题为primary的基础扩展按钮组件,如下图:

扩展组件标签名为“<et-button>”,具有的主题样式class名为“primay”。

进入入口文件index.js,引入extendbut组件模板,生成名为“et-button”的vue组件并输出。如下图:

这样一个基础的扩展按钮组件就完成了。

现在,我们回到src目录下,尝试一下我们新编写的基础扩展按钮组件。打开main.js和App.vue文件,引入并使用这个组件,如下图:

main.js

App.vue

预览效果:

这样,一个primary主题的基础扩展按钮组件就完成了。当然,这样还没有完成。因为,我们并没有通过设置组件的type属性控制按钮的主题。为了实现这种功能,我们可以做一个工厂方法一样的组件复用。此时我们就会用到prop来传递属性。

打开ExtendButton.vue,进一步修改此文件。如下图:

在ExtendButton.vue中,添加各种主题样式,如下图:

此时我们就可以在App.vue中这样使用组件了,如下图:

预览效果如下图:

这样跟Element-ui的按钮组件用法基本一样了。当然,使用按钮组件免不了给其绑定事件。直接给自定义组件绑定事件显然是不行的。需要提前给组件添加on对象和出发其自定义的事件。分别进入Button.vue和ExtendButton.vue,进一步修改代码,如下图:

Button.vue

ExtendButton.vue

打开App.vue,定义一个测试函数test,给default主题按钮绑定test,如下图:

点击default主题按钮,测试效果,如下图:

此时在组件中就可以绑定事件了。一个完美的Element-ui风格的自定义按钮组件就完成了。上述代码我已提交到github,欢迎参考!

代码地址:https://github.com/gaofei019/vue2.0-custom-global-component.git

点击查看公众号文章

欢迎关注个人公众号,查看更多好文。

时间: 2024-09-13 10:33:55

自定义vue2.0全局组件(下篇)的相关文章

自定义vue2.0全局组件(上篇)

随着vue.js的发展,一些基于vue.js的框架如雨后春笋般出现在开发者面前(例如:Element-ui.Mint-ui).但是,无论哪一种框架都不可能完全满足项目需求,有时需要开发者自己编写自定义组件.那怎样编写自定义组件呢?今天,老K为大家分享一下自己常用的方法. 按钮是经常使用的组件之一.Element-ui中的按钮组件说明,如下图: 今天,我们就拿这个按钮组件为例为大家编写一个自己的按钮组件. 前期准备:node.js开发环境,npm包管理器或者cnpm包管理器(推荐cnpm,速度快)

概述VUE2.0不可忽视的很多变化_javascript技巧

今天使用webpack-sample初始一个vue-cli项目,在app.vue文件中添加了个钩子函数ready,可是ready内的事件一直不执行,检查了webpack文件和package.json也没发现什么问题,浏览器也没报错或者提示,很令人捉急.然后去github看了webpack-simple源码,才发现原来vue init webpack-simple默认安装的vue是2.0版本.马上推测到是不是因为vue2.0废弃了ready的用法,果然不出所料,我真是太机智了.看了下vue2.0的

Vue2.0+ElementUI+PageHelper实现的表格分页

Vue2.0+ElementUI+PageHelper实现的表格分页 前言 最近做了一些前端的项目,要对表格进行一些分页显示.表格分页的方法有很多,从宏观上来说分为物理分页和逻辑分页,由于逻辑分页(即前端分页)的做法是将数据全部缓存,然后分页显示,这样在数据量较大的时候会对浏览器的速度产生影响,所以考虑之后我使用了后端分页,后端分页的特点是对当前页的数据进行请求,每次当页码变化或者每页数据量变化的时候,就重新发一次请求.这里所用到的技术主要有以下几种: Spring SpringMVC Myba

vue2.0开发实践总结之入门篇_javascript技巧

vue2.0 据说也出了很久了,博主终于操了一次实刀. 整体项目采用  vue +  vue-router +  vuex (传说中的vue 全家桶),构建工具使用尤大大推出的vue-cli 项目是图片分享社交平台.   项目预览:   1 .vue-cli构建工具必知 我选用的vue-cli 是基于webpack的版本 ,不了解webpack的可以先粗略看下下面的基本知识 webpack 基本知识点: entry:入口点,webpack会从入口点设置的js文件开始对项目进行构建,过程中,所有入

vue2.0开发实践总结之疑难篇_javascript技巧

续上一篇文章:vue2.0 开发实践总结之入门篇 ,如果没有看过的可以移步看一下.  本篇文章目录如下: 1.  vue 组件的说明和使用 2.  vuex在实际开发中的使用 3.  开发实践总结  1.  vue 组件的说明和使用 一个组件实质上是一个拥有预定义选项的一个 Vue 实例 在header组件内部允许外部使用,需要导出属性,有2种导出方法 1.  默认导出(不用命名) export default { data () { return { msg: 'header' } } } 以

Vuex2.0+Vue2.0构建备忘录应用实践_javascript技巧

一.介绍Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化,适合于构建中大型单页应用. 1.什么是状态管理模式?看个简单的例子: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content=&qu

vue2.0开发实践总结之入门篇

vue2.0 据说也出了很久了,博主终于操了一次实刀. 整体项目采用  vue +  vue-router +  vuex (传说中的vue 全家桶),构建工具使用尤大大推出的vue-cli 项目是图片分享社交平台.   项目预览:  开发实践总结之入门篇-vuex2.0例子实践"> 1 .vue-cli构建工具必知 我选用的vue-cli 是基于webpack的版本 ,不了解webpack的可以先粗略看下下面的基本知识 webpack 基本知识点: entry:入口点,webpack会从

vue2.0源码分析之理解响应式架构

分享前啰嗦 我之前介绍过vue1.0如何实现observer和watcher.本想继续写下去,可是vue2.0横空出世..所以 直接看vue2.0吧.这篇文章在公司分享过,终于写出来了.我们采用用最精简的代码,还原vue2.0响应式架构实现 以前写的那篇 vue 源码分析之如何实现 observer 和 watcher可以作为本次分享的参考. 不过不看也没关系,但是最好了解下Object.defineProperty 本文分享什么 理解vue2.0的响应式架构,就是下面这张图 顺带介绍他比rea

vue2.0中引入wangEditor2 步骤与坑

安装:官方给出了如下安装方式 点击 https://github.com/wangfupeng1988/wangEditor/releases 下载最新版 使用git下载: git clone https://github.com/wangfupeng1988/wangEditor.git 使用npm安装: npm install wangeditor (注意 wangeditor 全部是小写字母) 使用bower下载:bower install wangEditor (前提保证电脑已安装了bo