什么是前端路由?

1、什么是路由

        路由是根据不同的url地址展现不同的内容或页面。

2、路由历史

        早期的路由都是后端直接根据url来reload页面实现的,即后端控制路由。后来页面越来越复杂,服务器压力越来越大,随着ajax(异步刷新技术)的出现,页面的实现非reload就能刷新数据,让前端也可以控制url自行管理,前端路由由此而生。

3、什么时候使用前端路由?

       前端路由更多用在单页应用上,也就是SPA,因为单页应用,基本上都是前后端分离的,后端自然也就不会给前端提供路由。在单页面应用中,大部分页面结果不变,只改变部分内容的使用。

4、前端路由有什么优缺点?

      优点

      用户体验好,不需要每次都从服务器全部获取,快速展现给用户。

      缺点

      (1)使用浏览器的前进,后退键的时候会重新发送请求,没有合理利用缓存。

      (2)单页面无法记住之前滚动的位置,无法再前进,后退的时候记住滚动的位置。

5、前端路由的实现

 (1)Pjax(PushState+Ajax)

原理:利用ajax请求替代了a标签的默认跳转,然后利用html5中的API修改了url

API: history.pushState和history.replaceState

两个API都会操作浏览器历史记录,而不会引起页面的刷新,pushState会增加一条新的历史记录,而replaceState则会替换当前的历史记录。

例子:

window.history.pushState(null,null,"name/blue");
//url:https://www.baidu.com/name/blue

window.history.pushState(null,null,"/name/orange");
//url:https://www.baidu.com/name/orange

(2) Hjax(Hash+Ajax)

       原理:url中常会出现#, 一可以锚点(如回到顶部按钮的原理),二是路由里的锚点(hash)。Web服务并不会解析hash,也就是说#后的内容Web服务都会自动忽略,但是JavaScript是可以通过window.location.hash读取到的,读取到的路径加以解析之后就可以相应不同路径的逻辑处理。

       hashchange事件(监听hash变化触发的事件),当用window.location处理哈希的改变时不会重新渲染页面,而是当作新页面加到历史记录中,这样我们跳转页面就可以在hashchange事件中注册ajax从而改变页面内容。

 部分内容参考博文:https://blog.csdn.net/u014168594/article/details/79181828

正在学习中,待更新……


猜你喜欢

转载自blog.csdn.net/bluedandelion/article/details/80498475