Vue.js系列之vue-router(上)(3)

2022-01-01 前端客


說明:

我們項目現在用的是:vue2.0 + vue-cli + webpack + vue-router2.0 + vue-resource1.0.3 

如果大家在實踐的過程中與本文所說的內容有較大區別的話看看是不是版本問題。

本文是一系列文章,在我對Vue有了更深刻的理解認識之後會對文章及時進行修改或更正。歡迎大家批評指出錯誤。以下是已完成的文章列表。

 1.Vue.js系列之項目搭建(1)

 2.Vue.js系列之項目結構說明(2)

概述

Vue非常適用於實踐單頁面應用程式也就是平時大家說的比較多的SPA(single page application),這點應該了解過Vue的應該都知道吧。一般的單頁面應用是基於路由或頁面之間的連結來形成的,Vue是基於路由和組件的,所以我們今天就來了解下vue-router。vue-router是Vue.js官方的路由插件,它和vue.js深度集成,用於設定訪問路徑,並將路徑和組件映射起來,我們給每個組件一個路由地址,跳轉路由相當於組件切換。vue-router的內容還是比較多的,這裡我只分享我自己項目中用到的地方,其他地方大家可以看文檔啦。

vue-router官網:http://router.vuejs.org/zh-cn/(中)英文官網你知道啦,直接去掉後面的"zh-cn/"就好了。

開始使用vue-router

這裡我假設大家之前都用模塊工程的方式實踐了一個vue Demo,在此基礎上我們添加vue-router。

1.安裝

npm install vue-router 

2.在項目main.js中安裝路由插件

import Vue from 'vue'  

import VueRouter from 'vue-router'  

Vue.use(VueRouter) 

3.在組件中使用路由

先看下路由跳轉的效果吧,大家注意看地址欄變化哈。


下面這個tabBar就是一個組件(偷偷告訴你,在微信小程序中,這個功能直接配置app.json文件就好了)

每個tab點擊時路由地址會相應變化,其實是渲染相應的組件,具體我們來看代碼。

footer.vue組件

<template>  

    <div>  

        <div v-if="readType.count">{{readType.count}}</div>  

        <ul>  

            <li>  

                <router-link to="/home">  

                    <i></i><span>首頁</span>  

                </router-link>  

            </li>  

            <li>  

                <router-link to="/quan" v-bind:class="{rrouter:activ}">  

                    <i></i><span>學友圈</span>  

                </router-link>  

            </li>  

            <li>  

                <router-link to="/friend">  

                    <i></i><span>學友</span>  

                </router-link>  

            </li>  

            <li>  

                <router-link to="/find">  

                    <i></i><span>發現</span>  

                </router-link>  

            </li>  

            <li>  

                <router-link to="/mine">  

                    <i></i><span>我的</span>  

                </router-link>  

            </li>  

        </ul>  

    </div>  

</template>  

這裡有幾點需要知道:

1.使用 router-link 組件來導航.

2.通過傳入 `to` 屬性指定連結.

3.<router-link> 認會被渲染成一個 `<a>` 標籤

路由出口

我們前面說了,路由跳轉就是相應組件在渲染,那麼渲染的內容是怎麼顯示也頁面中的呢,那就是路由出口'<router-view></router-view>'做的事了,路由匹配到的組件將渲染在這裡。

路由出口我們可以設置在當前組件中也可以設置在其他組件中,項目中我們就將所有組件都渲染在最大的容器App.vue組件中(我們項目中App組件只作為渲染容器)。

<template>  

  <div id="app">  

    <router-view></router-view>  

  </div>  

</template>  

JavaScript

定義路由文件可以直接寫在main.js文件中,也可以新建一個js文件,因為我們的組件比較多,所以單獨把路由拿出來寫了一個router.js文件。

// 0. 如果使用模塊化機制編程,進入Vue和VueRouter,要調用 Vue.use(VueRouter)  

import Vue from 'vue'  

import VueRouter from 'vue-router'  

Vue.use(VueRouter)  

  

// 1. 定義(路由)組件。  

// 可以從其他文件 import 進來,我們一般都是建好了組件再來寫路由的  

// 所以就會有好多這樣的語句。  

import home form "./components/home"  

import login form "./components/login"  

  

