欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于vue-router的那些事兒

 更新時間:2018年05月23日 11:07:59   作者:howgod  
要學(xué)習(xí)vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標(biāo)簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題,就是本篇要探討的主要問題,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧

一、引子

要學(xué)習(xí)vue-router就要先知道這里的路由是什么?為什么我們不能像原來一樣直接用標(biāo)簽編寫鏈接哪?vue-router如何使用?常見路由操作有哪些?等等這些問題,就是本篇要探討的主要問題

二、vue-router是什么

這里的路由并不是指我們平時所說的硬件路由器, 這里的路由就是SPA(單頁應(yīng)用)的路徑管理器 。再通俗的說,vue-router就是WebApp的鏈接路徑管理系統(tǒng)。 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁面應(yīng)用。vue的單頁面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問路徑,并將路徑和組件映射起來。傳統(tǒng)的頁面應(yīng)用,是用一些超鏈接來實(shí)現(xiàn)頁面切換和跳轉(zhuǎn)的。在vue-router單頁面應(yīng)用中,則是路徑之間的切換,也就是組件的切換。 路由模塊的本質(zhì) 就是建立起url和頁面之間的映射關(guān)系 。 至于我們?yōu)樯恫荒苡胊標(biāo)簽,這是因?yàn)橛肰ue做的都是單頁應(yīng)用,就相當(dāng)于只有一個主的index.html頁面,所以你寫的標(biāo)簽是不起作用的,你必須使用vue-router來進(jìn)行管理。

三、vue-router實(shí)現(xiàn)原理

SPA(single page application):單一頁面應(yīng)用程序,只有一個完整的頁面;它在加載頁面時,不會加載整個頁面,而是只更新某個指定的容器中內(nèi)容。 單頁面應(yīng)用(SPA)的核心之一是: 更新視圖而不重新請求頁面 ;vue-router在實(shí)現(xiàn)單頁面前端路由時,提供了兩種方式:Hash模式和History模式;根據(jù)mode參數(shù)來決定采用哪一種方式。

1、Hash模式:

