了不起的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判断IE6等浏览器的代码
Apr 05 Javascript
jquery获取tagName再进行判断
May 29 Javascript
JS实现超简单的仿QQ折叠菜单效果
Sep 21 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 Javascript
详解PHP中pathinfo()函数导致的安全问题
Jan 05 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
JS中正则表达式要注意lastIndex属性
Aug 08 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 Javascript
JavaScript 实现轮播图特效的示例
Nov 05 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
php之Memcache学习笔记
2013/06/17 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
解决Python一行输出不显示的问题
2018/12/03 Python
python移位运算的实现
2019/07/15 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
经典c++面试题二
2015/08/14 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
家教广告词
2014/03/19 职场文书
中秋客户感谢信
2015/01/22 职场文书
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL