希赛考试网
首页 > 软考 > 网络工程师

前端路由实现的两种方式

希赛网 2024-06-06 18:40:53

前端路由是一种实现无刷新页面更换的方式,是单页Web应用(SPA)的基础。在Web应用中,网页的异步无刷新更新是必不可少的一个功能。前端路由就是通过浏览器端HTML5 History API接口,采用异步无刷新更新页面的方式,实现前端两种方式路由。下面将从多个角度分析前端路由实现的两种方式。

一、HashRouter

HashRouter是前端路由实现中比较常用的一种方式,也是一个比较成熟的路由实现方案。HashRouter的实现是通过改变URL的锚点来实现的。每次路由切换时,URL的锚点会随之改变,而不需要发送HTTP请求,这也是HashRouter能够实现异步无刷新页面更新的根本所在。HashRouter的核心代码如下:

```

window.addEventListener('hashchange', function() {

// 响应路由变化事件

});

```

HashRouter的优点是实现简单,容易理解。缺点是因为路由改变是通过URL的锚点来实现的,所以URL中会出现一些比较奇怪的字符,如#、?、&等,也就是我们通常看到的URL后缀带有#符号。同时,在使用SEO(搜索引擎优化)技术的页面中,由于HashFragment的存在,搜索引擎无法对其进行分析和抓取,如果使用HashRouter,则无法实现SEO。

二、HistoryRouter

HistoryRouter是另一种常见的前端路由实现方式。与HashRouter不同,HistoryRouter 的实现是通过 HTML5 的 H5 History API 完成的,可以在不刷新页面的情况下修改浏览器 URL 并添加记录到浏览器历史记录中。这样一来,在页面后退时,会回退到对应的路由记录上,也可通过前进、后退按钮切换路由,达到异步无刷新更新页面的效果。HistoryRouter的核心代码如下:

```

window.addEventListener('popstate', function() {

// 响应路由变化事件

});

```

HistoryRouter的优点是可以有效的避免URL中出现一些奇怪的字符,也可以支持SEO技术的实现。但是,由于HistoryRouter的实现需要借助HTML5,因此其兼容性受到了一定限制,目前仍有些浏览器不支持HTML5的H5 History API。

总结一下,无论是使用HashRouter,还是使用HistoryRouter,都需要在路由配置之后,实现相关的路由模块或者中间件。当然,为了更加方便的使用路由,我们也可以选择使用一些流行的前端框架或库,进行二次封装。在Vue.js框架中,路由的实现采用的是HistoryRouter路由方案,在React.js中,可以根据需要选择合适的路由实现方案。

扫码咨询 领取资料


软考.png


网络工程师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
网络工程师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件