从 React Router 谈谈路由的那些事
React Router是专为 React 设计的路由解决方案,在使用 React 来开发 SPA (单页应用)项目时,都会需要路由功能,而 React Router 应该是目前使用率最高的。 React Router 并不是 Facebook 的 React 官方团队开发的,但是据说有官方人员参与开发。React Router 的设计思想来源于 Ember 的路由,如果原来有用过 Ember 的路由,那么应该对 React Router 不会陌生。 什么是路由?对于没有开发过后端,也没有开发过 SPA 的前端来说,「路由」这个名词可能会让人比较困惑,这里的路由并不是指「硬件路由」,也不是网络七层协议中的「网络层路由」,但是其思想原理是一样的。我尽量简单通俗的介绍一下。 假如我们有一台提供 Web 服务的服务器的网络地址是:
那么其路径就分别是 当用户使用 前端路由前端的路由和后端的路由在实现技术上不一样,但是原理都是一样的。在 HTML5 的
Web 服务并不会解析 history是 HTML5 才有的新 API,可以用来操作浏览器的 session history (会话历史)。基于
1
2
//10.0.0.1/
//10.0.0.1/about
用户可能都察觉不到该访问地址是 Web 服务实现的路由还是前端实现的路由。
从性能和用户体验的层面来比较的话,后端路由每次访问一个新页面的时候都要向服务器发送请求,然后服务器再响应请求,这个过程肯定会有延迟。而前端路由在访问一个新页面的时候仅仅是变换了一下路径而已,没有了网络延迟,对于用户体验来说会有相当大的提升。 说了这么多的「路由基础」,该回头来说说 React Router 了。 配置路由使用 React Router 来配置上面例子中的三个页面,每个页面分别对应着一个 React Component。
4
5
6
7
8
9
10
11
|
import
React
from
'react'
;
class
About
extends
React
.
Component
{
render
(
)
{
return
(
This
is
About
page
.
)
;
}
}
;
export
default
About
;
|
/concat
页面的入口文件concat.js
/首页对应的是app.js,它也是整个 React Component 的入口文件。