轻松创建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学习笔记之测试驱动
Apr 16 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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
关于crontab的使用详解
2013/06/24 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
js尾调用优化的实现
2019/05/23 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
jupyter安装小结
2016/03/13 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
天猫活动策划方案
2014/08/21 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python
vue实现移动端div拖动效果
2022/03/03 Vue.js
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android