了不起的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 相关文章推荐
js类后台管理菜单类-MenuSwitch
Sep 12 Javascript
struts2 jquery 打造无限层次的树
Oct 23 Javascript
jquery 操作表格实现代码(多种操作打包)
Mar 20 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
May 15 Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 Javascript
JavaScript 学习笔记之语句
Jan 14 Javascript
jQuery实现contains方法不区分大小写的方法
Feb 13 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
这应该是最详细的响应式系统讲解了
Jul 22 Javascript
Javascript地址引用代码实例解析
Feb 25 Javascript
测量JavaScript函数的性能各种方式对比
Apr 27 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
教你如何把一篇文章按要求分段
2006/10/09 PHP
说明的比较细的php 正则学习实例
2008/07/30 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python字符串循环左移
2019/03/08 Python
python安装本地whl的实例步骤
2019/10/12 Python
Python如何实现定时器功能
2020/05/28 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
教师自荐信范文
2013/12/09 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python