轻松创建nodejs服务器(2):nodejs服务器的构成分析

紧接上一节,我们来分析一下代码:

第一行请求(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的代码模块化。

(0)

相关推荐

  • 轻松创建nodejs服务器(4):路由

    服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤. 第一步我们需要先解析出请求URL的路径,我们引入url模块. 我们来给onRequest()函数加上一些逻辑,用来找出浏览器请求的URL路径: 复制代码 代码如下: var http = require("http"); var url = require("url"); function start() {  function onRequest(request, respons

  • 轻松创建nodejs服务器(3):代码模块化

    nodejs的功能块大都以模块的形式存在的. 通常会有一个统一入口index.js,然后调用不同的模块来完成我们需要的功能. 我们先来看看怎么把server.js变成一个模块让 index.js 主文件使用. 复制代码 代码如下: var http = require("http"); ... http.createServer(...); "http" 是nodejs自带的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量. 我们可以用这个变量来调用 htt

  • 轻松创建nodejs服务器(5):事件处理程序

    为了对不同请做出不同的反馈,我们引入一个事件处理器的模块. 该模块命名为 requestHandlers,我们先添加start() 和 upload()两个占位函数. requestHandlers.js 代码如下: 复制代码 代码如下: function start() {     console.log("访问/star时调用这个."); }   function upload() {     console.log("访问/upload时调用这个."); }

  • 轻松创建nodejs服务器(7):阻塞操作的实现

    我们来看一下什么是阻塞操作: 我模拟一个sleep()方法来使hello star延迟10秒打印. requestHandlers.js 复制代码 代码如下: function start() {   console.log("Request handler 'start' was called.");   function sleep(milliSeconds) {  var startTime = new Date().getTime();  while (new Date().g

  • 用用outlook Express 由于服务器拒绝接受发件人的电子邮件地址,这封邮件无法发送

    由于服务器拒绝接受发件人的电子邮件地址,这封邮件无法发送.发件人的电子邮件地址是"hcs___168@163.com". 主题 '尝学版', 帐户: 'pop3.163.com', 服务器: 'smtp.163.com', 协议: SMTP, 服务器响应: '553 authentication is required,smtp3,wKjRDUYA+QLQRltED6_JAg==.51785S2', 端口: 25, 安全(SSL): 否, 服务器错误: 553, 错误号: 0x800C

  • 轻松创建nodejs服务器(10):处理POST请求

    目前为止,我们做的服务器没有实际的用处,接下来我们开始实现一些实际有用的功能. 我们要做的是:用户选择一个文件,上传该文件,然后在浏览器中看到上传的文件. 首先我们需要一个文本区(textarea)供用户输入内容,然后通过POST请求提交给服务器. 我们在start事件处理器里添加代码,requestHandlers.js修改如下: 复制代码 代码如下: function start(response) {  console.log("Request handler 'start' was ca

  • 轻松创建nodejs服务器(6):作出响应

    我们接着改造服务器,让请求处理程序能够返回一些有意义的信息. 我们来看看如何实现它: 1.让请求处理程序通过onRequest函数直接返回(return())他们要展示给用户的信息. 2.让我们从让请求处理程序返回需要在浏览器中显示的信息开始. 我们需要将requestHandler.js修改为如下形式: 复制代码 代码如下: function start() {   console.log("Request handler 'start' was called.");   retur

  • 轻松创建nodejs服务器(1):一个简单nodejs服务器例子

    我们先来实现一个简单的例子,hello world. 似乎每种语言教程的第一节都会讲这个,我们也不例外. 首先我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/nodetest/. 由于我们要搭建的是服务器,所以我把第一个文件命名为server.js. 在server.js里面输入以下代码: 复制代码 代码如下: var http = require("http");   http.createServer(function(request, response) {    

  • Express与NodeJs创建服务器的两种方法

    目录 NodeJs创建Web服务器 Express创建Web服务器 NodeJs创建Web服务器 var http = require('http'); var server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('hello world!'); res.end(); }).listen(80); 这是一个原生式的创建一个we

  • 零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门

    本文改自非鱼的<[翻译]前端开发人员入门指南,从零开始搭建Node.js, Express, Jade, Mongodb服务器>,之所以把Jade换成Ejs,是因为我觉得ejs更符合WEB编程人员的习惯,更确切说应该是更符合PHP.ASP程序员的使用习惯.好了,废话不多说,直接开始教程. 第1部分 – 15分钟安装 如果你真的是从零开始学,那就花点时间先把环境搭建起来吧.这不难,我用的是Win8,所以这看上去跟那些用Mac和Ubuntu或者其它*nix系统的教程有点区别,不过大致是一样的. 第

随机推荐