// 2. 定義路由  

  routes: [ //這裡跟1.x有挺大區別,有接觸的自己看清楚哦  

    {  

      path: '/',    //瀏覽器網路請求走通之後默認就會去找域名下的根目錄,  

      name: 'home', //所以我們就把這個組件作為默認首頁  

      component: home  

    },  

    {  

      path: '/login',  

      name: 'login',  

      component: login  

    }  

   ]  

  

// 3. 創建 router 實例,然後傳 `routes` 配置  

// 你還可以傳別的配置參數, 不過先這麼簡單著吧。  

const router = new VueRouter({      //你就當const是var  

  routes  

//(縮寫)相當於 routes: routes  

})  

  

// 4. 創建和掛載根實例。  

// 記得要通過 router 配置參數注入路由,  

// 從而讓整個應用都有路由功能  

const app = new Vue({  

  router  

}).$mount('#app')  

// 現在,應用已經啟動了!

總結

上篇先分享到這裡,主要了解了有以下幾點:

1.vue-router的安裝和使用

2.在組件模板中的書寫格式

3.知道了路由出口

4.如何定義一個路由

5.創建路由實例和掛載實例

下篇我將給大家繼續分享路由的其他用法(項目中用到的):

1.如何實現當前頁激活,tab標籤同時也激活,即active-class

2.路由跳轉時添加過渡動效

3.路由傳參及命名路由

4.實現資源懶加載

5.編程式導航

6.router-link的其他表現形式

7.Router構造詳細配置

內容有點多,可能還要再分細一點,寫詳細點。但還是想把自己遇到過的問題,用到的知識點通過自己的理解分享出來。

明天還是要用markDown來寫,默認的這個編輯器排版實在太累了,經常出問題,但是我的markDown不知道為什麼,光標經常會自動換行,不知道有沒有朋友遇到過,能否解答一下。

今天小六分享的內容,各位前端客們get到了麼?歡迎更多前端客們加入進來,對每天推送的內容進行點評、糾錯,如果你有想要與大家分享的前端技巧,歡迎給前端客投稿。

前  端  客

簡 單 高 效

qianduan_ke

請點擊閱讀原文

