Vue入门教程 第六篇 (路由、axios)


路由

Vue.js 路由需要载入 vue-router 库。

npm安装:

 npm install vue-router 

使用范例:

 1 // router/index.js
 2 import Vue from 'vue'
 3 import Router from 'vue-router'
 4 import Login from '@/pages/login'
 5 import Home from '@/pages/home'
 6 
 7 Vue.use(Router)
 8 const router = new Router({
 9   routes: [
10     {
11       path: '/',
12       name: 'login',
13       component: Login
14     },
15     {
16       path: '/home',
17       name: 'home',
18       component: Home,
19       meta: {//meta是拓展,默认为空
20         privilegeLevel: 1//自定义字段,此处用来表示访问的权限级别
21       }
22     }
23   ]
24 })
25 
26 export default router;

其中,path是url路径,name是路由名称,component是组件,meta是拓展属性,可以自定义。

拓展知识

router为VueRouter的实例,相当于一个全局的路由器对象,利用它我们可以实现页面跳转。

不带参数

1 this.$router.push('/home')
2 this.$router.push({name:'home'})
3 this.$router.push({path:'/home'})

query传参

1 this.$router.push({name:'home',query: {id:'1'}})
2 this.$router.push({path:'/home',query: {id:'1'}})
3 // html 取参 $ route.query.id
4 // script 取参 this.$ route.query.id

params传参

 1 this.$ router.push({name:'home',params: {id:'1'}}) // 只能用 name
 2 
 3 // 路由配置 path: "/home/:id" 或者 path: "/home:id" ,
 4 
 5 // 不配置path ,第一次可请求,刷新页面id会消失
 6 
 7 // 配置path,刷新页面id会保留
 8 
 9 // html 取参 $ route.params.id
10 
11 // script 取参 this.$ route.params.id

query和params区别:

query类似 get, 跳转之后页面 url后面会拼接参数,类似?id=1, 非重要性的可以这样传, 密码之类还是用params刷新页面id还在

params类似 post, 跳转之后页面 url后面不会拼接参数 , 但是刷新页面id 会消失。

axios(ajax)

Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。axios作用与ajax一致,但是实用性更强。

npm安装:
 npm install axios 

Get

 1 axios
 2  .get('https://127.0.0.1/user',
 3  {
 4   params: {//参数
 5           userId:1,
 6           password:123345
 7           }
 8  })
 9  .then(response => {
10  //response是返回结果
11  })
12  .catch(function (error) { // 请求失败
13    console.log(error);
14  });

Post

 1 axios
 2  .post('https://127.0.0.1/user',
 3  {//参数
 4   userId:1,
 5   password:123345
 6  })
 7  .then(response => {
 8  //response是返回结果
 9  })
10  .catch(function (error) { // 请求失败
11    console.log(error);
12  });

所有请求方式:

  • axios.request(config)
  • axios.get(url[, config])
  • axios.post(url[, data[, config]])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.put(url[, data[, config]])
  • axios.patch(url[, data[, config]])

响应结果(response对象):

1 axios.get("/user")
2   .then(function(response) {
3     console.log(response.data);//由服务器提供的响应
4     console.log(response.status);//HTTP 状态码
5     console.log(response.statusText);//来自服务器响应的 HTTP 状态信息
6     console.log(response.headers);//服务器响应的头
7     console.log(response.config);//为请求提供的配置信息
8   });

axios默认值

当我们需要大量使用axios的时候,如果每次都要书写冗余的配置将会耗费时间且不易管理,axios允许设置默认配置,可以在调用时不再逐一设置。
全局:

1 //默认访问的后端服务器url
2 axios.defaults.baseURL = 'http://127.0.0.1:3000/';
3 axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
4 //post的默认数据类型
5 axios.defaults.headers.post['Content-Type'] = 'application/json';

自定义(使用新实例覆盖全局设置):

1 // 创建实例时设置配置的默认值
2 var instance = axios.create({
3 baseURL: 'http://127.0.0.1:3001/'
4 });
5 instance.defaults.timeout = 2500;
6 instance.get('/longRequest', {
7 timeout: 5000// 为已知需要花费很长时间的请求覆写超时设置
8 });