您好,登錄后才能下訂單哦!
這篇文章主要介紹“react和vue的路由有哪些區別”,在日常操作中,相信很多人在react和vue的路由有哪些區別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”react和vue的路由有哪些區別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
區別:1、react路由是全局組件方式,vue路由是全局配置方式;2、react路由支持對象和jsx語法的組件形式配置,vue路由只支持對象形式配置;3、vue路由任何組件都會被渲染到“<router-view/>”,而react路由不是。
本教程操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
總的來說,二者的設計理念大致相同,但是由于對應的框架分別是VUE和React,使得它們的使用方式略有些細微的差別。下文的著重點就是對比它們的差別部分。
無論是vue-router還是react-router,它們的最基本的初衷就是實現前端路由。所謂前端路由,簡單來說,就是當瀏覽器的url產生變化時,不向服務器進行請求,而是直接控制前端頁面產生變化,以期待前端在比如功能切換時,產生類似頁面跳轉等效果。
而這里面最基本的,無論是vue-router還是react-router,都要提供一種配置方式,讓使用者可以**配置出url路徑和要展示的組件的對應關系**。這樣一來,用戶通過頁面點擊或者其他方式觸發瀏覽器url變化時,VUE或者React系統就可以找到這個url對應的VUE組件或者React組件,從而有針對性地,將這個組件在頁面上渲染。
##### 典型代碼: ###### vue-router JS: ``` const Foo = { template: '<div>foo</div>' } const Bar = { template: '<div>bar</div>' } const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component: Bar } ] const router = new VueRouter({undefined routes }) const app = new Vue({undefined router }).$mount('#app') ``` HTML: ``` <div id="app"> <h2>Hello App!</h2> <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 'react' export default React.createClass({undefined render() {undefined return<div>Foo</div> } }) ``` ``` // modules/Bar.js import React from 'react' 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('app')) ``` ``` // modules/App.js // ... render() {undefined return ( <div> <h2>React RouterTutorial</h2> <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路由則需要配置給全局<Router/>組件,雖然react-router也提供類似于vue-router典型代碼中的對象數組形式的配置方式,但是最終仍是要將配置傳遞給<Router/>。**一個是全局配置(VUE),一個是全局組件(React),這是兩者使用上的根本區別之一。**(vue-router并不提供像JSX這種類html的配置方式,它只能以對象方式提供路由配置,這也是框架系統不同所決定的)
- 子路由配置。vue-router在典型代碼中并沒有體現如何配置子路由,其實就vue-router路由組件的使用來說,無論是哪個級別的路由組件,**都會被渲染到父組件<router-view/>組件標識的地方**。對于react-router,**根路由會被渲染到<Router/>指定的位置,而子路由則會作為子組件,將children對象以參數方式傳入父組件,由父組件將該對象指定渲染位置**。這也是為什么在典型代碼中vue-router沒有寫路由的父子關系而react-router的典型代碼體現了父子路由關系的原因。
#### 使用時的不同點總結:
- vue-router是全局配置方式,react-router是全局組件方式。
- vue-router僅支持對象形式的配置,react-router支持對象形式和JSX語法的組件形式配置。
- vue-router任何路由組件都會被渲染到<router-view/>位置,react-router子組件作為children被傳入父組件,而根組件被渲染到<Router/>位置。
到此,關于“react和vue的路由有哪些區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。