天天看点

vue 获取url地址的参数_总结vue问题

(1)、vue的面试题

2018 vue前端面试题 - 实现丰盛 - 博客园​www.cnblogs.com

vuex实现购物车效果

https://blog.csdn.net/qq_35430000/article/details/79916110​blog.csdn.net

vue 动态路由传值

vue动态路由配置,vue路由传参 - 编程让我快乐 - 博客园​www.cnblogs.com

vue 获取url地址的参数_总结vue问题

vue动态路由配置,vue路由传参动态路由:

  当我们很多个页面或者组件都要被很多次重复利用的时候,我们的路由都指向同一个组件,这时候从不同组件进入一个"共用"的组件,并且还要传参数,渲染不同的数据

  这就要用到动态路由跟路由传参了!

首先我们来了解下router-link这个组件:

  简单来说,它是个导航器,利用to属性导航到目标组件,并且在渲染的时候会自动生成一个a标签,当然官方也有说明,加个tag标签属性就可以渲染不同的标签,可以浏览器端查看到

  并且当一个导航器被激活的时候,会自动加上一个css的激活样式,可以全局在路由配置中设置linkActiveClass属性,属性名就是样式css名,一般写为active

  现在基本了解了router-link,先讲一下动态路由配置吧

我们在配置路由的时候,将目标组件的路径先配置好,如:

vue 获取url地址的参数_总结vue问题

比如多个路由都要进入List组件,这时候在配置路由路径后加个:id(id可随便取名,标识),这个属性id可以在$route.params.id中获取,例如:

vue 获取url地址的参数_总结vue问题

当前这个child组件要进入,以上配置的id就等于on;这时候在List组件中打印出$route.params.id就可以得到这个属性值on

vue 获取url地址的参数_总结vue问题

这个时候,不同组件进入同一目标组件时就可以得到标识跟备注了,也可以利用这个来传递一些正常的参数

接着往下看,带参数的路由,跟获取传来的参数值

当router-link被激活点击时,会将当前的to的值push到router对象当中(路由栈),所以这个值可以是string也可以是obj

传参数的时候,我们就写成对象的形式,用到v-bind的js表达式

vue 获取url地址的参数_总结vue问题

此时整个的理解可以为:我是child组件过来的,而且我还带来了我的名字,我叫child

在List组件当中去获取这个参数值跟id的值

vue 获取url地址的参数_总结vue问题
vue 获取url地址的参数_总结vue问题

如果是不同的组件过来的,可以设置不同的id值,只要在目标组件获取属性id的值就可以了,参数就利用query.属性值来获取

3、axios和ajax的区别

1.区别 axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样。 简单来说: ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装。 axios是ajax ajax不止axios。

Ajax:

Ajax 即“

A

synchronous

J

avascript

A

nd

X

ML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

$.ajax({
            url: 'http://jsonplaceholder.typicode.com/users',
            type: 'get',
            dataType: 'json',
            data: {
                //'a': 1,
                //'b': 2,
            },
            success: function (response) {
                console.log(response);
            }
        })
           
axios:

用于浏览器和node.js的基于Promise的HTTP客户端

1. 从浏览器制作XMLHttpRequests

2. 让HTTP从node.js的请求

3. 支持Promise API

4. 拦截请求和响应

5. 转换请求和响应数据

6. 取消请求

7. 自动转换为JSON数据

8. 客户端支持防止XSRF

axios({
            url: 'http://jsonplaceholder.typicode.com/users',
            method: 'get',
            responseType: 'json', // 默认的
            data: {
                //'a': 1,
                //'b': 2,
            }
        }).then(function (response) {
            console.log(response);
            console.log(response.data);
        }).catch(function (error) {
            console.log(error);
        })
           

2.优缺点: ajax: 本身是针对MVC的编程,不符合现在前端MVVM的浪潮 基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案 JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务 axios: 从 node.js 创建 http 请求 支持 Promise API 客户端支持防止CSRF

三、vuejs中引入项目中的静态文件,需要用

require
{
              name: "xx",
              icon: require("./assets/img/hstpBox/shebeiguanli.png"),
            }
           

四、请求后台的接口封装的

import axios from './request.js'
import qs from 'qs';

export function getAjax(url, params = {}) {
  return new Promise((reslove, reject) => {
    axios.get(url, {
        params: params
      })
      .then(res => {
        reslove(res);
      })
      .catch(err => {
        if (err.response) {
          this.$message({
            type: 'error',
            message: err.response.data.message
          });
        }
        reject(err)
      })
  })
}

export function postAjax(url, params = {}) {
  return new Promise((reslove, reject) => {
    axios.post(url, params, {
        headers: {
          'Content-Type': 'application/json'
        }
      })
      .then(res => {
        reslove(res);
      })
      .catch(err => {
        if (err.response) {
          this.$message({
            type: 'error',
            message: err.response.data.message
          });
        }
        reject(err)
      })
  })
}

export function postAjaxS(url, params = {}) {
  return new Promise((reslove, reject) => {
    axios.post(url, qs.stringify(params), {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
      })
      .then(res => {
        reslove(res);
      })
      .catch(err => {
        reject(err)
      })
  })
}

export function putAjax(url, params = {}) {
  return new Promise((reslove, reject) => {
    axios.put(url, qs.stringify(params), {
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
      })
      .then(res => {
        reslove(res);
      })
      .catch(err => {
        reject(err)
      })
  })
}

export function http(url, type, headers, params = {}) {
  return new Promise((reslove, reject) => {
    console.log(headers)
    axios({
      url: url,
      method: type,
      data: params,
      headers: {
        'Content-Type': headers
      },
    }).then(res => {
      reslove(res)
    }).catch(err => {
      if (err.response) {
        this.$message({
          type: 'error',
          message: err.response.data.message
        });
      }
      reject(err)
    })
  })
}


调取方式

that
        .$pSAjax(
          this.url +
            `xxxx?currPage=${currPage}&pSize=${pSize}&pContent=${pContent}`
        )
        .then(res => {
          if (res.resultCode == "success") {
            that.tableData = res.data.list;
            that.totalDataNumber = res.data.totalSize;
          } else {
            this.$message({
              message: "获取数据失败",
              type: "error",
              showClose: true,
              duration: 3000
            });
          }
        })
        ["catch"](() => {
          this.$message({
            message: "获取数据失败",
            type: "error",
            showClose: true,
            duration: 3000
          });
        });
           

继续阅读