了不起的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中eval函数的使用方法与示例
Apr 09 Javascript
js 回车提交表单两种实现方法
Dec 31 Javascript
jquery获得同源iframe内body下标签的值的方法
Sep 25 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
纯js实现手风琴效果代码
Apr 17 Javascript
微信小程序实现锚点定位楼层跳跃的实例
May 18 Javascript
微信小程序实现顶部选项卡(swiper)
Jun 19 Javascript
Vue项目中设置背景图片方法
Feb 21 Javascript
基于vue中keep-alive缓存问题的解决方法
Sep 21 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
Mar 07 Javascript
CocosCreator如何实现划过的位置显示纹理
Apr 14 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
了不起的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 中的4种标记风格介绍
2012/05/10 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
详解PHP PDO简单教程
2019/05/28 PHP
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
Js on及addEventListener原理用法区别解析
2020/07/11 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
利用python批量检查网站的可用性
2016/09/09 Python
python实现批量修改文件名代码
2017/09/10 Python
Python实现随机选择元素功能
2017/09/14 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
最新党员思想汇报
2014/01/01 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
幼儿园教师辞职信
2019/06/21 职场文书