轻松创建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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 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
基于文本的搜索
2006/10/09 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
Python学习笔记之常用函数及说明
2014/05/23 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
python接入支付宝的实例操作
2020/07/20 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
医药类个人求职的自我评价
2014/02/12 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
个人年终总结结尾
2015/03/06 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书