视频地址:

https://www.bilibili.com/video/BV15741177Eh?p=119

common.css

/* 演示案例是base.css */
body {
padding: 0;
margin: 0;
}

四个组件只是写了H1的标题,其他没动:

路由配置:

import Vue from 'vue'
import Router from 'vue-router' Vue.use(Router) const routeList = [
{
path : '',
redirect : '/home'
},
{
path : '/home',
component : () => import('./../views/home/Home')
},
{
path : '/category',
component : () => import('./../views/category/Category')
},
{
path : '/cart',
component : () => import('./../views/cart/Cart')
},
{
path : '/profile',
component : () => import('./../views/profile/Profile')
},
];
const route = new Router({
routes : routeList,
mode : 'history'
}) export default route;

先从App.vue开始导入Bar组件

<template>
<div id="app">
<tab-bar></tab-bar>
<router-view></router-view>

</div>
</template> <script>
import TabBar from './components/tab-bar/Tab-Bar'
;
export default {
name: 'App',
components : {
tabBar : TabBar
}

}
</script> <style>
@import './assets/css/common.css';
</style>

然后Bar组件拆分导入了Item组件

<template>
<div id="tab-bar"> <tab-bar-item path="/home" activeColor="red">
<img src="./../../assets/img/tab-bar/deactive/home.png" alt="home" slot="item-icon">
<img src="./../../assets/img/tab-bar/active/home.png" alt="home2" slot="item-icon-active">
<div slot="item-text">首页</div>
</tab-bar-item> <tab-bar-item path="/category" activeColor="blue">
<img src="./../../assets/img/tab-bar/deactive/category.png" alt="category" slot="item-icon">
<img src="./../../assets/img/tab-bar/active/category.png" alt="category2" slot="item-icon-active">
<div slot="item-text">分类</div>
</tab-bar-item> <tab-bar-item path="/cart" activeColor="orange">
<img src="./../../assets/img/tab-bar/deactive/cart.png" alt="cart" slot="item-icon">
<img src="./../../assets/img/tab-bar/active/cart.png" alt="cart2" slot="item-icon-active">
<div slot="item-text">购物车</div>
</tab-bar-item> <tab-bar-item path="/profile" activeColor="green">
<img src="./../../assets/img/tab-bar/deactive/mine.png" alt="mine" slot="item-icon">
<img src="./../../assets/img/tab-bar/active/mine.png" alt="mine2" slot="item-icon-active">
<div slot="item-text">我的</div>
</tab-bar-item>
</div>
</template> <script>
import TabBarItem from './Tab-Bar-Item';
export default {
name: "tab-bar",
components : {
tabBarItem : TabBarItem
}
}
</script> <style scoped>
#tab-bar {
display: flex;
background-color: #f6f6f6; position: fixed;
left: 0;
right: 0;
bottom: 0; box-shadow: 0px -3px 1px rgba(100, 100, 100, 0.1);
}
.tab-bar-item {
flex: 1;
text-align: center; /* 文本居中 */
height: 49px; /* 高度设置 */
}
.tab-bar-item img {
width: 24px;
height: 24px;
margin-top: 3px;
vertical-align: middle;
}
</style>

再是细分的Item组件:

<template>
<div class="tab-bar-item" @click="itemClick" > <div v-if="!isActive">
<slot name="item-icon"></slot>
</div> <div v-else >
<slot name="item-icon-active"></slot>
</div> <div :style="activeStyle" ><!-- :class="{ active : isActive }" -->
<slot name="item-text"></slot>
</div> </div>
</template> <script>
export default {
name: "Tab-Bar-Item",
props : {
path : String,
activeColor : {
type : String,
default : 'red'
}
},
data () {
return {
// isActive : false
}
},
computed : {
isActive () {
// return this.$route.path.indexOf(this.path) > -1;
return this.$route.path.indexOf(this.path) !== -1;
},
activeStyle () {
return this.isActive ? { color : this.activeColor } : {}
}
},
methods : {
itemClick() {
this.$router.replace(this.path);
}
}
}
</script> <style scoped>
/*.active {*/
/* color: @activeColor;*/
/*}*/
</style>

图片位置

