了不起的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 相关文章推荐
学习ExtJS(二) Button常用方法
Oct 07 Javascript
JavaScript 核心参考教程 内置对象
Oct 13 Javascript
基于jquery的让textarea自适应高度的插件
Aug 03 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
May 23 Javascript
jQuery插件开发全解析
Oct 10 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
Sep 04 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
纯css下拉菜单 无需js
Aug 15 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 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
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
js实现放大镜特效
2017/05/18 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python numpy存取文件的方式
2020/04/01 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
法律专业学生的自我评价
2014/02/07 职场文书
信息总监管理职责范本
2014/03/08 职场文书
科研课题实施方案
2014/03/18 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
table不让td文字溢出操作方法
2022/12/24 HTML / CSS