了不起的node.js读书笔记之例程分析


Posted in Javascript onDecember 22, 2014

这周的nodejs学习内容为几个依赖包的使用,把书上的例子都敲了一遍。这篇就以例程为线索,复习一下一周的工作。

1.connect

  这个例程主要是使用connect依赖包,connect提供一个中间件(由函数组成,与请求、响应对象交互)的功能。书中也介绍了connect内置其他的中间件,这些中间件起到组织代码完成web功能的作用。

2.session

  使用connect进行用户会话,进行基本的登录系统。通过中间件实现了检查登录、展示表单、用户匹配、处理登出的功能。展示了中间件的强大和组织方式。

3.express-tweet

  这章学习了用express包,express基于connect。程序设计依旧简单,不过版本不同的np中,函数名会产生一些变化,比如express.createServer()在3.0后就变成了express()。使用express最大的益处就是它简洁又不失灵活。不过tweet访问不到,而改写成微博时,weibo的API访问又过于复杂,这个程序其实是没有成功跑起来的。

4.echo

  这两个例程使用的是WebSocket包,echo的功能主要就是记录消息传输的时间。Websocket的调戏方式就ws来监听(on)一个事件,在回调函数中进行处理,在html文件中也要使用js进行消息的交互。

5.cursors

  本例学习到了广播,这个功能通过自己写的一个broadcast函数来进行处理。在确保光标元素是否存在时,是通过DOM的ID查找来完成的。

6.chat

  这一章可以说是这本书的重头戏,因为Socket.IO包就是作者开发的。它与WS的不同在与它的消息传递是基于传输而不全是WS。这个例程时先实现聊天功能,再实现广播歌曲(DJ)功能。过程中也没有遇到什么大问题。一个流程就是socket.emit一个事件,另一端socket就监听到这个事件,并对其进行处理。

7.总结

  这周效率还是蛮不错的,遇到的问题依然放在了evernote上。问题以前也出现过就是localhost与127.0.0.1的区别。这周在调试js过程中习得了一个函数,可以让js想php一样dump一个对象来。现在贴在下面分享。

 function dump(arr,level) {

     var dumped_text = "";

     if(!level) level = 0;

     

     //The padding given at the beginning of the line.

     var level_padding = "";

     for(var j=0;j<level+1;j++) level_padding += "    ";

     

     if(typeof(arr) == 'object') { //Array/Hashes/Objects 

         for(var item in arr) {

             var value = arr[item];

             

             if(typeof(value) == 'object') { //If it is an array,

                 dumped_text += level_padding + "'" + item + "' ...\n";

                 dumped_text += dump(value,level+1);

             } else {

                 dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";

             }

         }

     } else { //Stings/Chars/Numbers etc.

         dumped_text = "===>"+arr+"<===("+typeof(arr)+")";

     }

     return dumped_text;

 }

下一周开始学mongoDB,node的学习主要还是通过学习例程、阅读源码API来提高。毕竟node的优点就是网络上大片的np。

Javascript 相关文章推荐
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
Mar 05 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
简单介绍JavaScript中字符串创建的基本方法
Jul 07 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
Jan 19 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
关于express与koa的使用对比详解
Jan 25 Javascript
学习node.js 断言的使用详解
Mar 18 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
回顾Javascript React基础
Jun 15 Javascript
原生JS实现音乐播放器的示例代码
Feb 25 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 #Javascript
了不起的node.js读书笔记之node.js中的特性
Dec 22 #Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 #Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 #Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 #Javascript
javascript中的遍历for in 以及with的用法
Dec 22 #Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 #Javascript
You might like
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
HTML颜色选择器实现代码
2010/11/23 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
pytorch实现查看当前学习率
2020/06/24 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
领导党性分析材料
2014/02/15 职场文书
关于旅游的活动方案
2014/08/15 职场文书
安全生产月标语
2014/10/07 职场文书
文明单位申报材料
2014/12/23 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书