1.静态路由 vs. 动态路由
在Web前端开发中,我们经常会需要处理页面路由问题。习惯上,路由信息会在一个地方集中配置好,我们可以称之为“静态路由”,或者叫“中心化式路由”。以react-router v3版本为例,代码类似下面这样:
import { Router, Route, IndexRoute, browserHistory } from 'react-router'
const App = () => (
<Router history={browserHistory}>
<Route path="/" component={RootPage}>
<IndexRoute component={HomePage} />
<Route path="/users" component={UsersPage} />
</Route>
</Router>
)
render(<App />, document.getElementById('app'))
可以看到,在程序的顶层组件上配置好了所有路由信息,并通过嵌套关系体现不同的层次。但是,react-router v4版本进行了革命性的改动,使之更加符合React的“组件化”思想,我们可以称之为“动态路由”,或者借用区块链中的术语,称之为“去中心化路由”。用v4版本改写后的代码类似于下面这样:
import { BrowserRouter, Route } from 'react-router-dom'
const App = () => (
<BrowserRouter>
<RootPage />
</BrowserRouter>
)
const RootPage = () => (
<div>
<Route path="/" exact component={HomePage} />
<Route path="/users" component={UsersPage} />
</div>
)
render(<App