Vue 中数据流组件
好久不见呀,这两年写了很多很多东西,也学到很多很多东西,没有时常分享是因为大多都是我独自思考。明年我想出去与更多的大神交流,再修筑自己构建的内容。
有时候我会想:我们遇到的问题,碰到的界限,是别人给的还是我们自己给的?其实我觉得自己选择的方向是对的,但是有时难免会怀疑,是否有人和我在做一样的事情,我希望找到有趣的伙伴,做一些有趣的事情。
Vue 中数据流组件
又将年终了,该做年终总结了呀。。最近花了一些时间,升级了一下我们的技术架构,使用 vue 作为我们的框架。延续传统,我们仍然需要开发一些 java , 所以将 vue 项目集成进了 springboo, 实现了一些便利的如协作开发前后端,命令编译,简洁的打包部署, router 和 axios 交互问题。写了一个项目示例,有兴趣的可以了解(欢迎 start 呀!): Vue + SpringBoot 项目示例。
引子: 最近写了一个项目,设计了一些基础组件。在开发过程中,也发现了一些最初没有想到的,但可以作为基础组件使用的内容。而数据流刚好就是其中一个。因为很早之前写过一个,只不过那个是原生的,这个使用了 vue 和 elementUI, scss。
重要提示
1. 技术的提升,并没有意味着 UI 的提升,所以我很抱歉,比起之前没有更好看。所以你们使用要先找UI优化样式。又一次叹息,UI的重要性。没有一个好的UI伙伴,在只关注美的人看来,一身武功,自降7分。以后要结识一个呀!
2. 因为之前写过,所以兴致来了就又写了一下基于 vue 的实现。
功能
1. 样式增加了主题设置,目前只有日志和报警,可以扩展主题(比较简单就可以实现扩展)。
2. 增加了日志分类,如时间,级别,概要(比较简单可以扩展为你所需要的)。
代码才是最重要的吧
<template>
<div>
<div :id="theme" class="stream-wrapper">
<el-table
:data="table.data"
stripe
show-summary
sum-text="统计"
:summary-method="getSummaries"
height="100%"
style="width: 100%; max-height: 100%">
<el-table-column
v-for="item in layout"
:prop="item.key"
:label="item.value"
:key="item.key"
></el-table-column>
</el-table>
</div>
<!-- 测试按钮 -->
<div>
<el-row>
<el-button type="primary" @click="addOne">增加一条</el-button>
</el-row>
</div>
</div>
</template> <script>
// 数据流组件: 开发过程中增加的组件,作为数据流展示的基础组件
// 内容:
// 展示数据流
//
// 类型:
// 我使用的类型共有 2 中, log, warn 。 可以根据需要增加,只需要改变样式即可。
//
// props:
// theme, maxLength, layout, info,
//
/// TODO: 同样需要UI进行设计呀。。。 import 'element-ui/lib/theme-chalk/base.css'; // 测试数据
const baseData = '《为你我受冷风吹》,为你我受冷风吹 寂寞时候流眼泪,有人问我是与非 说是与非,可是谁又真的关心谁,若是爱已不可为,明白说吧 无所谓,不必给我安慰 何必怕我伤悲,就当我从此收起真情 谁也不给,我会试着放下往事,管他过去有多美,也会试着不去想起,你如何用爱将我包围,那深情的滋味,但愿我会就此放下往事,忘了过去有多美,不盼缘尽仍留慈悲,虽然我曾经这样以为,我真的这样以为';
const data = baseData.split(','); // 支持主题,可扩展
const themes = ['log', 'warn']; export default {
props: {
// 主题
theme: {
default: 'log',
validate(val) {
return themes.indexOf(val) > -;
}
},
// 保留最大长度
maxLength: {
default: ,
type: Number,
validate(val) {
return val > ;
}
},
// 每条日志的分类,以及表格布局。
layout: {
default(){
return [{
key: 'date',
value: '日期',
width: '',
}, {
key: 'level',
value: '级别',
width: '',
}, {
key: 'main',
value: '主要内容',
width: '',
}, {
key: 'info',
value: '详细信息',
width: '',
}];
},
type: Array,
validate(val) {
val.every((val) => {
return val.hasOwnProperty('key')
&& val.hasOwnProperty('value')
&& val.hasOwnProperty('width');
});
},
},
// 统计信息说明词语
info: {
default(){
return {
contentSpan: '日志',
};
},
validate(val) {
return themes.indexOf(val.contentSpan) > -;
},
},
},
name: 'DataStream',
data() {
return {
table: {
data: [],
},
};
},
methods: {
// 增加一条信息
addOne(){
const vm = this;
let index = vm.table.data.length;
if(index === data.length) return;
if(vm.table.data.length === vm.maxLength){
vm.table.data.length.pop();
}
vm.table.data.unshift({
date: new Date().toLocaleString(),
level: ['Info', 'Warn', 'Error'][Math.floor(Math.random()*)],
main: '我是提要',
info: data[index],
});
},
// 日志统计信息
getSummaries(param) {
return ['统计: ', `目前共有 ${param.data.length} 条${this.info.contentSpan}信息`];
},
},
};
</script> <style lang="scss" scoped>
.stream-wrapper {
margin: 10px %;
padding: 2px;
width: %;
height: 500px;
border: 1px solid #;
border-radius: 4px;
} // 日志 主题样式
#log {
background: #dbf4fc;
color: #;
& /deep/ td {
background: #fff;
}
& /deep/ th, & /deep/ .el-table__footer-wrapper td {
background: #d4ece2;
color: #2a2ad2;
}
} // 报警 主题样式
#warn {
background: #e60909;
color: #e60909;
& /deep/ td {
background: #a99f9f;
color: #e60909;
}
& /deep/ th, & /deep/ .el-table__footer-wrapper td{
background: #eae2d1;
color: #0d483f;
}
}
</style>
示例 (是不是很丑。。。)
好了,我这个前端没什么美感。。。坚守基础的航线,坚持自己的方向,不想撤退。
你们可以随便在各种地方使用,不过若要发布在网上或者转载的话请注上原文地址:
作者:铁柱成针
原文地址:http://www.cnblogs.com/zgh-blog/p/jsDataStreamShown.html
Vue 中数据流组件的更多相关文章
- vue中自定义组件(插件)
vue中自定义组件(插件) 原创 2017年01月04日 22:46:43 标签: 插件 在vue项目中,可以自定义组件像vue-resource一样使用Vue.use()方法来使用,具体实现方法: ...
- Vue中父子组件执行的先后顺序
Vera Vue中父子组件执行的先后顺序探讨(转载) 前几天,朋友向我提出了一个关于Vue中父子组件执行的先后顺序问题,相信很多朋友在学习的过程中也会遇到这个问题,所以我就在此提出我自己的一些小看 ...
- Vue中父子组件执行的先后顺序探讨
前几天,朋友向我提出了一个关于Vue中父子组件执行的先后顺序问题,相信很多朋友在学习的过程中也会遇到这个问题,所以我就在此提出我自己的一些小看法. 问题如下:请问下图中父子组件执行的先后顺序? 首先, ...
- Vue中父组件向子组件传值
Vue中父组件向子组件传值 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- Vue 中的组件
VUE中的组件 一个自定义的标签,vue就会把他看成一个组件,vue可以给这些标签赋予一定意义:一个页面就是一个组件 好处: 1.提高开发效率 2.方便重复使用 3.便于协同开发 4.更容易被管理和维 ...
- 简述vue中父子组件是怎样相互传递值的(基础向)
前言 首先,你需要知道vue中父组件和子组件分别指的是什么? 父组件:vue的根实例——用new Vue()构造函数创建的vue实例(实例会有一个挂载点,挂载点里的所有内容可理解为父组件的内容) ...
- 解决vue中element组件样式修改无效
vue中element组件样式修改无效 <style> .detail{ .el-input__inner { height: 48px; } } </style> 直接写st ...
- Vue中keep-alive组件的理解
对keep-alive组件的理解 当在组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能等问题,使用<keep-alive>包裹动态组件时,会缓存不活动的组件实例, ...
- vue中的组件化
组件化 1.定义全局组件 1.要在父实例中使用某个组件,组件必须在实例值之前定义2.组件其实也是一个Vue实例,因此它在定义时也会接收:data.methond.生命周期函数等3.不同的组件不会与页面 ...
随机推荐
- win7 iis6怎么部署.net网站
win7 iis6怎么部署.net网站,把本机当成网站服务器来简单介绍. 方法/步骤 1 首先在本机有一个可以正常运行的网站.比如vs2010中有一个网站项目,网站项目运行后正常. 2 打开iis6, ...
- html中图片上传预览的实现
本地图片预览 第一种方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type& ...
- 转 FreeBSD通过PORTS安装软件的几个常用命令
1.怎样找到我想安装的包路径:# cd /usr/ports# make search name=mysql2.仅仅下载源码包,而不安装:# cd /usr/ports/directory# make ...
- unbuntu16.04上python开发环境搭建建议
unbuntu16.04上python开发环境搭建建议 2017-12-20 10:39:27 推荐列表: pycharm: 可以自行破解,但是不推荐,另外也不稳定 pydev+eclipse: ...
- Django之信息聚合
feeds.py #coding:utf-8 __author__ = 'similarface' from django.contrib.syndication.views import Feed ...
- Autoprefixer:一个以最好的方式处理浏览器前缀的后处理程序
Autoprefixer解析CSS文件并且添加浏览器前缀到CSS规则里,使用Can I Use的数据来决定哪些前缀是需要的. 所有你需要做的就是把它添加到你的资源构建工具(例如 Grunt)并且可以完 ...
- Kindeditor上传图片回显不出来
原因之一: 图片成功上传但是回显不出来,这个时候,要检查返回的图片地址是否加了http://这个玩意,不然会将原来的头加上图片返回地址.
- Perl语言学习笔记 15 智能匹配与give-when结构
1.智能匹配操作符 替代绑定操作符: 在哈希中查找某一个键: 比較两个数组是否全然同样: 查找列表中是否存在某个元素: 智能匹配操作符与顺序无关.~~ 左右元素能够互换 2.智能操作符优先级 3.gi ...
- JS——特效秀
0.凛冬将至,用几款特效暖暖身 ①.tab图片切换: ②.索引图片切换: ③.统计图: ④.滚动条分页: 1.Canvas跳动彩球时间动画特效
- SQLServer -- SQL Server Database Error: 内部 SQL Server 错误
报表在SQLserver2008运行统计正常,但是在SQLserver2000运行报错,SQL直接执行报:内部 SQL Server 错误. 不断的排查,最终得到的结论是:SQLserver2000似 ...