轻松创建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与javascript中的aes加密
May 22 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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数组去重的函数代码
2013/02/03 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
2017/08/07 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python实现动态创建类的方法分析
2019/06/25 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
tensorflow的计算图总结
2020/01/12 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
.NET面试问题集
2015/12/08 面试题
生产车间实习自我鉴定
2013/09/23 职场文书
总经理秘书工作职责
2013/12/26 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
理发店策划方案
2014/06/05 职场文书
公司应聘求职信
2014/06/21 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android