软考
APP下载

前端路由实现的两种方式

前端路由是一种实现无刷新页面更换的方式,是单页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中,可以根据需要选择合适的路由实现方案。

备考资料 免费领取:网络工程师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
网络工程师题库