了不起的node.js读书笔记之node的学习总结


Posted in Javascript onDecember 22, 2014

这周做项目做得比较散(应该说一直都是这样),总结就依据不同情境双开吧~这篇记录的是关于node的学习总结,而下一篇是做项目学到的web前端的知识。

1.HTTP篇

  node的HTTP模块在第一篇时接触过,这里来学习几个例程中出现的API。

var qs = require('querystring');
require('http').createServer(function(req, res){

    if('/' == req.url){

        res.writeHead(200, {'Content-Type': 'text/html'});

        res.end([

            '<form method="POST" action="/url">',

            '<h1>My form</h1>',

            '<fieldset>',

            '<label>Personal information</label>',

            '<p>What is your name?</p>',

            '<input type="text" name="name">',

            '<p><button>Submit</button></p>',

            '</form>',

        ].join(''));

    }else if('/url' == req.url && 'POST' == req.method){

        var body = '';

        req.on('data', function(chunk){

            body += chunk;

        });

        req.on('end', function(){

            res.writeHead(200, {'Content-Type': 'text/html'});

            res.end('<b>Your name is <b>' + qs.parse(body).name + '</b></p>');

        });

    }else{

        res.writeHead(404);

        res.end('not found');

    }

 }).listen(3000);

  creatServer([requestListener])函数的参数是一个回调函数function(req, res),其中的req(请求request)是http.IncomingMessage的一个实例,res(响应)则是http.ServerRrsponse的实例。

  我们用到了res的url、method字符串和两个方法writeHead、end。顾名思义,url就是记录HTTP的URL(主机名后面所有的东西),method就是记录HTTP响应的方法。

  writeHead(statusCode, [reasonPhrase], [headers])用来发送一个http响应头信息,此方法只有当消息到来时才被调用一次,并且必须在end这一类方法之前调用。如果你反而为之,先调用了write(chunk, [encoding])或者end([data], [encoding])方法,系统会自动记录一个不易见、易变的(总之不好的)响应头内容并调用writeHead这个方法。

  而end方法会对服务器发出消息表示响应的信息都发送完毕,所以每次响应发送完毕时必须调用这个方法。当其参数有内容(如例程)时,这个方法等于同时调用了write('内容', [encoding])和end方法。这还是相当方便的。

  接下来,例程使用了req.on来监听事件并绑定在req(message)上。其原型是Emitter.on(event, listener),req就是产生事件的对象,并且在在监听函数中this指向当前监听函数所关联的EventEmitter对象。

Javascript 相关文章推荐
jquery select操作的日期联动实现代码
Dec 06 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
扩展JavaScript功能的正确方法(译文)
Apr 12 Javascript
密码强度检测效果实现原理与代码
Jan 04 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
使用jQuery获取data-的自定义属性
Nov 10 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
微信小程序实现折叠展开效果
Jul 19 Javascript
深入理解移动前端开发之viewport
Oct 19 Javascript
node 解析图片二维码的内容代码实例
Sep 11 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
javascript定义变量时加var与不加var的区别
Dec 22 #Javascript
You might like
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
PHP反射基础知识回顾
2020/09/10 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
js 格式化时间日期函数小结
2010/03/20 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
javascript实现倒计时提示框
2021/03/02 Javascript
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python实现字符串和数字拼接
2020/03/02 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
大学新生军训个人的自我评价
2013/10/03 职场文书
高三英语教学反思
2014/01/13 职场文书
本科毕业生自荐信
2014/06/02 职场文书
公安忠诚教育心得体会
2016/01/23 职场文书
自考生自我评价
2019/06/21 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
服务器间如何实现文件共享
2022/05/20 Servers