vue-router路由和前端状态管理

一、路由简单四步走

通俗地说:路由是输入不同网址打开,显示不同内容 (即不同网址就是不同的路由)
专业地说:访问不同的路由,加载不同的组件

1、安装

npm install --save vue-router // 一定要在项目文件夹下安装

2、引用

import router from 'vue-router' //在入口文件main.js中引入,也可以是哪个文件用到,哪个文件引入
Vue.use(router)

此处一坑:router的引用,切记不能用npm 安装自带的 import router from './router',会报错

image.png

要换成 import router from 'vue-router' 即可

3、配置路由文件,并在 vue 实例中注入

var rt = new router({//配置路由
    routes:[{
        path:'/', //指定要跳转的路径
        components:HelloWorld //指定要跳转的组件
    }]
})

new Vue({//在 vue 实例中注入
    el: '#app',
    router:router,
    components: {App},
    template: ''
})

4、确定视图要加载的位置

 // 定义的是path对应的组件渲染的位置

二、路由的跳转



三、vue-router路由参数的传递

1、必须在路由内加入路由的name

2、必须在path后加上 /: 和 传递的参数

export default new Router({
  routes: [
    {
      path: '/helloworld/:worldmsg', //在path后加上  /: 和 传递的参数
      name: 'helloworld', //加入路由的name
      component: HelloWorld
    },
    {
      path: '/helloearth/:earthmsg',
      name: 'helloearth',
      component: HelloEarth
    }
  ]
})

3、传递参数

Hello Earth// to前面 切记加冒号(:)

4、接收参数(往哪个组件跳转,就是哪个组件接收)

$route.params.msg // msg是要传递的参数
//形式:..../helloworld/你好世界 
    

四、Axios中的get请求

1、axios定义
一个基于Promise 用于浏览器和nodejs 的 HTTP 客户端 ,它本身具有以下特征:

a、从浏览器中创建 XMLHttpRequest

b、从nodejs 发出 http 请求

c、支持Promise API

d、拦截请求和响应

e、转换请求和响应数据

f、取消请求

g、自动转换JSON数据

h、客户端支持防止 CSRF/ XSRF

2、axios 四步走

a、安装

npm install axios

b、引入加载

import axios from 'axios'

c、将axios 全局挂载到 VUE 原型上

Vue.prototype.$http= axios //$http名字随意

d、发出请求,以cnode社区API 为例

// 为给定的id 的 user 创建请求

getData(){//使用传统的function
    var self = this
    this.$http.get('https://cnodejs.org/api/v1/topics')
        .then(function(res){//此处的this 指向的不是当前vue 实例
            self.items = res.data.data
            console.log(res.data.data)
        })
        .catch(function(err){
            console.log(err)
        })
}


getData(){//使用es6
   this.$http.get('https://cnodejs.org/api/v1/topics') //请求
       .then(res =>{
            self.items = res.data.data
            console.log(res.data.data)           
       })
        .catch(err =>{
            console.log(err)
        })
}

小总结:Get 请求有三种方式:

a、没参数时,直接通过url

axios.get('https://cnodejs.org/api/v1/topics')

b、有参数时,两种传递参数形式

axios.get('https://cnodejs.org/api/v1/topics', {
    params: {//params 里面可以接多个对象
      id: 12345
    }
})
                                 //当前页码是第一页,且每页显示15
axios.get('https://cnodejs.org/api/v1/topics?page=1&limit=15', {
   id: 12345  //如果只有一个params,没有其他参数,可以这么简写
})

五、Axios中的post请求

postData(){ //在axios中,post请求接收的参数必须是form.data
   this.$http.post(url,qs.stringify({//所以这里用到 qs插件,用qs.stringify转换即可
        page:1,
        limit:20
   })).then(res =>{
      this.items = res.data.data //此处this指向的不是当前vue实例
      console.log(res)
   })
   .catch(err =>{
        console.log(err)
   })
 }

小总结:POST传递数据有两种格式:

a、form.data ?page=1&limit=48
b、x.www.form.urlencoded { page: 1,limit: 10 }

特别注意
在axios中,post请求接收的参数必须是form­data ,此时用到qs插件中的qs.stringify转换即可

你可能感兴趣的:(vue-router路由和前端状态管理)