轻松创建nodejs服务器(2):nodejs服务器的构成分析


Posted in NodeJs onDecember 18, 2014

紧接上一节,我们来分析一下代码:

第一行请求(require)Node.js自带的 http 模块,并且把它赋值给 http 变量。

接下来我们调用http模块提供的函数: createServer 。

这个函数会返回一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数,指定这个HTTP服务器监听的端口号。

为了提高可读性,我们来改一下这段代码。

原来的代码:

var http = require("http");

http.createServer(function(request, response) { 

 response.writeHead(200, {"Content-Type": "text/plain"}); 

 response.write("Hello World"); 

 response.end(); 

}).listen(8888);

可以改写成:

var http = require("http"); 

function onRequest(request, response) { 

 response.writeHead(200, {"Content-Type": "text/plain"}); 

 response.write("Hello World"); 

 response.end();

} 

http.createServer(onRequest).listen(8888);

我们定义了一个onRequest()函数,并将它作为参数传给createServer,类似回调函数。

我们给某个方法传递了一个函数,这个方法在有相应事件发生时调用这个函数来进行回调,我们把这叫做基于事件驱动的回调。

接下来我们看一下onRequest() 的主体部分,当回调启动,我们的 onRequest() 函数被触发的时候,有两个参数被传入: request 和 response 。

request : 收到的请求信息;

response : 收到请求后做出的响应。

所以这段代码所执行的操作就是:

当收到请求时,

1、使用 response.writeHead() 函数发送一个HTTP状态200 和 HTTP头的内容类型(content-type)

2、使用 response.write() 函数在HTTP相应主体中发送文本“Hello World”。

3、调用 response.end() 完成响应。

这样分析,是不是加深了你对这段代码的理解呢?

下一节我们来了解一下,nodejs的代码模块化。

NodeJs 相关文章推荐
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 #NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 #NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 #NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 #NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 #NodeJs
详谈nodejs异步编程
Dec 04 #NodeJs
nodejs下打包模块archiver详解
Dec 03 #NodeJs
You might like
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
Python实现自动签到脚本功能
2020/08/20 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
环保公益策划方案
2014/08/15 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
华山导游词
2015/02/03 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python