相關焦點

  • Vue-Router源碼學習之index.js(vue-router類)
    前言上一篇我們聊了:Vue-Router源碼學習之install方法雖然最近需求著實不少,但是感覺自己學習勁頭還是蠻足的今天,帶來Vue-Router源碼解析系列的第二篇文章:index.js。正文vue-router類裡面都做了什麼?
  • Vue.js系列之vue-resource(6)
    本文是一系列文章,在我對Vue有了更深刻的理解認識之後會對文章及時進行修改或更正。歡迎大家批評指出錯誤。以下是已完成的文章列表。 1. Vue.js系列之項目搭建(1) 2. Vue.js系列之項目結構說明(2) 3. Vue.js系列之vue-router(上)(3) 4.
  • Vue全家桶&vue-router原理
    // Vue2學習 第1篇  // 正文:1017字// 預計閱讀時間:8 分鐘前言 每天一點點,堅持學習Vue全家桶之vue-router原理 Vue全家桶:vue + vue-router(路由)+ vuex(狀態管理)+ axios(請求)本次主要分析並實現簡版vue-router,從源碼中學習借鑑
  • Vue面試題(3)Vue-Router和Vuex
    _committing = committing}3、為啥要有vuex,使用localStorage本地存儲不行麼?Vuex 是一個專為 Vue.js 應用程式開發的狀態管理模式,Vuex 的狀態存儲是響應式的。當 Vue 組件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那麼相應的組件也會相應地得到高效更新。
  • 從頭開始學習 vue-router
    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將路徑和組件映射起來。傳統的頁面應用,是用一些超連結來實現頁面切換和跳轉的。在vue-router單頁面應用中,則是路徑之間的切換,也就是組件的切換。
  • vue-router 實現分析
    是 Vue.js 官方的路由庫,本著學習的目的,我對 vue-router 的源碼進行了閱讀和分析,分享出來給其他感興趣的同學做個參考吧。})源碼(https://github.com/vuejs/vue-router/blob/v2.2.1/src/history/hash.js#L21)這個動作是什麼時候執行的呢?是在 router.init()(源碼)中調用的,而 router.init() 則是在根組件創建時(源碼)調用的。
  • 官方推薦:Vue之router路由最優美寫法
    import Vue from 'vue'import Router from 'vue-router'const HelloWorld = () => import('@/components/HelloWorld')Vue.use(Router)export default new Router({ routes:
  • Vue.js布局
    動態Vue.js布局組件前言vue.js是漸進增強的視圖庫,可以作為.html頁面部分使用,也可以結合vue-router、vuex、axios用來構建單頁面或多頁面應用。
  • Vue.js 框架作者公布 Vue 3 最新進展
    Vue.js 作者尤雨溪近日介紹了 Vue 3 的最新進展。尤雨溪表示,由於在 Vue 3 上花費的大部分時間都投入到了設計和構建穩定的內核上,不過要讓整個框架處於 "ready" 狀態,不僅僅是內核的問題,還需要有兼容版本的支持庫 (Vue Router, Vuex, test
  • Vue.js最佳實踐(五招讓你成為Vue.js大師)
    如果有人需要Vue.js入門系列的文章可以在評論區告訴我,有空就給你們寫。對大部分人來說,掌握Vue.js基本的幾個API後就已經能夠正常地開發前端網站。但如果你想更加高效地使用Vue來開發,成為Vue.js大師,那下面我要傳授的這五招你一定得認真學習一下了。
  • 手寫自己的Vue全家桶之kvue-router
    5    value:屬性值6    fn:只在node調試環境下set時調用其實Vue.util中還有一些函數,如:二、Vue全家桶之Vue-router的手動實現    1.在我們手動實現vue-router之前,我們先看一下他在Vue中的使用1import Router from 'vue-router
  • 揭密vue.js的神秘之處,小程序跟vue有什麼關係
    國內三大新興移動端公司為何相繼開放組件庫,vue.js為何在短短2年內獲得了天貓移動端、uc移動端、蘇寧易購移動端、滴滴、餓了麼、美團移動端的青睞是什麼原因。上面三家公司開放的組件庫只適合會vue.js代碼編程高手使用,普通人員是享受不到這個福利的,微容卻將vue.js大眾化,讓一款高級移動端開發工具,開放出來讓會電腦的人都會開發。
  • 淺析 vue-router 源碼和動態路由權限分配
    install了解清楚 Vue.use 的結構之後,可以得出 Vue 註冊插件其實就是在執行插件的 install 方法,參數的第一項就是 Vue,所以我們將代碼定位到 vue-router 源碼中的 src/install.js 源碼地址 (https://github.com/vuejs/vue-router
  • Vue.js以業務為中心的常見面試題
    在vue.js中的MVVM模式:vue.js是通過數據驅動的,vue.js實例化對象將dom和數據進行綁定,一旦綁定,dom和數據將保持同步,每當數據發生變化,dom也會隨著變化;ViewModel是Vue.js的核心,它是Vue.js的一個實例。
  • Vue入門10 vue+elementUI
    npm i element-ui -SCDN目前可以通過unpkg.com/element-ui獲取到最新版本的資源,在頁面上會js和css文件即可開始使用。<!/dist/vue.js"></script> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <script> new Vue({ el: '#app', data: function() { return { visible
  • 5招讓你成為Vue.js大師
    如果有人需要Vue.js入門系列的文章可以在評論區告訴我,有空就給你們寫。對大部分人來說,掌握Vue.js基本的幾個API後就已經能夠正常地開發前端網站。但如果你想更加高效地使用Vue來開發,成為Vue.js大師,那下面我要傳授的這五招你一定得認真學習一下了。
  • Vue.js 實戰高清 pdf
    目 錄第1篇 基礎篇第1章 初識Vue.js 31.1 Vue.js是什麼 31.1.1 MVVM模式 31.1.2 Vue.js有什麼不同 41.2 如何使用Vue.js 51.2.1 傳統的前端開發模式 51.2.2 Vue.js的開發模式 5第2章 數據綁定和第一個Vue應用 82.1 Vue
  • 如何用 Vue + Vuetify 快速建站?
    │   └── skills.js│   │   └── mutation-types.js│   ├── index.html│   ├── main.js│   ├── App.vue│   └── views│       ├── About.vue│       ├── Blog.vue
  • Vue進階篇: vue-loader
    Webpack 更加強大之處在於:通過「loader」,我們可以配置 Webpack 以任何方式去轉換所有類型的文件。二、vue-loader是什麼?vue-loader 是一個 Webpack 的 loader,可以將.vue文件轉化成普通的js模塊來執行。
  • 重學鞏固你的Vuejs知識體系(下)
    依照下圖(參考《深入淺出vue.js》)": "^4.28.3",        "webpack-cli": "^3.2.0"    }}使用命令:npm run build// npm run build -- --config webpack.config.my.js