了不起的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 相关文章推荐
刷新页面实现方式总结(HTML,ASP,JS)
Nov 13 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
May 19 Javascript
异步安全加载javascript文件的方法
Jul 21 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
CSS或者JS实现鼠标悬停显示另一元素
Jan 22 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
React中的refs的使用教程
Feb 13 Javascript
原生js调用json方法总结
Feb 22 Javascript
vue实现按需加载组件及异步组件功能
May 27 Javascript
vue 实现购物车总价计算
Nov 06 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中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
日期 时间js控件
2009/05/07 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python用threading实现多线程详解
2017/02/03 Python
python 拼接文件路径的方法
2018/10/23 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Python实现对adb命令封装
2020/03/06 Python
Python实现自动签到脚本功能
2020/08/20 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
python 如何区分return和yield
2020/09/22 Python
大学生求职工作的自我评价
2014/02/13 职场文书
周年庆典主持词
2014/04/02 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android
Javascript之datagrid查询详解
2021/09/15 Javascript