了不起的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 相关文章推荐
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
Jun 19 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
Jun 19 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
AngularJS开发教程之控制器之间的通信方法分析
Dec 25 Javascript
JS实现动态修改table及合并单元格的方法示例
Feb 20 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 Javascript
详解Vue的异步更新实现原理
Dec 22 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
了不起的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和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
JavaScript知识点整理
2015/12/09 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Django框架封装外部函数示例
2019/05/28 Python
基于树莓派的语音对话机器人
2019/06/17 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
外贸业务员工作职责
2014/01/06 职场文书
九年级数学教学反思
2014/02/02 职场文书
初中生操行评语大全
2014/04/24 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
务虚会发言材料
2014/12/25 职场文书
小学感恩节活动总结
2015/03/24 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
redis 存储对象的方法对比分析
2021/08/02 Redis
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL