写点什么

【Node.js】静态页面和简单的路由

用户头像
学习委员
关注
发布于: 2021 年 01 月 08 日
【Node.js】静态页面和简单的路由

主要讲解怎么通过 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 页面



以上是简单的用法。


用户头像

学习委员

关注

反派 2019.03.19 加入

哈哈哈哈哈哈哈哈哈哈哈哈哈哈

评论

发布
暂无评论
【Node.js】静态页面和简单的路由