Popush前端小优化——岳一飞

Popush优化部分任务:

    阅读Popush前端代码,理解前端逻辑。在阅读代码的基础上,实现“注册成功后自动登录”的功能。

    在将popush代码拉取到本地后,我先大概确定了前端代码位于static文件夹下,实现这个功能应该主要修改static/js下的代码。之后,经过阅读backbone官网上的教程及一些网络上的技术博客,了解到backbone其实是类似于MVC的架构,由于暑假小学期的大作业并没有使用MVC架构,所以对backbone的理解还是费了一番周折的。在大概对backbone有一定了解后,我开始逐个读static/js下文件中的代码,了解到各个文件的主要功能。在这个过程中,排除了大多数与实现自动登录功能无关的文件,大体将修改范围缩小到register-view.js,room-view.js和router.js这三个文件上。

    通过register-view.js与login-view.js的对比,以及自己所设想的实现注册成功后调用登录函数的实现思路,最终发现register-view.js中如下代码:
               
app.socket.emit('register', {
    name: name,
    password: pass,
});

和login-view.js中:
app.socket.emit('login', {
    name: name,
    password: pass,
});

分别表示向服务器发送注册消息和登录消息。于是我在register-view.js上述代码段后加上了发送登录消息的代码。
    在开始的几次测试中,结果都没什么问题。但当测试用一个已注册用户名及其密码注册时,页面并没有提示用户名已注册,而是直接登录进主页了。
    发现这个问题后,又经过相似的几次测试,最终确定只有当用户名已注册并且密码也正确时会出现这一问题。这时才发现这一情况下register消息和login消息都发出去,理论上register页面会有注册失败的消息提示,但login消息发出后,页面跳转到主页,错误提示也就不会被看到了。而这一点是不符合我们的预期的。之后的主要时间,都在努力解决这一问题。
    起初我的想法是尝试找到发出register消息后的返回值或者回调函数,但发现二者并不存在(即使存在,也只能表明消息发送成功或失败,而不包含注册结果的信息)。之后,我发现对于页面来说,注册成功与失败页面提示的消息是不同的。因此决定将页面中与注册结果提示信息相关的元素作为判断条件决定是否发送login消息。
    经过比对不同注册结果返回的消息,我选择注册成功提示消息中“登录”二字的链接所在的id = login-view-2的元素作为判断条件。jquery选择器取出的元素个数为0时表明注册失败,应停留在注册页面;个数大于0时表明注册成功,应跳转至主页。
    考虑到发出register消息到页面元素发生变化需要一定的延时,我用setTimeout设定了延迟一段时间后在判断是否需要登录。在测试时又发现了setTimeout中所执行的函数不能传递参数的问题,最后用function(){}中调用函数的方法解决了。为了尽量减少延迟时间又要保证页面已经收到register消息返回结果,我选择了100ms作为延迟时间。
    在尝试实现功能的过程中,进行了几次尝试,当然前几次都是失败的,或是没有实现预期的功能或是没有效果。最后找到正确的实现方法是建立在对源代码及其所用的backbone框架的理解和自己预期实现次功能所用的方法的基础上的,这几点缺一不可。最后使用的方法虽然实现了功能,但由于固定延时时间,容易受消息传输延迟时间的影响,其实并不是一个太稳定的解决方法,今后仍需改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值