轻松创建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实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 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
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
php session的锁和并发
2016/01/22 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
javascript奇异的arguments分析
2010/10/20 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python利用正则表达式提取字符串
2016/12/08 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
python负载均衡的简单实现方法
2018/02/04 Python
python中int与str互转方法
2018/07/02 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
pytorch打印网络结构的实例
2019/08/19 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
2014端午节活动策划方案
2014/01/27 职场文书
绿色出行口号
2014/06/18 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
心得体会格式及范文
2016/01/25 职场文书