轻松创建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的模块写法入门(实例代码)
Mar 07 NodeJs
nodejs npm package.json中文文档
Sep 04 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
nodejs中实现sleep功能实例
Mar 24 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
NodeJS 实现多语言的示例代码
Sep 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
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
JS+Canvas绘制时钟效果
2020/08/20 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
python 远程统计文件代码分享
2015/05/14 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
高中生期末评语大全
2014/01/28 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
升学宴学生致辞
2015/07/27 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
nginx优化的六点方法
2021/03/31 Servers