vue --- 關於多個router-view視圖組件,渲染同一頁面


 

vue.js多視圖的使用,可以提高網頁組件化,模塊化

比如使用多視圖,可以將網站頁面封裝header、footer、navbar等多個公共部分,
遇到修改公共部分的文案信息等數據的時候,不再需要逐一修改每個頁面;只需要修改各個不同文件引用的唯一對應的視圖文件即可完成所有效果的自動更新,
更便捷,更省時,更省力地去管理網站的不同版塊。
--------------------- 

總結說明:
  1.以前可以一次性放一個坑對應一個路由和顯示一個組件
     a. 一次行為 = 一個坑 + 一個路由 + 一個組件
     b. 一次行為 = 多個坑 + 一個路由 + 多個組件
  2.components多視圖 是一個對象,對象內多個key和value
     a. key對應視圖的name屬性
     b. value就是要顯示的組件對象
  3.多個視圖(name屬性省略與否)
     省略: <router-view></router-view> —— name就是default
     不省略: <router-view name='xxx'></router-view> —— name就是xxx
---------------------

效果圖預覽:

相關文件代碼如下:

1. main.js文件

import Vue from 'vue';
import VueRouter from 'vue-router';
//引入主體(頁面初始化顯示)
import App from './components/app.vue';
//一個個link對象 - 分類
import Header from './components/header.vue';
import Footer from './components/footer.vue';
/*

//注冊全局頭部、底部組件
Vue.component('headerVue',Header);
Vue.component('footerVue',Footer);


*/

//安裝插件
Vue.use(VueRouter);//掛載屬性

//創建路由對象並配置路由規則
let router = new VueRouter({
    //routes
    routes: [
    //一個個link對象
    {
        path: '/',
        components: { // key => value
            header: Header,
            default: Footer, //默認省略不寫name的情況
            footer: Footer
        }
    }

  ]
});

// new Vue 啟動 
new Vue({
  el: '#app',
  render: c => c(App),
  //讓vue知道我們的路由規則
  router:router,//可以簡寫為router
})
--------------------- 

2. app.vue文件

<template>
  <div>
    <header-vue></header-vue>
    <hr />
        <!--留坑,非常重要-->
            <router-view class="main" name="header"></router-view>
            <router-view class="main"></router-view><!--name省略表示name='default'-->
            <router-view class="main" name="footer"></router-view>
        <hr />
        <footer-vue></footer-vue>



  </div>
</template>

<script>
    export default {
      data(){
        return{

        }
      },
      methods:{

      }
    }
</script>

<style scoped>
    .main{height: 100px;}
</style>
--------------------- 

3. header.vue文件

<template>
    <div>
        我是頭部        
    </div>
</template>

<script>
    export default{
        data(){
            return{

            }
        },
        methods:{

        }
    }
</script>

<style scoped>  
</style>

--------------------- 

4. footer.vue文件

<template>
  <div>
    我是底部    
  </div>
</template>

<script>
    export default {
      data(){
        return{

        }
      },
      methods:{

      }
    }
</script>


<style scoped>
</style>
--------------------- 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM