Vuex 插件

Vuex 插件可以完成任意组件间信息交互(移动端)了解

  1. vuex是实现任何组件间的信息交互的,可以理解为全局的一个单例,为任何一个组件共享vue仓库里的数据

  2. 在任何一个组件的逻辑里,都可以访问仓库

    • 先在仓库里(store/index.js)定义变量,用来存储共享数据
    state: {
    info: '共享数据的初始值'
    },
    • 在组件逻辑中获取仓库值
    let 变量 = this.$store.state.info
    • 在组件逻辑中更新仓库值
    this.$store.state.info = '新值'

注:vuex通常运用在开发移动端项目,pc端项目可以用localStorege和sessionStorege数据库来替换

原因:vuex中的数据,会在页面刷新后,重置到store/index.js配置的默认值

前端存储数据汇总

  1. cookie:以字符串形式存储,数据有过期时间(过期时间到,数据失效吗,否则永远有效)
  2. localStorage:以对象形式存储,数据永久保存
  3. sessionStorage:以对象形式存储,生命周期同所属页面标签(页面不关闭,数据就有效)
  4. vuex(store):以对象形式存储,当页面刷新数据就重置(移动端不能刷新,所以只有应用大退才会重置)

前后台交互方式(重点)

  1. Form 表单方式

    • get | post 两种请求方式,get请求包含直接在浏览器中输入 url 回车后发送的请求
    • 该方式的特点是一定会发生页面的跳转(刷新页面叫本页跳转) - 后台决定页面路由
  2. Ajax 异步加载
    • get | post | patch | put | delete 等众多请求方式,请求的目的都是异步获取后台的数据
    • 该方式的特点是不会刷新页面,只是得到新的数据,前台自己完成页面的局部刷新、整体刷新、页面跳转 - 前台决定页面路由

注意:

  • 前后台不分离项目,采用form表单请求,可以完成页面跳转,同步ajax异步请求完成页面局部刷新

  • 前后台分离项目,不采用form表单请求,页面刷新、页面跳转的请求,都是由ajax完成,只不过页面跳转,后台相应的是跳转的目标url,前台再自己完成跳转

  • 前后台分离项目,前台也会出现大量的form表单,但是form表单的提交按钮,走的不是form表单的submit提交,而是ajax请求

axios 插件

完成前后台 Ajax 交互

1 安装:在前端项目根目录下的终端

cnpm install axios

2 项目配置:main.js

import axios from 'axios'
Vue.prototype.$axios = axios;

3 在任何一个组件的逻辑中,都可以访问 this.$axios()

beforeMount() {
this.axios({
url: '/login/',
method: 'post',
headers: {
authorization: 'jwt token',
},
params: { },
data: { }
}).then(response => {
response.data
}).catch(error => {
error.response.data
})

同源策略-跨域问题

1 django 默认是同源策略,所以前后台分离项目,访问 django 会出现 CORS 跨域问题的报错

2 什么叫跨域?

  • ip不同:前后台(两个服务器)不在一台主机上运行的
  • port不同:前后台(两个服务器)是相互独立的,运行在不同的端口之上
  • 协议不同:http与https之间也同样是跨域问题

注:三者满足一个,就是跨域

3 解决跨域

  • 伪装:将前台请求伪装成后台自己对自己发生的请求
  • 后台主动允许跨域:后台配置允许跨域即可(在响应头中处理)

4 Django 解决跨域

  • pip install django-cors-headers

  • 注册APP

    • INSTALLED_APPS = [
      ...
      'corsheaders'
      ]
  • 添加中间件

    • MIDDLEWARE = [
      ...
      'corsheaders.middleware.CorsMiddleware'
      ]
  • 允许跨域源

    • CORS_ORIGIN_ALLOW_ALL = True
      
      

前后台分离项目交互流程

  1. 启动前后台项目
  2. 前台配置页面路由,渲染前台页面 | 后台配置数据路由,响应数据(处理好跨域问题)
  3. 前台通过ajax请求后台接口
    • 将前台数据提交给后台
    • 得到后台的响应结果
    • 根据响应结果的数据,最后完成页面的局部刷新、整体刷新、页面跳转

异步请求细节

1 Vue 框架用 axios 完成 ajax 异步请求

语法:

this.$axios().then().catch();
$axios() 是请求逻辑 | then()是正常响应逻辑 | catch() 是错我响应逻辑

具体语法:

this.$axios({
url: '后台接口链接',
method: '请求方式',
params: {}, // url拼接参数
data: {}, // 数据包参数
headers: {} // 请求头参数
}).then(response => {
// response是http状态2xx的响应结果,响应数据是response.data
}).catch(error => {
// error是http状态4xx、5xx的响应结果,错误响应对象是error.response,错误响应数据是error.response.data
})

2 前台提交数据的两种方式

url 拼接参数:

所有请求都拥有的提交数据的方式

该方式会将数据在请求 url 后用 ‘ ?’ 拼接的方式提交给后台

提交数据只能采用 url 字符串方式提交后台,数据是不安全的

axios 插件可以用 params 属性携带 url 拼接参数

数据包参数

除 get 请求外的所有请求都拥有的提交数据的方式

该方式会将数据进行加密,打包成数据包方式提交给后台

打包加密数据有三种方式:urlencoded(form默认的方式)、form-data(可以提交文件)、json(提交json数据)

axios 插件可以用 data 属性携带数据包参数

注意项

1 this.$axios({}).then(response => {}).catch(error => {}) 中的then和catch回调函数,不能写function,因为实际vue项目开发,一定会在回调逻辑用到this语法(代表vue对象),而在function中使用了this语法,function就不是普通函数了(可以理解为类,this就不能代表vue对象了)

2 原生django没有提供所有类型的数据包数据解析规则,但是数据会在request.body中,可以自己解析;Django-rest-framework框架是提供了三种类型的数据包参数解析

Element-ui 插件

element-ui就类似于BootStrap框架,前者是在vue项目中运用,后者是在原生项目中运用,当然也可以在vue项目中运用

环境搭建:

1安装:在前端项目根目录下的终端

cnpm install element-ui

2 配置: main.js

import ElementUI from 'element-ui'
Vue.use(ElementUI);
import 'element-ui/lib/theme-chalk/index.css';

3 使用:根据官方 API 接口

jQ + Bs插件

jQuery环境搭建:

1 安装:在前端项目根目录下的终端

  • cnpm install jquery

2 配置:自己在项目根目录下新建 vue.config.js

const webpack = require("webpack");
module.exports = {
configureWebpack: {
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.$": "jquery",
"window.jQuery": "jquery",
Popper: ["popper.js", "default"]
})
]
}
};

Bootstarp 环境搭建

1 安装:在前端项目根目录下的终端

cnpm install bootstarp@3

2 配置:自己在根目录下新建 vue.config.js

import BootStrap from "bootstrap"
import "bootstrap/dist/css/bootstrap.css"
Vue.use(BootStrap)

Django 国际化配置

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

总结

1 vuex

​ 仓库,拥有组件传参

​ 前台存储数据位置:cookie、localStorage、sessionStorage、vuex

2 axios

​ 配置:安装 => 配置给Vue.prototype.$axios

​ 使用:this.$axios({}).then(response => {}).catch(error => {})

​ 两种请求:form(页面跳转,前后台不分离) | ajax(只刷新数据,所有类型项目都可以)

​ 前后台分离项目工作流程:前台启动提供页面 => 后台启动提供数据 => 前台渲染页面并请求后台数据

​ 请求方式:get、post、patch、put、delete...

​ 请求数据:

​ url 拼接数据:所有请求都可以携带

​ 数据包数据:只有get不能携带

​ 数据包三种格式:urlencoded、form-data、json

3 element-ul

提供布局

4 jQuery + Bootstarp

提供布局

