📅  最后修改于: 2023-12-03 15:33:10.973000             🧑  作者: Mango
Node.js是基于Chrome V8的JavaScript运行时环境,Node.js拥有强大的Web模块,它使得我们能够创建高效稳定的Web应用程序,同时Node.js还支持异步I/O操作,可以更好地支持高并发。
HTTP模块是Node.js Web模块中最核心的模块,它可以用来创建一个HTTP服务器或者客户端。
const http = require('http');
// 创建服务器
const server = http.createServer((req, res) => {
// 设置响应头
res.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
res.end('Hello World\n');
});
// 监听端口
server.listen(3000,() => {
console.log('Server running at http://127.0.0.1:3000/');
});
这是一个简单的HTTP服务器示例,当客户端访问http://127.0.0.1:3000/时,服务器会响应一个"Hello World"字符串。
const http = require('http');
// 发送请求
const req = http.request({
hostname: '127.0.0.1',
port: 3000,
path: '/',
method: 'GET'
}, (res) => {
// 接收响应数据
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
});
// 结束请求
req.end();
这是一个发送HTTP请求的示例,它向http://127.0.0.1:3000/发送一个GET请求,并输出响应数据。
HTTPS模块是Node.js Web模块中用于创建HTTPS服务器或客户端的模块。
const https = require('https');
const fs = require('fs');
// 加载密钥和证书
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
// 创建服务器
const server = https.createServer(options, (req, res) => {
// 设置响应头
res.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
res.end('Hello World\n');
});
// 监听端口
server.listen(3000,() => {
console.log('Server running at https://127.0.0.1:3000/');
});
这是一个简单的HTTPS服务器示例,当客户端访问https://127.0.0.1:3000/时,服务器会响应一个"Hello World"字符串。
const https = require('https');
const fs = require('fs');
// 加载密钥和证书
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
// 发送请求
const req = https.request({
hostname: '127.0.0.1',
port: 3000,
path: '/',
method: 'GET',
key: fs.readFileSync('client.key'),
cert: fs.readFileSync('client.crt')
}, (res) => {
// 接收响应数据
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
});
// 结束请求
req.end();
这是一个发送HTTPS请求的示例,它向https://127.0.0.1:3000/发送一个GET请求,并输出响应数据。
路由是Web开发中非常重要的概念,它用于将请求URL映射到处理程序上。
const http = require('http');
// 创建路由表
const routes = {
'/': (req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World');
},
'/about': (req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('About Us');
}
};
// 创建服务器
const server = http.createServer((req, res) => {
if (routes[req.url]) {
// 如果请求URL在路由表中,则调用对应的处理程序
routes[req.url](req, res);
} else {
// 否则返回404错误
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('404 Not Found');
}
});
// 监听端口
server.listen(3000, () => {
console.log('Server running at http://127.0.0.1:3000/');
});
这是一个简单的路由示例,它将请求URL映射到不同的处理程序上。
使用Node.js Web模块可以非常容易地开发出一个Web应用程序,下面是一个示例程序:
const http = require('http');
const url = require('url');
const qs = require('querystring');
const fs = require('fs');
// 创建路由表
const routes = {
'/': (req, res) => {
if (req.method === 'POST') {
// 处理POST请求
let body = '';
req.on('data', (chunk) => {
body += chunk;
});
req.on('end', () => {
const data = qs.parse(body);
const name = data.name || 'World';
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(`<html><body><h1>Hello, ${name}!</h1><form method="POST" action="/"><input type="text" name="name"><input type="submit" value="Submit"></form></body></html>`);
});
} else {
// 处理GET请求
const name = url.parse(req.url, true).query.name || 'World';
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(`<html><body><h1>Hello, ${name}!</h1><form method="POST" action="/"><input type="text" name="name"><input type="submit" value="Submit"></form></body></html>`);
}
},
'/about': (req, res) => {
const data = fs.readFileSync('about.html', {encoding: 'utf8'});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
}
};
// 创建服务器
const server = http.createServer((req, res) => {
if (routes[req.url]) {
// 如果请求URL在路由表中,则调用对应的处理程序
routes[req.url](req, res);
} else {
// 否则返回404错误
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('404 Not Found');
}
});
// 监听端口
server.listen(3000, () => {
console.log('Server running at http://127.0.0.1:3000/');
});
这是一个简单的Web应用程序,它可以处理GET和POST请求,并返回一个HTML页面。