了不起的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 相关文章推荐
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
Jun 12 Javascript
Javascript在IE和FireFox中的不同表现简析
Dec 03 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
理解javascript封装
Feb 23 Javascript
Angular 根据 service 的状态更新 directive
Apr 03 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
React学习之事件绑定的几种方法对比
Sep 24 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
Feb 24 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
JS数组的常用10种方法详解
May 08 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 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
MYSQL环境变量设置方法
2007/01/15 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
Python使用进程Process模块管理资源
2020/03/05 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
会计专业大学生求职信范文
2014/01/28 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
教师节班会开场白
2015/06/01 职场文书
工作服管理制度范本
2015/08/06 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android