Skip to content

Latest commit

 

History

History
41 lines (24 loc) · 2.08 KB

File metadata and controls

41 lines (24 loc) · 2.08 KB

Entry Task2 设计文档

技术栈

  • vue
  • vuex
  • vue-router
  • typescript

设计思路

本项目为一个客户端渲染的单页面应用,采用vue官方的vue-router作为路由管理。接口数据通过fetch拉取,用vuex来管理页面的共享数据状态,比如用户信息,Channel数据列表,Events活动数据列表,以及Filter过滤数据等。

移动端页面适配

采用hotcss方式适配。

登陆态客户端维护

在客户端登录时,服务端会返回一个token,客户端需把这个token存在cokkie里(设置一个较短的有效期),防止刷新页面,丢失登陆态。在路由配置中,可配置哪些是需要鉴权的,然后在配置beforeMatch方法中检查登陆态,如果登陆态失效,则跳转到登陆页面。

应用数据状态维护

用vuex可以很方便的维护应用的状态。可以根据数据模块化特征,进行分模块化的维护,例如user模块,list模块,filter模块。在拉取服务端数据时,只需要在对应模块下定义actions,通过actions异步commit一个mutation,来同步store的状态。其中,与服务端相关的请求交互也统一写在api目录下,这样便于后面维护。

列表无限滚动

通过编写一个vue插件来增强组建内自动触发当前组件根元素的滚动事件,只需要在定义组件时,methods增加scrolling或者scrollend函数,那么当前这个组件就会在滚动时自动触发scrolling方法,在滚动结束时触发scrollend方法,并且这两个方法内this自动绑定在组件实例。

由于是移动应用,所以采用了passive和requestAnimationFrame来提升滚动性能。

在判断是否可以滚动时,需要计算当前元素尺寸以及滚动了的距离和维护一个请求锁,以及一个是否有数据的状态标志,当超过一定阀值且请求锁是非锁定状态时,可请求下页数据。

不足

  1. 首页日期过滤条件未实现later,
  2. 详情页未实现tab切换
  3. 没有编写测试用例
  4. 没有实现国际化
  5. 可能还有细节可完善优化