轻松创建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中使用monk访问mongodb
Jul 06 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
nodejs基础应用
Feb 03 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 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 Pear 安装及使用
2009/03/19 PHP
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
js中的string.format函数代码
2020/08/11 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
vue实现计步器功能
2019/11/01 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
python global关键字的用法详解
2019/09/05 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
python怎么删除缓存文件
2020/07/19 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
物流业务员岗位职责
2014/02/08 职场文书
行政助理工作职责范本
2014/03/04 职场文书
我的中国梦口号
2014/06/16 职场文书
创业计划书之甜品店
2019/09/18 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS