学习平台项目总结

为了以后的面试不至于忘记,觉得有必要做下总结,不然以后忘了很多项目的细节。

项目介绍

这是一个面向内部的项目,在项目中我和另一个实习生主要是负责做数据统计功能,主要是关于PV、UV、播放量、下载量、使用时长等的统计,我主要负责的是前端部分。

项目使用的技术框架主要是express+ejs+vue,使用echarts来做可视化,用iview组件库,还包括一些moment.js、mysql.js、axios.js等函数库的使用。

用webpack做构建打包,用git做版本管理,此外还学到了js设计模式的应用、如何调试以及部署应用,整个开发过程周期非常完善,也在一些难点中得到了锻炼。

我学到了什么?

  1. webpack、babel等相关知识
  2. git相关命令知识
  3. express框架的理解与使用
  4. vue框架的理解与使用
  5. echarts、iview等组件库的使用
  6. moment.js、mysql.js、axios.js等函数库的使用
  7. sql命令的复习与使用。
  8. JS设计模式的运用
  9. 设计、调试、分析、检索信息能力的增长

项目难点

1.如何统计PV、UV、平均停留时长

停留时长计算规则:
每次进入页面的时候记录下访问时间starttime以及referer url,然后从localStorage中拿出上个页面的访问时间starttime
start_time-start_time得到的结果就是上个页面(refered url页面)的停留时长staytime。 然后在这个页面把上个页面的username、starttime、pageurl(也就是刚刚记录的referer url)等字段作为一条PV数据发给发给后台

拿PV数据时sql语句就在时间段内count(),要拿UV数据就distinct username,要拿平均停留时长就累加时间段内的staytime值。然后后续格式方面操作交给前端处理。

2.对iview日期选择组件的改造。

因为产品要求日期组件datapicker能实现选择自然日、自然月、自然周的功能,于是我尝试了几个ui组件库,主要是elment-ui和iview。
发现都不能满足,就选了最接近的iview,对于iview-datepicker的改造主要在于熟悉这个组件的官方文档,以及通过查看dev-tool,并使用jquery来完成组件事件与样式的定制。

3.echarts的状态响应与vue的状态响应的相冲突。

由于接口的问题,导致我需要在一个方法中去调用四次同一个方法去获取数据,也就是发送了4次请求,所以显示的数据顺序是获得数据先后的顺序,然后产品要求饼图展示的数据需要按顺序。
我试过用排序以及用赋值而不是push去卸载数据,也使用过promise,都无法处理顺序不一致的问题。于是要求后台把4个接口统一到1个接口,这样就不存在异步调取的先后问题。
此外卸载数据时使用了一个临时dataTmp对象去卸载数据下来,再用push(...data)方式装到store中的data里,这样也避免了echarts和vue状态响应相关的坑。

4.对echarts中图表的一些定制。

比如echarts中的饼图的图例只能展示名字,而需求是希望能够展示数据,所幸查了官方文档发现formatter的值可以是函数,于是使用了函数对图例格式改造了下,使得其能展示更丰富的数据。
还有做柱状图时,需要对同一类型的柱子进行颜色的改造,也是利用了color的值可以是函数,所以感觉echarts很强大,自己能够根据需要定制,当然阿里的AntV也很强大。

猜你喜欢

转载自www.cnblogs.com/wuguanglin/p/wqlearningplatform_dataStatistics.html