视频地址:

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. 类的阐述 package(包)

    类的阐述 同一个文件中可以定义很多类 编译后,每个类都会生成独立的.class文件 一个类中,只能有一个主函数,每个类都可以有自己的主函数 public修饰的类称为公开类,要求类名必须与文件名称完全相 ...

  2. 前端传参中文需要utf-8转一下给后端

    const Msg = this.form.Msg.replace( (/%(u[0-9A-F]{4})|(%[0-9A-F]{2})/gm, $0 => { return escape($0) ...

  3. C#.NET AES CBC 加密

    重点: 1. KEY 和 IV 转 byte[] 时的编码. 2.要加密的字符串转 byte[] 时的编码. 3.AES 的PADDING,MODE. 4.加密后的byte[] 转字符串时的编码. 先 ...

  4. LNMP单机架构

    黄金架构LNMP LNMP是网站架构初期最合适的单体架构.因为初创型技术团队对于技术的选型,需要考虑如下因素 在创业初期,研发资源有限,研发人力有限,技术储备有限,需要选择一个易维护.简单的技术架构: ...

  5. MESI--CPU缓存一致性协议

    概念 MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议. ME ...

  6. ISO pod 使用

    pod 安装 相关依赖包 新建podfile 文件 pod init 编辑podfile文件添加第三方库 // pod '第三方依赖库名', '版本号' pod 'SDWebImageSwiftUI' ...

  7. mysql加解密,substring substring_index函数

    mysql加解密,substring substring_index函数 SELECT to_base64(AES_ENCRYPT('测试串','key12345678')) ;SELECT AES_ ...

  8. nginx轮询负载均衡演示demo

    1.nginx /conf/nginx.conf配置文件 #user nobody; worker_processes auto; #error_log logs/error.log; #error_ ...

  9. mysql子查询不支持limit问题解决

    如果sql语句中的子查询包含limit 例如: select * from table where id in (select id from table limit 3) 会报错: This ver ...

  10. Bike Sharing Analysis(一)- 探索数据

    1. Bike Sharing Analysis 在这章主要介绍如何分析共享单车服务数据,以及如何基于时间.天气状态特征来识别单车的使用模式.除此之外,我们还会引入可视化分析,假设检验.以及时间序列分 ...