Node.js Web 模块
什么是 Web 处事器?
Web处事器一般指网站处事器,是指驻留于因特网上某种范例计较机的措施,Web处事器的根基成果就是提供Web信息欣赏处事。它只需支持HTTP协议、HTML文档名目及URL,与客户端的网络欣赏器共同。
大大都 web 处事器都支持处事端的剧本语言(php、python、ruby)等,并通过剧本语言从数据库获取数据,将功效返回给客户端欣赏器。
今朝最主流的三个Web处事器是Apache、Nginx、IIS。
Web 应用架构
Client – 客户端,一般指欣赏器,欣赏器可以通过 HTTP 协议向处事器请求数据。
Server – 处事端,一般指 Web 处事器,可以吸收客户端请求,并向客户端发送响应数据。
Business – 业务层, 通过 Web 处事器处理惩罚应用措施,如与数据库交互,逻辑运算,挪用外部措施等。
Data – 数据层,一般由数据库构成。
利用 Node 建设 Web 处事器
Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 处事端和客户端,利用 HTTP 处事器或客户端成果必需挪用 http 模块,代码如下:
var http = require('http');
以下是演示一个最根基的 HTTP 处事器架构(利用8081端口),建设 server.js 文件,代码如下所示:
var http = require('http'); var fs = require('fs'); var url = require('url'); // 建设处事器 http.createServer( function (request, response) { // 理会请求,包罗文件名 var pathname = url.parse(request.url).pathname; // 输出请求的文件名 console.log("Request for " + pathname + " received."); // 从文件系统中读取请求的文件内容 fs.readFile(pathname.substr(1), function (err, data) { if (err) { console.log(err); // HTTP 状态码: 404 : NOT FOUND // Content Type: text/plain response.writeHead(404, {'Content-Type': 'text/html'}); }else{ // HTTP 状态码: 200 : OK // Content Type: text/plain response.writeHead(200, {'Content-Type': 'text/html'}); // 响应文件内容 response.write(data.toString()); } // 发送响应数据 response.end(); }); }).listen(8081); // 节制台会输出以下信息 console.log('Server running at http://127.0.0.1:8081/');
接下来我们在该目次下建设一个 index.htm 文件,代码如下:
<html> <head> <title>Sample Page</title> </head> <body> Hello World! </body> </html>
执行 server.js 文件:
$ node server.js Server running at http://127.0.0.1:8081/
接着我们在欣赏器中打开地点:http://127.0.0.1:8081/index.htm,显示如下图所示:
执行 server.js 的节制台输出信息如下:
Server running at http://127.0.0.1:8081/ Request for /index.htm received. # 客户端请求信息
Gif 实例演示
利用 Node 建设 Web 客户端
Node 建设 Web 客户端需要引入 http 模块,建设 client.js 文件,代码如下所示:
var http = require('http'); // 用于请求的选项 var options = { host: 'localhost', port: '8081', path: '/index.htm' }; // 处理惩罚响应的回调函数 var callback = function(response){ // 不绝更新数据 var body = ''; response.on('data', function(data) { body += data; }); response.on('end', function() { // 数据吸收完成 console.log(body); }); } // 向处事端发送请求 var req = http.request(options, callback); req.end();
新开一个终端,执行 client.js 文件,输出功效如下:
$ node client.js <html> <head> <title>Sample Page</title> </head> <body> Hello World! </body> </html>
执行 server.js 的节制台输出信息如下:
Server running at http://127.0.0.1:8081/ Request for /index.htm received. # 客户端请求信息