Vue 前后台交互,插件的更多相关文章

  1. VUE前后台分离

    VUE前后台分离 配置js环境 jQuery >: cnpm install jquery vue/cli 3 配置jQuery:在vue.config.js中配置(没有,手动项目根目录下新建) ...

  2. python前后台交互相关配置

    全局配置:全局样式.配置文件 在js下创建setting.js ,配置全局的settings.js import settings from '@/assets/js/settings' Vue.pr ...

  3. 前后台交互经常使用的技术汇总(后台:Java技术,前台:Js或者Jquery)

    1:由于针对特定的前后台交互用到的知识总结,所以不大量贴代码,主要给出思路,方便自己以后脑补和技术总结,当然也希望可以帮助到别人. 后台Json和其他格式转化,之前总结过Json和对象,集合,字符串的 ...

  4. 基础框架整合-ssm框架+前后台交互完整教程

    1.基本概念 ssm:spring+springMVC+mybatis 2.开发环境 Eclipse mars + jdk1.7 + maven + tomcat7 3.使用maven构建web项目 ...

  5. [vue]初探vue生态核心插件Vuex

    为什么会有 Vuex 这个东西 ? 一个应用内部运行的机制,事件 -> 状态 -> UI,我们的前端常常会因为这两个过程而产生大量代码,从而变得难以维护. vue的声明式渲染,解决了从 状 ...

  6. Vue ---- ajax cookies 插件安装 跨域问题 element-ui bootscript 导入

    目录 补充: 流式布局样式 Django国际化配置 Django的TODO注释 Vue的ajax插件:axios 安装 配置 如何使用? Vue的cookies插件:cookies 安装: main. ...

  7. Vue --- 前后台总结

    请求生命周期: 1.先请求路由,在去替换APP.vue中的router-views 2.@表示src 3.加载全局css: require('@/assets/....') 4.获取当前路由 this ...

  8. 10 个基于 jQuery 的 Web 交互插件推荐

    英文原文:10 jQuery for Web Interaction Plugins “用户交互”在现代的 Web 设计中占据了很大比例,这是互联网产品不可或缺的关键,对 Web 设计师也提出了更高的 ...

  9. Devexpress 使用经验 —— ASPxGridView前后台交互写法推荐

    这里的格式是仁者见仁智者见智,这篇随笔只是我在工作过程中总结出的阅读性高,对我来说效率较高的写法. ASPX: <dx:ASPxGridView ID="ASPxGridViewLin ...

随机推荐

  1. 安洵杯iamthinking(tp6反序列化链)

    安洵杯iamthinking tp6pop链 考点: 1.tp6.0反序列化链 2.parse_url()绕过 利用链: 前半部分利用链(tp6.0) think\Model --> __des ...

  2. spark实验(二)--scala实验(3)

    实验1,计算级数: 首先打开安装完scala ide的eclipse,在eclipse 中新建一个scala project. 然后新建一个scala的object对象 导入scala.io.StdI ...

  3. JDBC statement的常用方法

    Statement接口: 用于执行静态SQL语句并返回它所生成结果的对象. 三种Statement类: Statement: 由createStatement创建,用于发送简单的SQL语句(最好是不带 ...

  4. numpy中的max()函数

    1.ndarray.max([int axis]) 函数功能:求ndarray中指定维度的最大值,默认求所有值的最大值. axis=0:求各column的最大值 axis=1:求各row的最大值

  5. windows 配置hadoop环境

    在idea运行spark程序的时候报错:java.io.IOException: Could not locate executable null\bin\winutils.exe in the Ha ...

  6. Spring Boot RestApi 测试教程 Mock 的使用

    测试 Spring Boot Web 的时候,我们需要用到 MockMvc,即系统伪造一个 mvc 环境.本章主要编写一个基于 RESTful API 正删改查操作的测试用例.本章最终测试用例运行结果 ...

  7. 树莓派 Ubuntu mate 16.04 下开启vncserver(自动启动+改分辨率)

    树莓派 Ubuntu mate 16.04 下开启vncserver(自动启动+改分辨率) 参考博文:https://blog.csdn.net/Mr_dhy/article/details/8282 ...

  8. 栈的python实现

    栈,又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底. 向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到栈顶元素的上 ...

  9. django-实现登录短信验证

    功能演示 核心任务 前端功能: 点击按钮Ajax调用发送验证码功能 输完验证码后Ajax调用验证功能 后端功能: 功能1:发送验证码功能 功能2:验证码检查 后台核心逻辑(不需要手写) 功能3:发短信 ...

  10. 计算机网络 - TCP/IP模型

    图片来自网上资料