我觉得很适合入门者,比《Node.js开发指南》要好_Node.js入门经典书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Node.js入门经典 > 我觉得很适合入门者,比《Node.js开发指南》要好
子龙 Node.js入门经典 的书评 发表时间:2014-01-10 23:01:18

我觉得很适合入门者,比《Node.js开发指南》要好

先在图书馆借的。但借期只有一礼拜,感觉此书很不错,于是买了。

之前读过《Node.js开发指南》,我了个天哪,代码版本太旧,调试那个微博网站的应用搞了我整整两天。。。程序员并不是天生爱折腾啊。

目前读完了前11章,建立了Tasks应用,感觉很好玩;初步了解了如何测试Node.js程序和应用。
Tasks例子使用Jade模板,而不是ejs,感觉jade更为强大,而且缩进语法也挺有意思的。本书讲的jade知识不多,做的时候应该顺便参考官方的语法说明: http://jade-lang.com/reference/
而后我按照作者说的,想把这个应用托管到Heroku上,失败了……日后再说吧,这个算是“高级开发层次”了吧~~(安慰自己)

这本书的例子比《Node.js开发指南》的丰富得多,涉及的知识点也更多。它的豆瓣评价目前并不高,但我认为那都是没有仔细读过这本书的人给的。对于入门者来说,这样的翻译实在不影响阅读,因为重要的是里面的例子,它们对于理解Node.js至关重要,而代码是不存在翻译问题的。

对于新手,如果在犹豫先读《Node.js开发指南》还是《Node.js入门经典》,那么我推荐后者~~因为起码做例子比较顺畅。

当然这本书也有很大的写作风格问题:每个例子之后总会有“TYR IT YOURSELF”模块,而里面的代码与该例子的几乎完全一样!——尼玛就是为了增加页数好多卖俩钱儿么,太坑爹了。。。

-------------- 补充: ---------------
12章与13章一起讲述如何建立群聊服务器。我基本做成了这个例子,但认为书中有一个严重错误,以及一个非常模糊的事情没有讲清楚。
严重错误:发生在181页,服务器端代码发出‘user message'事件,这一段应该放在'nickename'事件的回调函数内部,因为它用到了闭包里的一个变量:socket.nickname。
正确的代码应该如此:

io.sockets.on('connection', function(socket){
        socket.on('nickname',function(data, callback){
                if(nicknames.indexOf(data) != -1){
                        callback(false);
                } else {
                        callback(true);
                        nicknames.push(data);
                        socket.nickname = data;
                        io.sockets.emit('nicknames', nicknames);
                        console.log('nicknames are:' + nicknames);

                        socket.on('user message', function(data){
                                io.sockets.emit('broadcast user message',{
                                        nickname: socket.nickname, // 通过闭包来记住发送消息的是哪个用户
                                        content: data
                                });
                        });
                }
        });

        socket.on('disconnection', function(){
                if (!socket.nickname){
                        return;
                }else{
                        var index = nicknames.indexOf(socket.nickname);
                        if ( index > -1) {
                                nicknames.splice(index,1);
                        }
                        io.sockets.emit('nicknames', nicknames);
                }
        });
});

一个没有讲清楚的问题是:客户端什么情况下回触发'disconnet'事件?

展开全文
有用 3 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“我觉得很适合入门者,比《Node.js开发指南》要好”的回应

きらきら 2016-06-22 20:38:42

不用放在里面的。每个连接都会创建自己的socket, socket.nickname应该是绑定在各自的连接上的。