了不起的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中暂停功能的实现代码
Mar 04 Javascript
jQuery 处理表单元素的代码
Feb 15 Javascript
js调试系列 控制台命令行API使用方法
Jun 18 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
jQuery实现图片预加载效果
Nov 27 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
jquery层级选择器的实现(匹配后代元素div)
Sep 05 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
element中table高度自适应的实现
Oct 21 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输出xml格式字符串(用的这个)
2012/07/12 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
js读取配置文件自写
2014/02/11 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
javascript每日必学之循环
2016/02/19 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python从零开始创建区块链
2018/03/06 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
python实现猜单词游戏
2020/05/22 Python
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
酒店应聘自荐信
2013/11/09 职场文书
日语系毕业生推荐信
2013/11/11 职场文书
学校安全教育制度
2014/01/31 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
地质工程专业毕业生求职信
2014/08/08 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
集结号观后感
2015/06/08 职场文书
初中英语教学反思范文
2016/02/15 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
「月刊Action」2022年5月号封面公开
2022/03/21 日漫