演示效果:

【Vue】Re23 组件封装的更多相关文章

  1. Vue 倒计时组件封装

    项目中需要用到倒计时的功能,封装了一个组件. 代码解读: 1:created周期中获取传入参数时间的剩余秒数: this.initSecondsLeft() 并绑定间隔事件 intervalEvent ...

  2. Vue + Element UI 实现权限管理系统 (功能组件封装)

    组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...

  3. Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装

    组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...

  4. seventBus(封装) 一个巧妙的解决vue同级组件通讯的思路

    如果在你项目中需要多处用到同级组件通讯,而又不想去写繁琐的vuex,可以参考这个小思路.本人在写项目中琢磨出来的,感觉挺好用,分享一下. 1.在utils文件夹下添加BusEvent.js 注释已经很 ...

  5. Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

    在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着 ...

  6. vue --》组件的封装 及 参数的传递

    vue组件的定义 ● 组件(Component)是Vue.js最强大的功能之一 ● 组件可以扩展HTML元素,封装可重用代码 ● 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能 ...

  7. 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码

    VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...

  8. vue cli3.0 封装组件全局引入js文件并发布到npm

    首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...

  9. vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...

  10. VUE.JS组件化

    VUE.JS组件化 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎 ...

随机推荐

  1. vue Ref 动态组件 keeplive

    ref被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象上.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素:如果用在子组件上,引用就指向组件实例 # 普通d ...

  2. 再谈中断机制(APIC)

    中断是硬件和软件交互的一种机制,可以说整个操作系统,整个架构都是由中断来驱动的.一个中断的起末会经历设备,中断控制器,CPU 三个阶段:设备产生中断信号,中断控制器翻译信号,CPU 来实际处理信号. ...

  3. python 如何判断一组数呈上升还是下降趋势

    1. python 判断一组数呈上升还是下降趋势的方法 要判断一组数(数列)是呈上升趋势.下降趋势还是无明显趋势,我们可以比较数列中相邻元素的差值.如果大部分差值都是正数,则数列呈上升趋势:如果大部分 ...

  4. INFINI Console 与华为鲲鹏完成产品兼容互认证

    何为华为鲲鹏认证 华为鲲鹏认证是华为云围绕鲲鹏云服务(含公有云.私有云.混合云.桌面云)推出的一项合作伙伴计划,旨在为构建持续发展.合作共赢的鲲鹏生态圈,通过整合华为的技术.品牌资源,与合作伙伴共享商 ...

  5. WPF/C#:程序关闭的三种模式

    ShutdownMode枚举类型介绍 ShutdownMode是一个枚举类型,它定义了WPF应用程序的关闭方式.这个枚举类型有三个成员: OnLastWindowClose:当最后一个窗口关闭或者调用 ...

  6. excel计算日期天数和表格冻结首行

    excel计算日期天数和表格冻结首行 1.在单元格E35中输入公式DATEDIF(A35.B35."MD")MD表起始日期.结束日期天数差."Y" 时间段中的整 ...

  7. Windows无法访问vsftpd

    在搭建vsftpd的时候注意放行相应的服务,注意,是服务,不是端口!! 如果你简单的--add-port放行20和21端口,那么恭喜你,就是访问不了. 正确的方法是--add-service=ftp, ...

  8. Kubernetes(五) Pod控制器详解

    Pod控制器详解 本章主要介绍Pod控制器的详细使用 1. Pod控制器介绍 在kubernetes中,按照pod的创建方式可以将其分为2类: 自主式pod:kubernetes直接创建出来的pod, ...

  9. 海思SDK 学习 :000-海思HI35xx平台软件开发快速入门之背景知识

    背景 参考自:<HiMPP V3.0 媒体处理软件开发参考.pdf> 由于在音视频处理领域,海思芯片占有全球市场的很大份额.当我们选择使用海思芯片开发时,程序开发模型主要是围绕HIMPP( ...

  10. 嵌入式编程的 4 种模型:轮询、中断、DMA、通道

    轮询方式 对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式.它定时对各种设备轮流询问一遍有无处理要求.轮流询问之后,有要求的,则加以处理.在处理I/O设备的要求之后,处理机返 ...