了不起的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 相关文章推荐
ext监听事件方法[初级篇]
Apr 27 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
Feb 11 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
Egret引擎开发指南之编译项目
Sep 03 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
AngularJS入门教程之ng-checked 指令详解
Aug 01 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
vue.js 微信支付前端代码分享
Feb 10 Javascript
浅谈Webpack打包优化技巧
Jun 12 Javascript
详解javascript中的babel到底是什么
Jun 21 Javascript
使用js在layui中实现上传图片压缩
Jun 18 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调用c接口无错版介绍
2014/03/11 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHP 文件上传限制问题
2019/09/01 PHP
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
python中setuptools的作用是什么
2020/06/19 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
医学毕业生自荐信
2013/10/11 职场文书
家长会欢迎标语
2014/06/24 职场文书
鸟的天堂导游词
2015/01/31 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
学校社团活动总结
2015/05/07 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
地道战观后感500字
2015/06/04 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
向Spring IOC 容器动态注册bean实现方式
2022/07/15 Java/Android