在做这项作业时,首先简单了解了一下Backbone架构,大致了解Backbone.Model,Backbone.Collection,Backbone.View的结构,在大致了解了其工作原理后,就开始阅读代码。添加自动登录的核心代码比较简单,只需利用socket发送登录信号。但是简单这样写就会遇到一个问题:由于注册信号和登录信号挨得太近,使得有时候登录信号可能会先于注册信号到达而产生错误。因此,针对这个问题,我们只需要让登录信号延迟发射即可。但是,这样做之后,还有一个缺陷:当用户用于注册的用户名已经在数据库中存在时,他仍然会发射登录信号,这显然是不合适的。因此我们需要判断用户用于注册的用户名是否已经存在,若不存在再去发射登录信号。因此最后的代码是这样的:
setTimeout(function(){
if (app.isExist == false){
app.socket.emit('login', {
name: name,
password: pass,
});
}
}, 500);
感想:通过这次popush作业,我对Backbone有了一点了解,也对mvc架构又多了一点了解,感觉这样子写代码是一种新思路,给人不一样的感觉。另外,关于上述socket按发送信号到达时间错位的问题,我在自己的机器上一开始并未发现,而是通过与同学的交流在别人的机器上发现的。所以,交流还是非常重要的。
By 包煜