轻松创建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 npm install全局安装和本地安装的区别
Jun 05 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
nodejs 使用nodejs-websocket模块实现点对点实时通讯
Nov 28 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 cookis创建实现代码
2009/03/16 PHP
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
jQuery替换节点元素的操作方法
2018/03/18 jQuery
js 图片转base64的方式(两种)
2018/04/24 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
深入理解python对json的操作总结
2017/01/05 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
Python __slots__的使用方法
2020/11/15 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
经典公益广告词
2014/03/13 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
就业意向书
2014/07/29 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
Python+DeOldify实现老照片上色功能
2022/06/21 Python