vue-router 默認(rèn) hash 模式 —— 使用 URL 的 hash 來模擬一個完整的 URL,于是當(dāng) URL 改變時,頁面不會重新加載。hash(#)是URL 的錨點(diǎn),代表的是網(wǎng)頁中的一個位置,單單改變#后的部分,瀏覽器只會滾動到相應(yīng)位置,不會重新加載網(wǎng)頁,也就是說 #是用來指導(dǎo)瀏覽器動作的,對服務(wù)器端完全無用,HTTP請求中也不會不包括#;同時每一次改變#后的部分,都會在瀏覽器的訪問歷史中增加一個記錄,使用”后退”按鈕,就可以回到上一個位置;所以說 Hash模式通過錨點(diǎn)值的改變,根據(jù)不同的值,渲染指定DOM位置的不同數(shù)據(jù)

2、History模式:

由于hash模式會在url中自帶#,如果不想要很丑的 hash,我們可以用路由的 history 模式,只需要在配置路由規(guī)則時,加入"mode: 'history'",這種模式充分利用 history.pushState API 來完成 URL 跳轉(zhuǎn)而無須重新加載頁面。

//main.js文件中
const router = new VueRouter({
 mode: 'history',
 routes: [...]
})

當(dāng)你使用 history 模式時,URL 就像正常的 url,例如 http://yoursite.com/user/id,比較好看! 不過這種模式要玩好,還需要后臺配置支持。因?yàn)槲覀兊膽?yīng)用是個單頁客戶端應(yīng)用,如果后臺沒有正確的配置,當(dāng)用戶在瀏覽器直接訪問 http://oursite.com/user/id 就會返回 404,這就不好看了。 所以呢, 你要在服務(wù)端增加一個覆蓋所有情況的候選資源:如果 URL 匹配不到任何靜態(tài)資源,則應(yīng)該返回同一個 index.html 頁面,這個頁面就是你 app 依賴的頁面。

export const routes = [ 
 {path: "/", name: "homeLink", component:Home}
 {path: "/register", name: "registerLink", component: Register},
 {path: "/login", name: "loginLink", component: Login},
 {path: "*", redirect: "/"}]

此處就設(shè)置如果URL輸入錯誤或者是URL 匹配不到任何靜態(tài)資源,就自動跳到到Home頁面

3、使用路由模塊來實(shí)現(xiàn)頁面跳轉(zhuǎn)的方式

方式1:直接修改地址欄

方式2:this.$router.push(‘路由地址')

方式3: <router-link to="路由地址"></router-link>

四、vue-router使用方式

1:下載 npm i vue-router -S

2:在main.js中引入 import VueRouter from 'vue-router';

3:安裝插件 Vue.use(VueRouter);

4:創(chuàng)建路由對象并配置路由規(guī)則

let router = new VueRouter({routes:[{path:'/home',component:Home}]});

5:將其路由對象傳遞給Vue的實(shí)例,options中加入 router:router

6:在app.vue中留坑 <router-view></router-view>

具體實(shí)現(xiàn)請看如下代碼:

//main.js文件中引入
import Vue from 'vue';
import VueRouter from 'vue-router';
//主體
import App from './components/app.vue';
import Home from './components/home.vue'
//安裝插件
Vue.use(VueRouter); //掛載屬性
//創(chuàng)建路由對象并配置路由規(guī)則
let router = new VueRouter({
  routes: [
    //一個個對象
    { path: '/home', component: Home }
  ]
});
//new Vue 啟動
new Vue({
  el: '#app',
  //讓vue知道我們的路由規(guī)則
  router: router, //可以簡寫router
  render: c => c(App),
})

最后記得在在app.vue中“留坑”

//app.vue中
<template>
  <div>
    <!-- 留坑,非常重要 -->
    <router-view></router-view>
  </div>
</template>
<script>
  export default {
    data(){
      return {}
    }
  }
</script>

五、vue-router核心要點(diǎn)

1.vue-router如何參數(shù)傳遞

①用name傳遞參數(shù)

在路由文件src/router/index.js里配置name屬性

routes: [
  {
   path: '/',
   name: 'Hello',
   component: Hello
  }
]

模板里(src/App.vue)用 $router.name 來接收 比如: <p>{{ $router.name}}</p>

②通過 <router-link> 標(biāo)簽中的to傳參

這種傳參方法的基本語法:

<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>

比如先在src/App.vue文件中

<router-link :to="{name:'hi1',params:{username:'jspang',id:'555'}}">Hi頁面1</router-link>

然后把src/router/index.js文件里給hi1配置的路由起個name,就叫hi1.

{path:'/hi1',name:'hi1',component:Hi1}

最后在模板里(src/components/Hi1.vue)$route.params.username 進(jìn)行接收.

{{$route.params.username}}-{{$route.params.id}}

③vue-router 利用url傳遞參數(shù)----在配置文件里以冒號的形式設(shè)置參數(shù)。

我們在/src/router/index.js文件里配置路由

{
  path:'/params/:newsId/:newsTitle',
  component:Params
}

我們需要傳遞參數(shù)是新聞ID(newsId)和新聞標(biāo)題(newsTitle).所以我們在路由配置文件里制定了這兩個值。 在src/components目錄下建立我們params.vue組件,也可以說是頁面。我們在頁面里輸出了url傳遞的的新聞ID和新聞標(biāo)題。

<template>
  <div>
    <h2>{{ msg }}</h2>
    <p>新聞ID:{{ $route.params.newsId}}</p>
    <p>新聞標(biāo)題:{{ $route.params.newsTitle}}</p>
  </div>
</template>
<script>
export default {
 name: 'params',
 data () {
  return {
   msg: 'params page'
  }
 }
}
</script>

在App.vue文件里加入我們的 <router-view> 標(biāo)簽。這時候我們可以直接利用url傳值了

<router-link to="/params/198/jspang website is very good">params</router-link>

2.單頁面多路由區(qū)域操作

在一個頁面里我們有2個以上 <router-view> 區(qū)域,我們通過配置路由的js文件,來操作這些區(qū)域的內(nèi)容

①App.vue文件,在 <router-view> 下面新寫了兩行 <router-view> 標(biāo)簽,并加入了些CSS樣式

<template>
 <div id="app">
  <img src="./assets/logo.png">
    <router-link :to="{name:'HelloWorld'}"><h1>H1</h1></router-link>
    <router-link :to="{name:'H1'}"><h1>H2</h1></router-link>
  <router-view></router-view>
  <router-view name="left" style="float:left;width:50%;background-color:#ccc;height:300px;"/>
  <router-view name="right" style="float:right;width:50%;background-color:yellowgreen;height:300px;"/>
 </div>
</template>

②需要在路由里配置這三個區(qū)域,配置主要是在components字段里進(jìn)行

export default new Router({
  routes: [
   {
    path: '/',
    name: 'HelloWorld',
    components: {default: HelloWorld,
     left:H1,//顯示H1組件內(nèi)容'I am H1 page,Welcome to H1'
     right:H2//顯示H2組件內(nèi)容'I am H2 page,Welcome to H2'
    }
   },
   {
    path: '/h1',
    name: 'H1',
    components: {default: HelloWorld,
     left:H2,//顯示H2組件內(nèi)容
     right:H1//顯示H1組件內(nèi)容
    }
   }
  ]
 })

上邊的代碼我們編寫了兩個路徑,一個是默認(rèn)的‘/',另一個是‘/Hi'.在兩個路徑下的components里面,我們對三個區(qū)域都定義了顯示內(nèi)容。最后頁面展示如下圖:

 

3.vue-router配置子路由(二級路由)

實(shí)際生活中的應(yīng)用界面,通常由多層嵌套的組件組合而成。同樣地,URL中各段動態(tài)路徑也按某種結(jié)構(gòu)對應(yīng)嵌套的各層組件,例如:

 

如何實(shí)現(xiàn)下圖效果(H1頁面和H2頁面嵌套在主頁中)?

 

①首先用標(biāo)簽增加了兩個新的導(dǎo)航鏈接

<router-link :to="{name:'HelloWorld'}">主頁</router-link>
<router-link :to="{name:'H1'}">H1頁面</router-link>
<router-link :to="{name:'H2'}">H2頁面</router-link>

②在HelloWorld.vue加入 <router-view> 標(biāo)簽,給子模板提供插入位置

<template>
 <div class="hello">
  <h1>{{ msg }}</h1>
  <router-view></router-view>
 </div>
</template>

③在components目錄下新建兩個組件模板 H1.vue 和 H2.vue 兩者內(nèi)容類似,以下是H1.vue頁面內(nèi)容:

<template>
 <div class="hello">
  <h1>{{ msg }}</h1>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    msg: 'I am H1 page,Welcome to H1'
   }
  }
 }
