Vue前端挂载对象时一些思考
最近,在Vue前端调试http请求,无论如何如何也是拦截不了某些http请求。场景是这样的:Java后端组装好Vue对象,然后送到前端,前端通过id来挂载该Vue对象,而该对象中有上传文件或者图片的控件,正是对这些控件的http请求是无法拦截的,所以导致没发设置请求头信息。后来经过对这一场景的梳理,有了一些心得,现记录如下。
在Vue前端开发时,可以通过id来挂载Vue对象,从而展示界面;要是这种对象都是在前端生成的话,那么处理起来很方便;要是该对象是从后端通过Java组装生成的并传输过来的话,那么有些地方或者是细节方面就需要注意了;现列举如下,以供后续参考,下面所说的Vue对象都来自后端组装生成而来。
(1)在该Vue对象中所有的http请求都不要直接采用axios对象,而是采用this.$http的方式,注意了$http是主工程中Vue的一个全局属性,可以在主工程中这样添加:Vue.property.$http = axios;在被挂载的Vue对象为啥要用全局方式this.$http呢?这样做的好处是方便被主工程的拦截器拦截,同时也可以继承主工程的请求头信息;若是直接采用axios对象的话,那么在主工程中是无法拦截的,更没发继承主工程的请求头信息了。
(2)在该Vue对象中若是需要一些额外的数据,可以通过全局属性获取,也可以通过Vue对象的属性来绑定,最好是通过一个对象的方式来绑定属性。
(3)在该Vue对象中若是用到element的upload组件的话,那么该http请求是不会被主工程拦截器所拦截的,并且也不会继承主工程中的请求头信息;所以当需要相关的请求头信息时要买通过全局属性来获取,要么通过数据绑定来获取;建议还是通过数据绑定来处理比较合适,比如说需要请求头信息,可以在被挂载的Vue对象中建立一个headers属性,类型为Object,默认值为{},这样在挂载主工程某个节点时可以通过数据绑定headers属性来传给被挂载的Vue对象,以后需要添加请求头信息,只要在主工程中添加然后绑定给headers属性就可以了,而被挂载的Vue对象根本就不用感知有哪些请求头信息,它只负责填充和传输。
此外,在Vue中添加对http的拦截器,可以参考下面示例:
import axios from 'axios'
axios.interceptors.request.user(function(config)) {
// 这里可以进行请求之前的处理
}
axios.interceptors.response.user(function(config)) {
// 这里可以进行响应之后的处理
}
------20191225闪
Vue前端挂载对象时一些思考的更多相关文章
- Vue之挂载点、变量、事件、js对象、文本指令、过滤器、事件指令和属性指令
1.vue导入-挂载点 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...
- vue中,对象数组多层嵌套时,更新数据更新页面
vue中的对象和数组的元素直接赋值修改时,是不能响应到view中去的 1.对象更新 this.a={title:'列表1’}; this.a.title='列表2’; <h1>{{a.ti ...
- vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象合并到总的对象,再提交
vue validate多表单验证思考 之前写过一个里外层,现在觉得不合适,应该平行的写,然后都给ret,最后判断ret 再做出反应,这样整体表单的所有验证就都报验证,然后最后提交的时候把组件内的对象 ...
- vue 前端框架 (三)
VUE 生命周期 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- vue前端框架面试问题汇总
1.active-class是哪个组件的属性?嵌套路由怎么定义?答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答: ...
- Vue前端框架面试问题
1.active-class是哪个组件的属性?嵌套路由怎么定义? 答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答 ...
- Vue前端框架基础+Element的使用
前置内容: AJAX基础+Axios快速入门+JSON使用 目录 1.VUE 1.1 概述 1.2 快速入门 1.3 Vue指令 1.3.1 v-bind & v-model 指令 1.3.2 ...
- Vue路由开启keep-alive时的注意点
Vue路由开启keep-alive时的注意点 这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了 ke ...
- Vue的实例对象(三)
一.创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 当创建一个 Vue 实例时,你可以传入 ...
随机推荐
- 珠峰-6-koa-express
#### 这里写await和return 的区别是, await后边还可以写代码,而return 不会. ##### koa这里需要注意 这样子方法1比起方法2,少写n个url类似这样的key.
- h5笔记1
1.HTML中不支持 空格.回车.制表符,它们都会被解析成一个空白字符 2.适用于大多数 HTML 元素的属性: class 为html元素定义一个或多个类名(classname)(类名从样式文件引入 ...
- NCE L3
单词 课文
- StarUML之六、StarUML规则与快捷键
本章内容参考官网即可,不做详细说明,实践出真知! starUMl规则主要是在模型设计的约束条件 https://docs.staruml.io/user-guide/validation-rules ...
- Policy-based Approach(基于策略的方法)
step 1:Neural Network as Actor step 2:goodness of function(训练一些Actor) 是一个序列,包含T个状态s.行为a.奖励s.代表某一次的开始 ...
- 怎样将应用程序快捷方式添加到win10开始菜单栏中去
怎样将应用程序快捷方式添加到win10开始菜单栏中去 找到需要固定的应用程序的安装文件的位置,右键,在弹出的菜单中选择“固定到开始屏幕”即可. 或者是找到需要固定到开始菜单的应用程序的快捷方式,右键, ...
- vue搭建手顺
1.环境准备:node.js vue-cli: $ npm install vue-cli -g 2.建立项目目录:vuedemo,并cd到该目录下 3.$ vue init webpack vu ...
- Oracle修改用户Profile SESSIONS_PER_USER 限制
一.Profile目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如 ...
- CommonJs模块化(nodejs模块规范)
1.概述: Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. 如果想在多个 ...
- es5和es6中如何处理不确定参数
场景:求出不定参数的总数和 //利用arguments function sum () { let num = 0 //Array.prototype.forEach.call(arguments,f ...