轻松创建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实现PHP的print_r函数代码
Mar 14 NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 NodeJs
nodejs教程之入门
Nov 21 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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&mysql(一)
2006/10/09 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
JavaScript遍历table表格中的某行某列并打印其值
2014/07/08 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
零基础学Python(一)Python环境安装
2014/08/20 Python
python批量同步web服务器代码核心程序
2014/09/01 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
python 简单的多线程链接实现代码
2016/08/28 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
python 实现生成均匀分布的点
2019/12/05 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
Python里面如何实现tuple和list的转换
2012/06/13 面试题
机电一体化职业规划书
2014/01/07 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python