- 模拟express框架实现get post 路由传值
- 主页代码更少,结构清晰,
router.js
为渲染界面,server.js
匹配路由传值- 往后再添加路由时只需在
server.js
里注册,在router.js
中写出路由相应的渲染页面
app.js
const http=require("http");
const server=require("./model/server")
http.createServer(server).listen(8080,"localhost",()=>{
console.log("服务器启动成功!");
})
router.js
//使用ejs进行路由配置
const ejs = require("ejs");
let router = {
"home": (req, res) => {
ejs.renderFile("./views/index.ejs", (err, str) => {
if (err) {
throw err;
}
res.end(str);
});
},
"login": (req, res) => {
ejs.renderFile("./views/login.ejs", (err, str) => {
if (err) {
throw err;
}
res.end(str);
});
},
"register": (req, res) => {
ejs.renderFile("./views/register.ejs", (err, str) => {
if (err) {
throw err;
}
res.end(str);
});
}
}
module.exports=router;
server.js
模拟express框架:先写出路由注册的实体代码,在obj中查找当前路由,如果存在就执行响应的callback函数,否则返回404页面
const url = require("url");
let router = require("./router");
let obj = {};
let app = ((req, res) => {
//1.解析路径
let path = url.parse(req.url).pathname;
if (path != "/favicon.ico") {
res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
if (obj[path]) {
obj[path](req, res);
}
else {
res.end("404");
}
}
});
//注册路由的实体代码
app.get = ((string, callback) => {
obj[string] = callback;
});
app.post = ((string, callback) => {
obj[string] = callback;
});
//执行注册路由的方法
app.get("/", (req, res) => {
res.end("home");
})
app.get("/login", (req, res) => {
router["home"](req,res);
})
app.get("/login", (req, res) => {
router["login"](req,res);
})
app.get("/register", (req, res) => {
router["register"](req,res);
})
app.post("/registerinfo", (req, res) => {
res.end("注册成功!")
})
module.exports = app;