轻松创建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 实现模拟form表单上传文件
Jul 14 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
Javascript实现基本运算器
2017/07/15 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
python client使用http post 到server端的代码
2013/02/10 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python远程linux执行命令实现
2020/11/11 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
销售辞职报告范文
2014/01/12 职场文书
大学活动邀请函
2014/01/28 职场文书
安全生产标语
2014/06/06 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
无线电知识基础入门篇
2022/02/18 无线电
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js