轻松创建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极简入门教程(三):进程
Oct 27 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 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 中使用随机数的三个步骤
2006/10/09 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python编程中对文件和存储器的读写示例
2016/01/25 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python序列类型种类详解
2020/02/26 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
聊聊python中的循环遍历
2020/09/07 Python
运动会跳远广播稿
2014/02/04 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
毕业设计工作总结
2015/08/14 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
合同补充协议书
2016/03/24 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
利用python做数据拟合详情
2021/11/17 Python