Node.js 教程 03 - 创建HTTP服务器
前言:
如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。
从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需 要 PHP 来处理。
不过对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。
事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。
创建一个简单的HTTP服务器:
这里我们使用创建文件,然后执行的方式,来创建此实例。
在E:\NodejsDemo文件夹下,创建“server.js”文件,代码如下:
var http = require("http");
http.createServer(function(request,response){
response.writeHead(200, {"Content-Type" : "text/plain"});
response.end("Hello World!\n");
}).listen(88);
console.log("Server running at http://127.0.0.1:88/")
上述代码中,我们先引入了http模块,并存入本地的http对象中。
然后使用http对象创建一个服务,设置文档响应类型等,最后结束并返回响应一串字符串。
启动监听在88端口。
以上代码,我们已经完成了一个简单Node.js的HTTP服务器的创建。
下面我们在DOS下使用node命令来运行它:

此时,防火墙可能会提示,点击允许访问即可:

然后、我们打开浏览器,访问地址:http://127.0.0.1:88,效果如下:

看到这个界面了,是不是很鸡冻,哈哈。
强化案例:
不知道大家是否了解类似于JSP、ASP.NET的运行机制。
例如JSP,解析的时候,最后生成的是HTML源码文件,将源JSP文件中的代码一行行拼接输出。
按照这个原理,我们能不能也实现一个HTML的服务器呢?
主程序“main.js”的代码如下:
var http = require("http");
var html = "";
html += "<!DOCTYPE html>";
html += "<html>";
html += " <head>";
html += " <meta charset='utf-8' />";
html += " <title>孤影'Blog</title>";
html += " <style>body{background:black; color:#0F6; text-align:center; text-shadow:0px 0px 10px #0F6;}</style>";
html += " </head>";
html += " <body>";
html += " <h1>孤影'Blog</1>";
html += " <h2>Welcome to my blog!</h2>";
html += " </body>";
html += "</html>";
http.createServer(function (request, response) {
response.writeHead(200, { "Content-Type": "text/html" });
response.end(html);
}).listen(88);
OK、打开DOS、运行“node main.js”,效果如下:

有没有脑洞大开?!呵呵。下山自行修炼去吧。哈哈。。
简单分析Node.js的HTTP服务器:
这里,我奉承简单入门为主,所以就不做过多的介绍了,大家理解就好。
W3C官方的解释如下:
- 第一行请求(require)Node.js 自带的 http 模块,并且把它赋值给 http 变量。
- 接下来我们调用 http 模块提供的函数: createServer 。这个函数会返回 一个对象,这个对象有一个叫做 listen 的方法,这个方法有一个数值参数, 指定这个 HTTP 服务器监听的端口号。
个人介绍:
- require表示引入一个模块,在这里,我们引入的是系统的http模块,从而创建了一个http模块服务。
- 然后,我们把它赋值保存到了一个http对象中。
- 下面,我们使用该对象的createServer方法,执行了一个function函数。
- 该函数传入一个request和response的请求及响应对象,设置响应状态码为200,响应类型为text文本,响应内容为“Hello World!”。
- 最后,调用其“listen”方法,启动监听,监听端口为88。
- 命令结束的时候,我们输出了一段日志:“Server running at http://127.0.0.1:88”。
小结:
我也是刚学,所以深刻体会,这个东西慢慢的理解就好,别太死扣语法了。循序渐进的而已。
希望大家赶紧上手吧,呵呵。
Node.js 教程 03 - 创建HTTP服务器的更多相关文章
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- Node.js 教程 04 - 模块系统
前言: Node.js的模块系统类似于C/C++的文件引用,可以声明对象,也可以定义类 创建对象. 大家这么理解,就简单了. 定义: 为了让Node.js的文件可以相互调用,Node.js提供了一个简 ...
- [转载]Node入门 » 一本全面的Node.js教程
http://www.nodebeginner.org/index-zh-cn.html 作者: Manuel Kiessling 翻译: goddyzhao & GrayZhang & ...
- 【转载】Node.js 教程(菜鸟教程系列)
很好的一篇教程:Node.js 教程 简单做下笔记 概述 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立 ...
- 10+ 最佳的 Node.js 教程和实例
如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用.API服务编写.投票问卷应用.人物投票APP.社交授权. Node.js on Raspberry Pi ...
- Fenix – 基于 Node.js 的桌面静态 Web 服务器
Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...
- 实用的 Node.js 教程,工具和资源
这里分享一批实用的实用的 Node.js 教程,工具和资源. Node.js是一个建立在Chrome之上的JavaScript运行时平台,可方便地构建快速,可扩展的网络应用程序.Node.js使用事件 ...
- node.js 学习03
node.js学习03 解决浏览器接收服务端信息之后乱码的问题: 服务器通过设置http响应报文头,告诉浏览器使用相应的编码 来解析网页. res.setHeader('Content','text/ ...
- Node.js教程系列~目录
Node.js这个东西在近几年火起来了,而且会一直火下去,无论在infoq还是在cnblogs,csdn上,都可以到处看到它的样子,它主推的应该就是异步式I/O 吧,是的,设计的很完美,很吸引人,虽然 ...
随机推荐
- 【翻译】用AIML实现的Python人工智能聊天机器人
前言 用python的AIML包很容易就能写一个人工智能聊天机器人. AIML是Artificial Intelligence Markup Language的简写, 但它只是一个简单的XML. 下面 ...
- salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)
此篇参考git代码:https://github.com/pdalcol/Zippex 学习salesforce可以访问一个朋友的网站:https://www.xgeek.net 首先感谢git上提供 ...
- 通过easyui tab添加的子页面JS脚本必须放在body才生效
通过easyui tab添加的子页面JS脚本必须放在body才生效 可通过Chrome查看元素时,head标签是否含有你自己写的JS代码
- java终端获取输入
上一篇博客已经介绍了System.in这个输入流这次谈谈java如何获取终端(控制台)的输入 (1)BufferedReader JDK 1.4 及以下的版本中要想从控制台中输入数据只有一种办法,即使 ...
- $(document).ready() 与window.onload的区别
1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 ...
- SIHA环境修改主机名实施步骤
目 录 1 实施需求 2 修改主机名 2.1 停止HAS服务 2.2 修改主机名 3 重新配置服务 3.1 使用root用户重新配置CSS & OHAS服务 3.2 设置cssd自动启动属性 ...
- 编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议47~51)
建议47:在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题,这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JavaBe ...
- Java进击C#——应用开发之Asp.net MVC
本章简言 上一章笔者讲到关于Asp.NET的知识点.了解Asp.NET基本的知识点之后,我们在来学习关于C#的MVC框架就简单多了.显然本章就是来介绍一下关于Asp.NET MVC.对于MVC的思想笔 ...
- Java进击C#——应用开发之Asp.net
本章简言 上一章中笔者讲到关于Linq和EF的用法.并以hibernate来进行讲解.那么本章笔者来讲一下C#的Asp.Net.即是在B/S模式下开发.现在企业大部分的业务都是面向B/S模式的.所以对 ...
- 抽象类 VS 接口
引言 接口和抽象类是面向对象编程(OOP, Object Oriented programming)中两个绕不开的概念,二者相似而又有所不同.接下来,我们来了解二者的概念并比较它们的异同. 什么是抽象 ...