轻松创建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 相关文章推荐
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
node快速搭建后台的实现步骤
Feb 18 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
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
vue-cli 首屏加载优化问题
2018/11/06 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
python实现将内容分行输出
2015/11/05 Python
python 爬取微信文章
2016/01/30 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Python高级property属性用法实例分析
2019/11/19 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
几个Shell Script面试题
2012/08/31 面试题
J2EE是技术还是平台还是框架
2016/08/14 面试题
心得体会怎么写
2013/12/30 职场文书
业绩考核岗位职责
2014/02/01 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
学校运动会广播稿
2014/10/11 职场文书
工作时间调整通知
2015/04/24 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android