最近有一个项目要快速出一个前端demo,选择了vue-element框架(虽然其实很想用react,但是为了求快)

本人的基础只有初级的html/css/js知识,和python后端的一些简单工作,和萌新没什么区别。

本文记录了一些开发过程中的体会。

mock axios vue的数据传递关系

vue的模板和数据绑定

// vue的 <template></template> 需要数据渲染
// 数据来自 vue的
<script>
export default {
data() {
return {
xxData:[] //数据来自这个data,可以直接写,但一般是取后端的数据来填充
}
}
}
</script>

在没有后端数据的情况下,先用Mock来模拟后端数据

my_get_data()里的res结构,和[后面的自定义函数](# 以下是getStatisticalData函数,根据需求可以完全自定义)对应

// 数据来自 vue的
<script>
// 自定义的一个get_data函数,用来绑定到vue的钩子函数
import {my_get_data} from 'xxx.js' export default {
data() {
return {
xxData:[] //数据来自这个data,可以直接写,但一般是取后端的数据来填充
}
}
}
mounted() { // vue的钩子函数,模板渲染好之后,挂在到某个DOM对象后调用。 和它类似的钩子函数还有 created()
my_get_data().then(res =>? {
// 获取返回的数据(详见)
const {code, data} = res.data
if (code
})
}
</script>

获取渲染需要的数据

vue代码中,自定义的get_data函数,一般来自 axios对某个URL地址的请求进行监听捕获

首先对axios进行二次封装,得到一个能快速得到axios request实例的类

(HttpRequest(baseUrl).request()可以得到添加好拦截器,配置好url地址的axios实例)

//该文件为 my_axios.js

import axios from 'axios'  // 标准axios
import config from '../config' //自定义的config文件,用来配置URL地址 // 对axios 进行二次封装, 将配置文件与axios进行结合。可以通过配置文件的改变来修改axios请求地址 // 根据配置文件config.js 来获取baseUrl
const baseUrl = process.env.Node_ENV === 'development' ? config.baseUrl.dev : config.baseUrl.pro // 用于配置axios的url地址,并自动增加拦截器
class HttpRequest {
// 初始化时,读取config文件中的baseurl
constructor(baseUrl) {
this.baseUrl = baseUrl
} // 获取已保存的baseurl(来自config文件)
getInsideConfig() {
const config = {
baseUrl: this.baseUrl,
header: {}
}
return config
} // 拦截器, 传入axios的实例(axios官方示例代码)
interceptor(instance) {
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
}); // 添加响应拦截器
instance.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
} // 封装请求
request(options) {
// 创建axios的实例
const instance = axios.create()
// 通过getInsideConfig(),获取已保存的config中的url
options = {
...this.getInsideConfig(),
...options
}
// 为axios实例添加请求和响应拦截器
this.interceptor(instance)
// 得到添加好拦截器,配置好url地址的axios实例
return instance(options)
}
} // HttpRequest(baseUrl).request()可以得到添加好拦截器,配置好url地址的axios实例
export default new HttpRequest(baseUrl)

以下是my_get_data的实现,是一个配置了具体url的axios实例。

这样,my_get_data()就能捕获来自url=/home/getData的请求结果了

import my_axios from './my_axios.js'

export const my_get_data = () => {
return my_axios.request({
url: '/home/getData' // axios对这个URL地址进行监听捕获
})
}

通过Mock模拟后端数据,作为 请求的结果,以/home/getData为例

可以通过Mock模拟,也可以直接利用后端数据,提供/home/getData 这个请求地址的结果

通过Mock模拟

import Mock from 'mockjs'
import homeApi from './mockServerData/home' // 新建一个mock,用于拦截/home/getData的请求
// 一旦有请求到这个地址,会返回getStatisticalData这个函数的内容
Mock.mock('/home/getData', homeApi.getStatisticalData)

以下是getStatisticalData函数,根据需求可以完全自定义

export default {
getStatisticalData: () => {
return {
code: 20000, //模拟的状态码
data:{
data1: [0, 1, 2],
data2: []
}
}
}
}

直接获取后端数据**

附:

学习视频(包括代码框架)来自 https://www.bilibili.com/video/BV1QU4y1E7qo?p=22

老师讲的内容比较符合我的项目,但是比较细的内容没有涉及(也许因为太基础了)

mock axios vue的数据传递关系的更多相关文章

  1. vue中使用axios(异步请求)和mock.js 模拟虚假数据

    一.使用axios 1.安装 npm install --save axios 2.引用 import Axios from 'axios' Vue.prototype.Axios = Axios 二 ...

  2. vue-cli+mock.js+axios模拟前后台数据交互

    最近工作不是很忙,自己做了一个vue的移动端的小项目,涉及到后台数据的时候,网上查阅了一些资料,因为是自己写的项目没有后台只能自己模拟数据,刚开始就自己写了一些静态数据后来觉得尽量模拟真实的比较好些, ...

  3. 前端笔记之Vue(七)Vue-router&axios&Vue插件&Mock.js&cookie|session&加密

    一.Vue-router(路由) 1.1路由创建 官网:https://router.vuejs.org/zh/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...

  4. vue项目中使用mockjs+axios模拟后台数据返回

    自己写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,于是在网上找了下,发现一个挺好用的模拟后台接口数据的工具:mockjs.现在把自己在项目中使用的方法贴出来   先看下项目的目 ...

  5. Vue小项目二手书商城:(二)axios前后端数据交互

    实现内容: 写路由接口(express) axios取数据 一.写接口 1.我们要在前端取到后端的数据(之前写的data.json)可以用vue-resourse或者用axios,在vue2之后官方就 ...

  6. vue使用axios请求后端数据

    1. 安装axios $ npm install axios 2.在main.js里面导入axios import axios from 'axios' Vue.prototype.$http = a ...

  7. vue脚手架用axios请求本地数据

    首先需要声明的是:本地请求,不用考虑跨域问题,这适用刚入坑的前端小白看,小白在做自己的项目时,通常都是用自己写的json数据,之后用axios请求过来,渲染到页面上. 1.cnpm install a ...

  8. 使用URLSearchParams处理axios发送的数据

    使用URLSearchParams处理axios发送的数据 在使用axios这个ajax插件的时候,我们有些时候会遇到一些问题,比如:数据格式不正确 以最简单的例子为基础(这里使用post方法): 在 ...

  9. 详解vue的数据binding原理

    自从angular火了以后,各种mv*框架喷涌而出,angular虽然比较火,但是他的坑还是蛮多的,还有许多性能问题被人们吐槽.比如坑爹的脏检查机制,数据binding是受人喜爱的,脏检查就有点…性能 ...

随机推荐

  1. Solution Set -「LOCAL」冲刺省选 Round XXIII

    \(\mathscr{Summary}\)   有一说一,虽然我炸了,但这场锻炼心态的效果真的好.部分分聊胜于无,区分度一题制胜,可谓针对性强的好题.   A 题,相对性签到题.这个建图确实巧妙,多见 ...

  2. 使用Jitpack发布开源Java库

    原文:使用Jitpack发布开源Java库 | Stars-One的杂货小窝 很久之前也写过一篇使用Jitpack发布Android开源库的文章,详见Android开发--发布第三方库到JitPack ...

  3. kubernetes集群之Pod说能不能让我体面的消亡呀?

    kubernetes集群之Pod说能不能让我体面的消亡呀? 由于 Pod 所代表的是在集群中节点上运行的进程,当不再需要这些进程时允许其体面地终止. 1.如果 preStop 回调所需要的时间长于默认 ...

  4. nginx加大缓存

    http { server { listen 0.0.0.0:81; server_name localhost; -- proxy_buffer_size 128k; proxy_buffers 3 ...

  5. Meterpreter后渗透阶段关闭防火墙与杀毒软件

  6. 把SQLAlchemy查询对象转换成字典

    1-假设查出来的为单个对象 1-1 在model.py中为模型对象添加字典转换函数: from exts import db class User(db.Model): __tablename__ = ...

  7. [旧][Android] Retrofit 源码分析之执行流程

    备注 原发表于2016.04.23,资料已过时,仅作备份,谨慎参考 前言 由于是第一次自己翻看源代码进行学习,加上基础不好,在看源代码的过程中简直痛苦不堪,但同时也暴露出了自己的许多问题.我觉得学习源 ...

  8. 企业为什么需要BI报表工具?

    企业一旦成规模运作起来,数据量是数以万计的,无论数据还是报表都需要协同管理不断更新.面对各大OA\ERP\CRM系统的数据,传统用Excel处理数据效率是很低下的.要想快速出报表,快速取数,快速做业务 ...

  9. 【代码编译器】vscode 配置详细介绍

    前言:运行环境.net6.0 C#10 安装.NET Core SDK和运行 官网下载地址:https://www.microsoft.com/net/download/core 安装.Net 4.7 ...

  10. Shell编程四剑客包括:find、sed、grep、awk

    一.Shell编程四剑客之Find Find工具主要用于操作系统文件.目录的查找,其语法参数格式为: find path -option [ -print ] [ -exec -ok command ...