轻松创建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文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
nodejs中实现路由功能
Dec 29 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
May 15 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 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实现ODBC数据分页显示一例
2006/10/09 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
基于php实现的验证码小程序
2016/12/13 PHP
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
vue鼠标悬停事件实例详解
2019/04/01 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python 如何对文件目录操作
2020/07/10 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
文秘专业自荐信
2013/10/14 职场文书
个性大学生自我评价
2013/12/04 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
法人代表授权委托书
2014/04/08 职场文书
超市开店计划书
2014/04/26 职场文书
课例研修方案
2014/05/31 职场文书
迎国庆横幅标语
2014/10/08 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python