轻松创建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中自定义事件实例
Jun 20 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 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操作xml入门之cdata区段
2015/01/23 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python实现的一个火车票转让信息采集器
2014/07/09 Python
python多线程操作实例
2014/11/21 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
Python处理文本换行符实例代码
2018/02/03 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
主持人演讲稿范文
2013/12/28 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
社区禁毒工作方案
2014/06/02 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
《检阅》教学反思
2016/02/22 职场文书
高二英语教学反思
2016/03/03 职场文书