一、第一个Demo
1、Demo功能
我们用NodeJs写出第一个Demo;
2、实现说明:
- Demo目录下创建app.js,用于服务启动及路由功能
- 创建Index.html,用于主界面;
- About、联系我们直接在浏览器出输出文字
二、实现代码
1.app.js
// 导入Node.js的http模块,用于创建HTTP服务器
const http = require('http');
// 导入Node.js的文件模块,用于文件读取
const fs = require('fs');
// 定义服务器要监听的端口号
const port = 3000;
// 定义路由映射对象,用于处理不同的URL请求
const routes = {
// 处理根路径的请求,返回index.html文件的内容
'/': (req, res) => {
// 设置响应头,指定内容类型为HTML
res.writeHead(200, {'Content-Type': 'text/html'});
// 读取index.html文件的内容,并将其作为响应发送给客户端
fs.readFile('index.html', 'utf8', (err, data) => {
if (err) {
// 如果读取文件出错,则发送错误响应
res.end('Error reading file');
return;
}
// 否则,将文件内容作为响应发送给客户端
res.end(data);
});
},
// 处理/about路径的请求,返回关于我们页面的内容
'/about': (req, res) => {
// 设置响应头,指定内容类型为HTML
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
});
// 发送关于我们页面的内容作为响应
res.end('关于我们页面','utf8');
},
// 处理/contact路径的请求,返回联系我们页面的内容
'/contact': (req, res) => {
// 设置响应头,指定内容类型为HTML
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
});
// 发送联系我们页面的内容作为响应
res.end('联系我们页面');
}
};
// 创建HTTP服务器实例,监听指定的端口号
const server = http.createServer((req, res) => {
// 获取请求的URL路径
const path = req.url;
// 检查请求的路径是否在路由映射中存在对应的处理函数
if (routes[path]) {
// 如果存在,则调用对应的处理函数来处理请求并发送响应给客户端
routes[path](req, res);
} else {
// 如果请求的路径没有匹配的路由映射,则返回404错误响应,表示资源未找到
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Not Found');
}
});
// 启动服务器,开始监听指定的端口号
server.listen(port, () => {
console.log(`服务器正在运行,监听端口 ${port}`);
});
2. Index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Node.js 网站示例</title>
</head>
<body>
<h1>欢迎来到我的 Node.js 网站!</h1>
<p>这是一个简单的示例,展示了如何使用 Node.js 构建一个基本的网站。</p>
<ul>
<li><a href="/about">关于我们</a></li>
<li><a href="/contact">联系我们</a></li>
</ul>
</body>
</html>
三、补充说明
server = http.createServer()
是Node.js中用于创建HTTP服务器的代码。它创建了一个基于事件的HTTP服务器,并返回一个HTTP模块封装的服务器对象。这个服务器对象可以用来监听指定的端口,处理客户端请求,并发送响应回客户端。
在这个过程中,http.createServer()
方法会创建一个基于Node.js内置的HTTP模块的服务器。这个服务器对象提供了一系列事件和方法,用于处理HTTP请求和响应。通过调用http.createServer()
方法,您可以定义一个回调函数,该函数会在每次接收到客户端请求时被调用。在回调函数中,您可以处理请求、生成响应,并通过res.end()
等方法发送响应回客户端。
通过这种方式,您可以创建一个提供各种Web服务的服务器,例如静态文件服务、动态内容服务、API服务等。在回调函数中,您可以使用Node.js提供的各种功能和库来处理请求和生成响应,例如路由处理、中间件处理、数据库访问等。
2.res.writeHead
是 Node.js 中 HTTP 服务器响应对象 res
的一个方法,用于发送 HTTP 头部信息给客户端。这个方法可以设置响应的状态码、头部字段和头部内容。
参数
res.writeHead
方法接受两个参数:
- 状态码 (StatusCode): 一个整数,表示 HTTP 响应的状态码。例如,200 表示成功,404 表示未找到资源。
- 头部信息 (Header): 一个包含头部字段和值的对象,以字符串键值对的格式表示。例如,
{'Content-Type': 'text/html'}
表示设置内容类型为 HTML。 res.end
是 Node.js 中 HTTP 服务器响应对象res
的一个方法,用于结束响应并发送数据给客户端。这个方法可以接受一个可选的参数,用于发送数据给客户端。