主要讲解怎么通过 node 启动一个服务。
返回一个静态页面
文件目录如下所示
app.js 代码
const fs = require('fs');
const http = require('http');
// 创建一个f服务器
let server = http.createServer((req, res) => {
// fs.readFile(文件路径,字符编码,回调函数)
fs.readFile(__dirname + "/index.html", "utf-8", (err, data) => {
if(err) throw err;
// 响应头 response.writeHead(状态吗, 内容的格式[这里返回的文件是html])
res.writeHead(200, {"content-type": "text/html"});
// 响应内容
res.write(data);
// 响应结束
res.end();
})
})
// 设置端口号
server.listen(8080);
console.log('服务器已启动~~');
复制代码
index.html 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h1>Rabbit!</h1>
</body>
</html>
复制代码
最后,在浏览器访问 localhost:8080
根据路由返回对应的页面
上面的例子中,不管访问 localhost:8080 还是 localhost:8080/xxxx ,服务器都是返回 index.html 的内容。
如果需要根据 url 指定返回不同的页面,这就需要引入路由这个概念了。
文件目录如下
这里有 2 个 html 文件和一个 js 文件。
在 app.js 中,需要根据 url 来判断返回哪个页面
const fs = require('fs');
const http = require('http');
let server = http.createServer((req, res) => {
// 过滤 /favicon.ico 的请求
if(req.url !== '/favicon.ico') {
// '/' 和 'index' 都返回 index.html 页面,其他都请求就返回对应的页面路径
let getUrl = req.url === '/' ? '/index.html' : req.url;
// fs.readFile(文件路径,字符编码,回调函数)
fs.readFile(__dirname + getUrl + '.html', "utf-8", (err, data) => {
if(err) throw err;
// 响应头 response.writeHead(状态吗, 内容的格式)
res.writeHead(200, {"content-type": "text/html"});
// 响应内容
res.write(data);
// 响应结束
res.end();
})
}
})
server.listen(8080);
console.log('服务器已启动~~');
复制代码
index.html 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h1>Rabbit!</h1>
</body>
</html>
复制代码
about.html 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>about</title>
</head>
<body>
<p>about~~~~</p>
</body>
</html>
复制代码
当浏览器访问 localhost:8080 或者 localhost:8080/index ,就返回 index.html 页面。
当访问 localhost:8080/about 时,就返回 about.html 页面
以上是简单的用法。
评论