We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
贵司2016年年会抽奖的任务分派给我了,需求如下:
需求看起来简单,但是经不住需求人员反反复复变更的需求啊,直到上线前一天,还否定了之前的设计,重新找人设计了图,更不用说抽奖规则之类的了。。。 接到需求之后,我认真研究了一下,具体需要注意以下几点:
我列出的技术方案如下: 1. 用Vue.js做前端MVVM框架,展示页面 2. 用lodash做列表筛选,随机选择指定的人数,作为中奖人员,且进行去重处理。 3. 用xss.js做xss过滤 4. 抽奖页面和显示中奖结果页面是两个页面,抽奖的计算是在抽奖页面,在这个页面计算后,存入localStorage里面,中奖结果页面从中取出结果并显示。 5. 祝福页面,需要定期清理已经展示过的祝福语,减少浏览器性能损耗。不过用了Vue之后,将要显示的数据和Model层双向绑定,清除过期数据只需更改代表数据的数组即可。
具体实施过程以及部分注意事项:
people[4]
function interval(lastId){ var flag = setTimeout(function(){ clearTimeout(flag); //长度大于40 直接展示页面 if(vm.tmp.length>40){ callback.call(vm,2); } //请求数据 展示页面 else{ request(lastId,callback,function(err){console.log(err);}) } },2000) }
然后在callback里再次调用interval函数,以实现间隔调用
总结: 这个项目是我将Vue应用于实战的第一个项目,并没有用到高大上的组件等功能。从这次项目中我体会到了只看文档是永远停留在纸上谈兵的阶段,唯有真刀真枪应用于实战,才能提高自己的水平。 同时,没有哪种技术是万能的,要根据自己的需求选择合适的技术。这就需要涉猎各种技术的同时,能够取其精华,分辨其应用场景。 ps: 因为做了这个,给了个正激励200,啊哈哈。。。
The text was updated successfully, but these errors were encountered:
talk is cheap~
Sorry, something went wrong.
No branches or pull requests
贵司2016年年会抽奖的任务分派给我了,需求如下:
需求看起来简单,但是经不住需求人员反反复复变更的需求啊,直到上线前一天,还否定了之前的设计,重新找人设计了图,更不用说抽奖规则之类的了。。。
接到需求之后,我认真研究了一下,具体需要注意以下几点:
我列出的技术方案如下:
1. 用Vue.js做前端MVVM框架,展示页面
2. 用lodash做列表筛选,随机选择指定的人数,作为中奖人员,且进行去重处理。
3. 用xss.js做xss过滤
4. 抽奖页面和显示中奖结果页面是两个页面,抽奖的计算是在抽奖页面,在这个页面计算后,存入localStorage里面,中奖结果页面从中取出结果并显示。
5. 祝福页面,需要定期清理已经展示过的祝福语,减少浏览器性能损耗。不过用了Vue之后,将要显示的数据和Model层双向绑定,清除过期数据只需更改代表数据的数组即可。
具体实施过程以及部分注意事项:
people[4]
后的所有数据清除。 当tmp的length小于40时,向服务器获得新数据然后在callback里再次调用interval函数,以实现间隔调用
动画效果前期折磨了我好长时间。如果直接用jquery操作DOM的话,那么写动画效果很简单的。但是现在模型层和模板绑定,people的第一个元素就是模板li的
第一个子元素,而且由上可知,新数据是由tmp插入people的第一个元素,然后原本是第一个的数据现在变成第二个,以此类推。而再向其应用动画效果,很容易
导致错乱。经过多次尝试,我利用了Vue的过渡系统,在过渡开始的时候找到元素,及其兄弟元素,应用jquery在1s内改变其top值。刚好能达到效果。但这次算是
误打误撞地成功了,因为改变时间间隔,又会导致动画错位。若因为动画的原因不能成功,那么只能放弃使用Vue,而是老老实实直接操作DOM
抽奖完成的操作主要是筛选,去重等。lodash封装了各种对象,数组操作的方法,很容易就实现了所需的功能。如_.sampleSize,_.differenceWith等。
总结:
这个项目是我将Vue应用于实战的第一个项目,并没有用到高大上的组件等功能。从这次项目中我体会到了只看文档是永远停留在纸上谈兵的阶段,唯有真刀真枪应用于实战,才能提高自己的水平。
同时,没有哪种技术是万能的,要根据自己的需求选择合适的技术。这就需要涉猎各种技术的同时,能够取其精华,分辨其应用场景。
ps: 因为做了这个,给了个正激励200,啊哈哈。。。
The text was updated successfully, but these errors were encountered: