了不起的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 相关文章推荐
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
Jul 11 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
js实现加载页面就自动触发超链接的示例
Aug 31 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
Aug 10 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 Javascript
layui异步加载table表中某一列数据的例子
Sep 16 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
JavaScript实现简单随机点名器
Nov 21 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 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版
2012/04/20 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
python各种语言间时间的转化实现代码
2016/03/23 Python
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
大学英语专业求职信
2014/06/21 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
青年文明号汇报材料
2014/12/23 职场文书
优秀英文求职信范文
2015/03/19 职场文书
创业计划书之宠物店
2019/09/19 职场文书