轻松创建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与Mysql的交互示例代码
Aug 18 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
nodejs实现聊天机器人功能
Sep 19 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通用检测函数集合
2011/02/08 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP getName()函数讲解
2019/02/03 PHP
什么是JavaScript
2009/08/13 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python 把列表转化为字符串的方法
2018/10/23 Python
Django中Middleware中的函数详解
2019/07/18 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python requests设置代理的方法步骤
2020/02/23 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
财务分析个人的自荐书范文
2013/11/24 职场文书
实习生的自我评价
2014/01/08 职场文书
个人自荐材料
2014/05/23 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
校园广播稿范文
2015/08/19 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
高一作文之暖冬
2019/11/09 职场文书