首頁 >web前端 >前端問答 >react和vue的路由有什麼差別

react和vue的路由有什麼差別

WBOY
WBOY原創
2022-04-21 16:26:312927瀏覽

區別:1、react路由是全域元件方式,vue路由是全域配置方式;2、react路由支援物件和jsx語法的元件形式配置,vue路由只支援物件形式配置;3、vue路由任何元件都會被渲染到“99ae171a883fff6fa2f384572360bc0a”,而react路由則不是。

react和vue的路由有什麼差別

本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。

react和vue的路由有什麼區別

總的來說,二者的設計理念大致相同,但是由於對應的框架分別是VUE和React,使得它們的使用方式略有些細微的差別。下文的重點就是比較它們的差別部分。

無論是vue-router或是react-router,它們的最基本的初衷就是實作前端路由。所謂前端路由,簡單來說,就是當瀏覽器的url產生變化時,不向伺服器進行請求,而是直接控制前端頁面產生變化,以期待前端在比如功能切換時,產生類似頁面跳轉等效果。

而這裡面最基本的,無論是vue-router或react-router,都要提供一種配置方式,讓使用者可以**配置出url路徑和要展示的元件的對應關係* *。這樣一來,使用者透過頁面點擊或其他方式觸發瀏覽器url變化時,VUE或React系統就可以找到這個url對應的VUE元件或React元件,從而有針對性地,將這個元件在頁面上渲染。

##### 典型代码:
###### vue-router
JS:
```
const Foo = { template: &#39;<div>foo</div>&#39; }
const Bar = { template: &#39;<div>bar</div>&#39; }
const routes = [
  { path: &#39;/foo&#39;, component: Foo },
  { path: &#39;/bar&#39;, component: Bar }
]
const router = new VueRouter({undefined
  routes
})
const app = new Vue({undefined
  router
}).$mount(&#39;#app&#39;)
```
HTML:
```
<div id="app">
  <h1>Hello App!</h1>
  <p>
    <router-linkto="/foo">Go to Foo</router-link>
    <router-linkto="/bar">Go to Bar</router-link>
  </p>
  <!-- 路由出口-->
  <!-- 路由匹配到的组件将渲染在这里 -->
 <router-view></router-view>
</div>
```
###### react-router
JS/JSX:
```
// modules/Foo.js
import React from &#39;react&#39;
export default React.createClass({undefined
  render() {undefined
    return<div>Foo</div>
  }
})
```
```
// modules/Bar.js
import React from &#39;react&#39;
export default React.createClass({undefined
  render() {undefined
    return<div>Bar</div>
  }
})
```
```
// index.js
// ...
render((
  <Routerhistory={hashHistory}>
    <Route path="/"component={App}>
      {/* make them children of `App`*/}
      <Route path="/foo"component={Foo}/>
      <Route path="/bar"component={Bar}/>
    </Route>
  </Router>
), document.getElementById(&#39;app&#39;))
```
```
// modules/App.js
// ...
  render() {undefined
    return (
      <div>
        <h1>React RouterTutorial</h1>
        <ulrole="nav">
          <li><Linkto="/foo">Go To Foo</Link></li>
          <li><Linkto="/bar">Go To Bar</Link></li>
        </ul>
        {/* 路由匹配到的组件将渲染在这里 */}
        {this.props.children}
      </div>
    )
  }
// ...
```

兩個典型程式碼其實是有差別的。

看似都實作了根路由和兩個自訂路由,但這裡用的react-router的典型程式碼實際上採用了子路由的方式,而vue-router只用了並列層級的路由。之所以放這兩種不同的典型程式碼,實際上這樣比較容易對比出二者的差異。

- 先定義元件。定義Foo元件和Bar元件的方式的區別是VUE和React框架語法層級的區別,不在我們的討論範圍之內。

- 元件定義好之後,設定url和元件的對應關係。在典型程式碼中,vue-router定義了一個routes對象,它是一個數組,數組中每個對象表示該對應關係。而react-router定義採用了JSX方式,清楚地表示了這個對應關係,以及和/路由的父子關係。要注意的是:VUE的路由配置要提供給new VueRouter()對象,這個對像要在全域VUE對像初始化時提供;而React路由則需要配置給全域9532c289a9b317d4ae0f0806103be5ce元件,雖然react-router也提供類似vue-router典型程式碼中的物件陣列形式的設定方式,但最終仍是要將設定傳遞給9532c289a9b317d4ae0f0806103be5ce。 **一個是全域配置(VUE),一個是全域元件(React),這是兩者使用上的根本差異之一。 **(vue-router並沒有提供像JSX這種類別html的配置方式,它只能以物件方式提供路由配置,這也是框架系統不同所決定的)

- 子路由配置。 vue-router在典型程式碼中並沒有體現如何設定子路由,其實就vue-router路由元件的使用來說,無論是哪個層級的路由元件,**都會被渲染到父元件

# 使用時的不同點總結:

  • #- vue-router是全域設定方式,react-router是全域元件方式。
  • - vue-router僅支援物件形式的配置,react-router支援物件形式和JSX語法的元件形式配置。
  • - vue-router任何路由元件都會被渲染到99ae171a883fff6fa2f384572360bc0a位置,react-router子元件作為children被傳入父元件,而根元件被渲染到9532c289a9b317d4ae0f0806103be5ce位置。

推薦學習:《react影片教學

》###

以上是react和vue的路由有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn