轻松创建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之请求路由概述
Jul 05 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 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
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
一个JavaScript变量声明的知识点
2013/10/28 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
[01:40]2014DOTA2国际邀请赛 三冰SOLO赛后采访恶搞
2014/07/09 DOTA
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
wxpython学习笔记(推荐查看)
2014/06/09 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
python常用排序算法的实现代码
2019/11/08 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
装修设计师求职信
2014/02/26 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年评职称工作总结
2014/11/20 职场文书
单位租房协议范本
2014/12/03 职场文书
项目战略合作意向书
2015/05/08 职场文书
mysql 索引合并的使用
2021/08/30 MySQL
Redis+AOP+自定义注解实现限流
2022/06/28 Redis