09 【原生nodejs路由、获取参数、静态目录】
1.路由
index.js
// 启动服务
const server = require('./server.js');
//路由模块
const route = require('./route.js');
//api
const apiRouter = require('./api.js');
server.use(route);
server.use(apiRouter);
server.start();
server.js
const http = require('http');
//创建一个大对象存储所有的路由和api
const route = {
};
// 将所有路由和api合并的函数
function use(routeObj) {
Object.assign(route, routeObj);
}
function start() {
http
.createServer(async (req, res) => {
const url = new URL(req.url, 'http://127.0.0.1');
route[url.pathname](res);
})
.listen(3000, () => {
console.log('启动成功');
});
}
module.exports = {
use,
start,
};
route.js
const fs = require('fs');
function render(res, path, type = '') {
res.writeHead(200, {
'Content-Type': `${
type ? type : 'text/html'};charset=utf8` });
res.write(fs.readFileSync(path), 'utf-8');
res.end();
}
const route = {
'/login'(res) {
render(res, './static/login.html');
},
'/home'(res) {
render(res, './static/home.h