了不起的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 相关文章推荐
Javascript之文件操作
Mar 07 Javascript
jquery中的查找parents与closest方法之间的区别
Dec 02 Javascript
jQuery 无限级菜单的简单实例
Feb 21 Javascript
跟我学习javascript的浮点数精度
Nov 16 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
Aug 25 Javascript
vue动态生成dom并且自动绑定事件
Apr 19 Javascript
Node.js静态服务器的实现方法
Feb 28 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
bootstrap datepicker的基本使用教程
Jul 09 Javascript
微信小程序简单的canvas裁剪图片功能详解
Jul 12 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
解决VueCil代理本地proxytable无效报错404的问题
Nov 07 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中对缓冲区的控制实现代码
2013/09/29 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
DWR Ext 加载数据
2009/03/22 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
layui实现table加载的示例代码
2018/08/14 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
python抽取指定url页面的title方法
2018/05/11 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
原生python实现knn分类算法
2019/10/24 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
员工拾金不昧表扬信
2014/01/09 职场文书
保护环境建议书100字
2014/05/13 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
公司宣传语大全
2015/07/13 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers