路由
生活中的设备路由器的功能:用户发送的数据是先由路由器接收,路由器根据用户的需求再发送到相应程序的服务器。
而在Web开发过程中,路由指不同的网址去执行不同的分支或者程序,简单的理解就是URL到函数的映射,每一个URL都映射了自己的函数,然后调用函数就可以执行不同的程序业务。
router相当于是一种机制它管理了很多route。route只是进行了URL和函数的映射,而在当接收到一个URL之后,去路由映射表也就是controller中查找相应的函数,这个过程是由router来处理的。
服务器端路由
当后端服务器接收到客户端发来的HTTP请求,会根据请求的URL解析出URL中的pathname,然后根据pathname来找到相应的映射函数,然后执行该函数,并将函数的返回值发送给客户端。对于静态资源可以认为,所有URL的映射函数就是一个文件读取操作的程序。对于动态资源,映射函数可能是一个数据库读取操作,也可能是进行一些数据的处理等。
//注册路由route,客户端输入网址后端服务器就会运行这个回调函数,执行这个网页的业务
router.get("/",controller.index);
router.get("/login",controller.login);
module.exports={
ajax2(req,res){
fs.readFile(path,(err,data)=>{
res.setHeader("Content-Type",type);
if(!err){
res.end(data);
};
},
login(req,res){
res.end("tara 13th go");
}
};
当访问 / 的时候,后端服务器会读取到服务器上静态托管文件夹路径下的一份文件,把这个文件发送给客户端。当访问 /login 的时候,会执行controller中的login函数给客户端发送一个字符串。
客户端路由
对于客户端通常指浏览器来说,路由的映射函数通常是对网页中的元素进行一些DOM操作。当访问不同的路径的时候,会显示不同的页面组件。常见的就是基于hash和基于History API
1.URL中 # 及其后面的部分为hash,hash仅仅是客户端的一个状态,当客户端向后端服务器发请求的时候,hash部分并不会发过去,后端不会收到URL中的hash值。
2.通过HTML5 History API可以在不刷新页面的情况下,直接改变当前URL。