了不起的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 相关文章推荐
javascript 正则表达式相关应介绍
Nov 27 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
浅析jQuery1.8的几个小变化
Dec 10 Javascript
JavaScript从数组中删除指定值元素的方法
Mar 18 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
微信小程序实现电子签名功能
Jul 29 Javascript
原生JavaScript实现简单五子棋游戏
Jun 28 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破解防盗链图片的一个简单方法
2014/06/07 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
pyramid配置session的方法教程
2013/11/27 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
利用python实现数据分析
2017/01/11 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
python中模块的__all__属性详解
2017/10/26 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
在python中用url_for构造URL的方法
2019/07/25 Python
python中class的定义及使用教程
2019/09/18 Python
Python imread、newaxis用法详解
2019/11/04 Python
详解python polyscope库的安装和例程
2020/11/13 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
Python中生成ndarray实例讲解
2021/02/22 Python
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
继承公证书
2014/04/09 职场文书
出国英文推荐信
2014/05/10 职场文书
医院保洁服务方案
2014/06/11 职场文书
营销与策划专业求职信
2014/06/20 职场文书
教师考核评语大全
2014/12/31 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
《三国志》赏析
2019/08/27 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
详解Vue router路由
2021/11/20 Vue.js