node web模块
web效劳器
web效劳器指网站效劳器,指驻留在因特网上的某种顺序,web阅读器的基础功能,供应信息阅读效劳
web支撑效劳器端的脚本语言,经由历程脚本语言从数据库猎取数据,将效果返回给客户端阅读器
web运用基础架构
Client => Server => Business => Data
Client 即客户端,经由历程http协定向效劳器提议要求
Server 效劳器端,指web效劳器,吸收客户端要求,并向客户端发送相应的数据
Business 即营业层,经由历程Web效劳器处置惩罚运用顺序,数据库的交互,逻辑运算,挪用外部顺序
Data 数据层,贮存数据
运用Node建立Web效劳器
运用http模块建立
须要运用substr()要领,一个从指定位置返回指定终了的要领,继续自String 末了一个参数可省
https://developer.mozilla.org…
// server.js
// 引入模块
var http = require('http'); // http模块
var fs = require('fs'); // fs 文件模块
var url = require('url'); // url 一致资本定位符模块
// 建立效劳器
http.createServer((request, response) => {
// 剖析要求,保留进变量内
var pathname = url.parse(request.url).pathname;
// 输出要求的文件名
console.log(pathname);
// 从文件体系中读取文件,举行返回
fs.readFile(pathname.substr(1), (err, data) => { // 运用substr要领举行读取文件的字节,将文件名返回给回调函数
if (err){ // 对毛病举行处置惩罚
console.log(err); // 打印出毛病
// 返回一个404
response.writeHead(404, {'Content-Type': 'text/html; charset=utf-8'});
response.write("呀,什么都没有╮(╯_╰)╭");
response.write('我猜你要的是 ' + data + ' ?');
response.end();
} else {
// 返回 200
response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
// 返回文件内容
response.write(data.toString()); // 将读取的文件内容举行字符串化,并举行输出
response.end(); // 封闭衔接,发出数据
};
});
}).listen(1937);
// index.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>这是一个小Dome</title>
</head>
<body>
<h1>hello word!</h1>
</body>
</html>
接见 http://127.0.0.1:1937/index.html
涌现hello word完成!
PS C:\Users\mingm\Desktop\test> node Server.js
/index.html
/
/input.html
/
{ [Error: ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\test\input.html']
errno: -4058,
code: 'ENOENT',
syscall: 'open',
path: 'C:\\Users\\mingm\\Desktop\\test\\input.html' }
革新一点
接见/涌现404,申明没有设置首页,设置首页
// 增加对首页的支撑,设置默认首页为index.html
if (pathname === '/') {
pathname = pathname + 'index.html';
}
完成后的文件以下
// 引入模块
var http = require('http'); // http模块
var fs = require('fs'); // fs 文件模块
var url = require('url'); // url 一致资本定位符模块
// 建立效劳器
http.createServer((request, response) => {
// 剖析要求,保留进变量内
var pathname = url.parse(request.url).pathname;
// 输出要求的文件名
console.log(pathname);
// 增加对首页的支撑,设置默认首页为index.html
if (pathname === '/') {
pathname = pathname + 'index.html';
}
// 从文件体系中读取文件,举行返回
fs.readFile(pathname.substr(1), (err, data) => { // 运用substr要领举行读取文件的字节,将文件名返回给回调函数
if (err){ // 对毛病举行处置惩罚
console.log(err); // 打印出毛病
// 返回一个404
response.writeHead(404, {'Content-Type': 'text/html; charset=utf-8'});
response.write("呀,什么都没有╮(╯_╰)╭");
response.write('我猜你要的是 ' + data + ' ?');
response.end();
} else {
// 返回 200
response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
// 返回文件内容
response.write(data.toString()); // 将读取的文件内容举行字符串化,并举行输出
response.end(); // 封闭衔接,发出数据
};
});
}).listen(1937);
运用node建立客户端
PS C:\Users\mingm\Desktop\test> node get.js
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
PS C:\Users\mingm\Desktop\test>
var http = require('http');
// 要求的选项
var options = { // 建立一个对象保留相干数据
host:'www.iming.info', // 主机地点
port:'443', // 接见端口
method:'GET',
path:'/', // 接见的文件
};
// 处置惩罚相应的回调函数
var callback = (response) => {
// 更新数据
var body = '';
response.on('data', (data) => { // 绑定事宜,data
body += data;
});
response.on('end', () => { // 绑定end事宜
console.log(body);
});
};
// 最先发送要求
var req = http.request(options, callback); // 发送要求,options为发送要求的选项,callback为处置惩罚要求的回调函数,将会有抛出三个事宜一个data一个end,一个error,必须有end示意要求终了,封闭衔接
req.end(); // 封闭衔接
因为小站运用的是nginx的https,运用了证书,须要运用考证秘钥的历程,所以谢绝接见,302没有权限