router路由页面

<template>

  <div id="app">

    <button @click="replaceFn">替换当前页面到登录页</button>

    <div id="nav">

      <!-- router-link也是一个组件 to跳转到router/index.js

      中的path路径 -->

      <router-link to="/">Home</router-link> |

      <!-- 链接高亮是否 和to后面的地址包括传参有关 -->

      <router-link :to="{ name: 'About', query: { id: 1 } }">About</router-link>

      |

      <!-- router-link跳转 配合name使用第二种跳转方式 -->

      <router-link :to="{ name: 'Login' }">Login</router-link> |

      <!-- <router-link :to="{name:'My'}">My</router-link> -->

      <!-- <router-link :to="{path:'/my'}">My</router-link> -->

      <router-link to="/my">My</router-link>

    </div>

    <!-- router-view 是视图渲染时候的容器

    你的组件渲染在哪里? 就是渲染在router-view组件的位置 -->

    <router-view />

  </div>

</template>

<script>

/* 在脚手架中 .js可以省略 */

import obj from "./config/eobj";

export default {

  name: "App",

  created() {

    obj.age = "29";

  },

  methods:{

    replaceFn(){

      /* replace会把当前页面替换 并不会产生历史记录 */

      this.$router.replace('/login')

      /* 使用原生的方式 地址需要写全,就包括了域名和端口

      在开发环境中域名和端口是 开发环境http://localhost:8080/ */

      /* 而生产环境的地址 是 http://aabbcc:3000/   */

      /* 如果这是使用原生就需要 把之前的开发环境地址再改成生产环境

      非常麻烦,所以推荐使用this.$router.replace的方式   */

      // location.replace('http://localhost:8080/#/login')

      /* 原生的跳转页面 也是同样的道理 需要把地址写全

      不太方便,推荐使用this.$router.push */

      // this.$router.push('/login')

      // location.href = 'http://localhost:8080/#/login'

    }

  }

};

</script>

<style>

#app {

  font-family: Avenir, Helvetica, Arial, sans-serif;

  -webkit-font-smoothing: antialiased;

  -moz-osx-font-smoothing: grayscale;

  text-align: center;

  color: #2c3e50;

}

#nav {

  padding: 30px;

}

#nav a {

  font-weight: bold;

  color: #2c3e50;

}

/* 路由是由a链接构成的 路由切换的时候

   a标签上自动会加上class .router-link-exact-active */

/* 通过这个.router-link-exact-active就可以修改路由的显示样式 */

#nav a.router-link-exact-active {

  color: red;

}

</style>


login页面

<template>

  <div>

    <h1 class="login-bg">登录页</h1>

    <h2>{{msg}}</h2>

    <button @click="goHome">返回登录页</button>

    <br><br>

    <button @click="goAbout(1)">返回About页1</button> &nbsp;&nbsp;

    <button @click="goAbout(2)">返回About页2</button>

    <br><br>

    <button @click="goMy(30)">返回My1页</button> &nbsp;&nbsp;

    <button @click="goMy(50)">返回My2页</button>

    <br><br>

    <router-link :to="{name:'My',params:{age:30} }">返回My1页</router-link>

    &nbsp;&nbsp;

    <router-link :to="{name:'My',params:{age:50} }">返回My2页</router-link>

  </div>

</template>

<script>

import obj from '../config/eobj'

/* 无论是使用在js中使用import './Login.css'的方式

还是在css中使用@import url(./Login.css); 都会对全局造成影响

如果一定要把样式抽离开,请把不同的组件的类名起的不一样 */

import './Login.css'

export default {

  name:"Login",

  data(){

    return {

      msg:obj.age

    }

  },

  methods:{

    goHome(){

      console.log(this.$router);

      /* 路由跳转的第一种方式 */

      // this.$router.push('/')

      /* 路由跳转的第二种方式 */

      this.$router.push({name:"Home"})

    },

    goAbout(i){

      /* 在url上携带参数跳转到about页面 */

      // this.$router.push({name:"About",query:{id:i}})

      /* 使用path 是可以使用query传参 */

      this.$router.push({path:"/about",query:{id:i}})

    },

    goMy(i){

      console.log(i);

      /* 使用params跳转并且传参的方式,不会把参数携带在url上 */

      this.$router.push( { name:"My",params:{age:i} } )

      /* ★ params传参 (无论是否使用router-link的方式) 使用path的方式 不能实现 必须要使用name的方式 */

      /* this.$router.push({path:"/my",params:{age:i} }) */

    }

    /* 写两个按钮  通过传参的不同 跳转到对应的页面显示不同的内容 */

  }

}

</script>

<style scoped>

/* scoped限制不了@import url(./Login.css); 导入文件的方式 */

  /* @import url(./Login.css); */

  /* .bg{

      background:greenyellow

  } */

</style>

my页面


<template>

  <div>

      <button @click="goBack">返回上一页</button>

      <h1 class="my-bg">My的信息页</h1>

      <h2>{{msg}}</h2>

  </div>

</template>

<script>

export default {

    name:"My",

    data(){

        return {

            msg:""

        }

    },

    methods:{

        goBack(){

            /* 返回上一页 this.$router.go(-1) */

            this.$router.go(-1)

        }

    },

    created(){

        /* 使用$route来获取params上的参数信息 */

        console.log(this.$route)

        /* 判断 age 30 大于25 小于 50 显示 你还年轻

        传 age  50 大于50  显示你有点老了 */

        let age = this.$route.params.age;

        if(25<age&&age<50){

            this.msg = '你还年轻'

        }

        if(age>=50){

            this.msg = '你有点老了'

        }

    }

}

</script>

<style>

</style>


main.js页面


import Vue from 'vue'

import App from './App.vue'

import axios from 'axios'

/* 导入了路由 把默认的index.js文件省略了 */

import router from './router'

var instance = axios.create({

  baseURL: 'http://timemeetyou.com:8889/api/private/v1/',

  timeout: 1000,  

  headers: {'Authorization': localStorage.token}

});

/* 请求拦截 */

instance.interceptors.request.use(function (config) {

  return config;

}, function (error) {

  return Promise.reject(error);

});

/* 响应拦截 */

instance.interceptors.response.use(function (response) {

  return response.data;

}, function (error) {

  return Promise.reject(error);

});

Vue.prototype.$axios = instance;

Vue.config.productionTip = false

/* 把导入的实例化对象router传入了Vue的配置项中 */

new Vue({

  router,

  render: h => h(App)

}).$mount('#app')

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • 1.mvvm 框架是什么? 定义:M:Model(服务器上的业务逻辑操作) V:View(页面)VM:ViewMo...
  • Vue Router 是Vue.js[http://cn.vuejs.org/]官方的路由管理器。它和 Vue.j...
    SY阅读 582评论 0 0
  • 一、前端路由和后端路由 1.1 路由 路由就是通过互联的网络把信息从源地址传输到目的地址的活动。在Web的路由中,...
    怪兽难吃素阅读 1,659评论 0 7
  • 使用 Vue.js 做项目的时候,一个页面是由多个组件构成的,所以在跳转页面的时候,并不适合用传统的 href,于...
    sean_liu_01阅读 1,451评论 0 1
  • 1、搭建vue脚手架2、通过vue脚手架,我们搭建好了基础的vue,接下来就开始使用vue-cli来构建基础路由项...
    world_7735阅读 601评论 0 2