</script>

④修改router/index.js代碼,子路由的寫法是在原有的路由配置下加入children字段。

routes: [
  {
   path: '/',
   name: 'HelloWorld',
   component: HelloWorld,
   children: [{path: '/h1', name: 'H1', component: H1},
    {path: '/h2', name: 'H2', component: H2}
   ]
  }
 ]

4.vue-router跳轉(zhuǎn)方法

<button @click="goToMenu" class="btn btn-success">Let's order!</button>
.....
<script>
 export default{
  methods:{
   goToMenu(){
    this.$router.go(-1)//跳轉(zhuǎn)到上一次瀏覽的頁面
    this.$router.replace('/menu')//指定跳轉(zhuǎn)的地址
    this.$router.replace({name:'menuLink'})// 指定跳轉(zhuǎn)路由的名字下
    this.$router.push('/menu')通過push進(jìn)行跳轉(zhuǎn)
    this.$router.push({name:'menuLink'})通過push進(jìn)行跳轉(zhuǎn)路由的名字下
   }
  }
 }
</script>

5.404頁面的設(shè)置

用戶會經(jīng)常輸錯頁面,當(dāng)用戶輸錯頁面時,我們希望給他一個友好的提示頁面,這個頁面就是我們常說的404頁面。vue-router也為我們提供了這樣的機(jī)制。 ①設(shè)置我們的路由配置文件(/src/router/index.js)

{
  path:'*',
  component:Error
}

這里的path:'*'就是輸入地址不匹配時,自動顯示出Error.vue的文件內(nèi)容

②在/src/components/文件夾下新建一個Error.vue的文件。簡單輸入一些有關(guān)錯誤頁面的內(nèi)容。

<template>
  <div>
    <h2>{{ msg }}</h2>
  </div>
</template>
<script>
export default {
 data () {
  return {
   msg: 'Error:404'
  }
 }
}
</script>

此時我們隨意輸入一個錯誤的地址時,便會自動跳轉(zhuǎn)到404頁面

總結(jié)

以上所述是小編給大家介紹的關(guān)于vue-router的那些事兒,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue中使用富文本編輯框的實(shí)踐與探索

    Vue中使用富文本編輯框的實(shí)踐與探索

    本文詳細(xì)介紹了如何在Vue項(xiàng)目中集成和使用富文本編輯框,并分享了一些實(shí)踐經(jīng)驗(yàn),介紹了為什么需要富文本編輯框,Vue中常用的富文本編輯器,以及如何安裝、配置和使用Vue-Quill-Editor,本文還提供了一些基本的配置示例,幫助開發(fā)者在實(shí)際項(xiàng)目中根據(jù)需求進(jìn)行更多探索和定制
    2024-10-10
  • vue3?element-plus?實(shí)現(xiàn)表格數(shù)據(jù)更改功能詳細(xì)步驟

    vue3?element-plus?實(shí)現(xiàn)表格數(shù)據(jù)更改功能詳細(xì)步驟

    這篇文章主要介紹了vue3 element-plus實(shí)現(xiàn)表格數(shù)據(jù)更改功能,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • uniapp?vue與nvue輪播圖之輪播圖組件的示例代碼

    uniapp?vue與nvue輪播圖之輪播圖組件的示例代碼

    這篇文章主要介紹了uniapp?vue與nvue輪播圖輪播圖組件的實(shí)例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • 一文詳解Vue中可重用組件的3個主要問題

    一文詳解Vue中可重用組件的3個主要問題

    當(dāng)我們談?wù)摶蛴懻撛?Vue?中創(chuàng)建用戶界面組件時,經(jīng)常會提到可重用性,在?Vue?中創(chuàng)建真正的可重用組件可能很棘手,在本文中,我將探討可重用組件的概念、應(yīng)用這些組件時面臨的問題,以及為什么必須盡可能克服這些問題,需要的朋友可以參考下
    2023-10-10
  • 如何配置vue.config.js 處理static文件夾下的靜態(tài)文件

    如何配置vue.config.js 處理static文件夾下的靜態(tài)文件

    這篇文章主要介紹了如何配置vue.config.js 處理static文件夾下的靜態(tài)文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Vue用mixin合并重復(fù)代碼的實(shí)現(xiàn)

    Vue用mixin合并重復(fù)代碼的實(shí)現(xiàn)

    這篇文章主要介紹了Vue用mixin合并重復(fù)代碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動導(dǎo)入

    Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動導(dǎo)入

    本文主要介紹了Vite使用unplugin-auto-import實(shí)現(xiàn)vue3中的自動導(dǎo)入,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Vue2.0+ElementUI+PageHelper實(shí)現(xiàn)的表格分頁功能

    Vue2.0+ElementUI+PageHelper實(shí)現(xiàn)的表格分頁功能

    ElementUI也是一套很不錯的組件庫,對于我們經(jīng)常用到的表格、表單、時間日期選擇器等常用組件都有著很好的封裝和接口。這篇文章主要介紹了Vue2.0+ElementUI+PageHelper實(shí)現(xiàn)的表格分頁,需要的朋友可以參考下
    2021-10-10
  • vue文件上傳Required request part ‘file‘ is not present問題

    vue文件上傳Required request part ‘file‘ is&n

    這篇文章主要介紹了vue文件上傳Required request part ‘file‘ is not present問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue3中的ref和reactive定義數(shù)組方式

    vue3中的ref和reactive定義數(shù)組方式

    這篇文章主要介紹了vue3中的ref和reactive定義數(shù)組方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論