vue3-环境变量-JavaScript-axio-基础使用-lzstring-字符串压缩-python

news2025/2/28 0:01:29

文章目录

  • 1.Vue3环境变量
    • 1.1.简介
    • 1.2.全局变量的引用
    • 1.3.package.json文件
  • 2.axio
    • 2.1.promise
    • 2.2.安装
    • 2.3.配置
      • 2.3.1.全局 axios 默认值
      • 2.3.2.响应信息格式
    • 2.4.Axios的拦截器
      • 2.4.1.请求拦截器
      • 2.4.2.响应拦截器
      • 2.4.3.移除拦截器
      • 2.4.4.自定义实例添加拦截器
  • 3.lz-string
    • 3.1.javascript压缩之后转为base64
    • 3.2.python压缩之后转为base64
  • 4.总结

1.Vue3环境变量

1.1.简介

在项目的根目录下创建.env文件,在Vue项目的根目录下:
创建一个.env文件,用于存储全局环境变量。
创建一个.env.production文件,用于存储生产环境的配置。
创建一个.env.development文件,用于存储开发环境的配置。
在这里插入图片描述

.env.development:开发环境下的配置文件,执行npm run serve命令,会自动加载.env.development文件.
.env.production:生产环境下的配置文件,执行npm run build命令,会自动加载.env.production文件.

1.2.全局变量的引用

通过cli加载env,配置中名字需要以VUE_APP开头,如:

process.env.变量名

定义:

# 后端接口地址及端口(域名)
VUE_APP_API = "http://127.0.0.1:8000"

使用:

// 创建axios实例对象
const service = axios.create({
  baseURL: process.env.VUE_APP_API,
});

1.3.package.json文件

{
  "name": "ruleVue",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve --mode dev",
    "build": "vue-cli-service build --mode pro",
    "lint": "vue-cli-service lint --mode test"
  },
  ...
}

2.axio

Axios 是一个基于 promise 的 HTTP 库,简单的讲就是可以发送get、post等请求,可以用在浏览器和 node.js 中。React和VUE等框架的出现,促使了Axios轻量级库的出现,因为Vue等,不需要操作Dom,所以不需要引入Jquery.js。

2.1.promise

异步编程的一种解决方案:

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果
Promise提供统一的API,各种异步操作都可以用同样的方法进行处理
Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称Fulfilled)和Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态 (英语意思就是“承诺”,表示其他手段无法改变)
与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。 有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数

2.2.安装

 npm install axios

2.3.配置

可以设置全局默认配置,是为了避免多种重复配置在不同请求中重复,比如baseURL、timeout等,这里设置baseURL。

2.3.1.全局 axios 默认值

axios.defaults.baseURL = 'https://127.0.0.1:8000';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
"""
自定义实例默认值
"""

// 创建实例时配置默认值
const instance = axios.create({
  baseURL: 'https://127.0.0.1:8000'
});
 
// 创建实例后修改默认值
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;

配置将会按优先级进行合并。它的顺序是:在 lib/defaults.js 中找到的库默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后面的优先级要高于前面的。

  axios.create({
        baseURL:'', //请求的域名(基本地址)
        timeout:2000, //请求的超时时长,单位毫秒,默认。
        url:'/data.json', //请求路径
        method:'get', //请求方法
        headers:{
            token:''
        }, //设置请求头
        params:{
        },//将请求参数拼接到url上
        data:{
        }, //将请求参数放置到请求体里
    });

2.3.2.响应信息格式

{
  // `data` 由服务器提供的响应
  data: {},
  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,
  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',
  // `headers` 是服务器响应头
  // 所有的 header 名称都是小写,而且可以使用方括号语法访问
  // 例如: `response.headers['content-type']`
  headers: {},
  // `config` 是 `axios` 请求的配置信息
  config: {},
  // `request` 是生成此响应的请求
  // 在node.js中它是最后一个ClientRequest实例 (in redirects),
  // 在浏览器中则是 XMLHttpRequest 实例
  request: {}
}

axios.get('/user/12345')
  .then(function (response) {
    console.log(response.data); //返回数据
    console.log(response.status);
    console.log(response.statusText);
    console.log(response.headers);
    console.log(response.config);
  });

2.4.Axios的拦截器

在请求或响应被 then 或 catch 处理前拦截它们。

2.4.1.请求拦截器

请求拦截器用于处理请求,并可以在请求发送之前进行一些操作,例如添加认证头,或者取消请求。

// 添加请求拦截器
/*需要拦截请求的原因
  *   1.config中包含了某些不符合服务器要求的信息
  *   2.发送网络请求的时候需要向用户展示一些加载中的图标
  *   3.网站需要登录才能请求资源,也就是需要token才能请求资源*/
axios.interceptors.request.use(function(config) {
    // 在发送请求之前做些什么-附加token标记
    let user = JSON.parse(window.sessionStorage.getItem('access-user'));
    if (user) {
      token = user.token;
    }
    config.headers.common['token'] ='JWT ' + token;
    return config; //拦截器里一定要记得将拦截的结果处理后返回,否则无法进行数据获取
  }, function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

2.4.2.响应拦截器

响应拦截器用于处理所有请求的响应,并可以在发送响应之前对其进行错误处理或者进行一些操作。例如在服务器返回登录状态失效,需要重新登录的时候,跳转到登录页等。

// 添加响应拦截器
axios.interceptors.response.use(function(response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  }, function(error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  });

2.4.3.移除拦截器

const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);

2.4.4.自定义实例添加拦截器

const instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});

3.lz-string

在nodejs和python中使用字符串压缩库。

3.1.javascript压缩之后转为base64

在javascript中的lzstring库实现类似功能。

      var LZString = require('lz-string');
      var originalString = "这是一个需要压缩的字符串";
      // 压缩并编码为 Base64 的字符串
      var compressedToBase64String = LZString.compressToBase64(originalString);
      console.log(compressedToBase64String);  // 输出压缩并编码为 Base64 的字符串
      console.log(originalString);  // 输出压缩后的字符串
      // 解码并解压缩 Base64 字符串
      var decompressedFromBase64String = LZString.decompressFromBase64("pvxnozQAcoVHKADpiBkY0cqEp/QIW6HVtQZN6CY5IA==");
      console.log(decompressedFromBase64String);  // 输出解码并解压缩后的字符串,应该与原始字符串相同

3.2.python压缩之后转为base64

在python中的lzstring库实现类似功能。

import lzstring
# 将临时文件数据进行压缩编码
fileData = "这是一个需要压缩的字符串";
lzx = lzstring.LZString();
compressed = lzx.compressToBase64(str(fileData));
print(compressed);
WriteFile(tmpFullFilename1, compressed);

4.总结

在js+vue3+python的环境中,实现与服务器之间的通信,并对过长的字符串采用zip算法进行压缩。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tantivy使用Rust 开发的全文搜索引擎库

一、概述 Tantivy是一个全文搜索引擎库,灵感来自Apache Lucene,用Rust编写。 如果你正在寻找Elasticsearch或Apache Solr的替代品,请查看我们基于Tantivy构建的分布式搜索引擎Quiuckwit。 Tantivy更接近Apache Lucene,而不是E…

仅需一分钟,使用极空间部署一个强大的开源问卷考试系统『SurveyKing』

仅需一分钟,使用极空间部署一个强大的开源问卷考试系统『SurveyKing』 哈喽小伙伴们好,我是Stark-C~ 我们生活中估计应该都收到了不少的问卷调查吧?很多商家或者运营商都会通过问卷调查的方式了解客户满意度,或者高市场调研&…

数据中台建设之数据汇聚与数据交换

目录 一、数据汇聚 1.1 概述 1.2 汇聚数据类型 1.2.1 结构化数据 1.2.2 半结构化数据 1.2.3 非结构化数据 1.3 汇聚数据模式 1.3.1 概述 1.3.2 离线 1.3.3 实时 1.4 汇聚数据方法 1.4.1 概述 1.4.2 ETL 1.4.3 ELT 1.5 汇聚数据工具 1.5.1 概述 1.5.2 Flink CDC…

Java人力资源招聘社会校招类型招聘系统PC端

🔍【揭秘】人力资源新利器!社会校招一站式PC端招聘系统全攻略🚀 🌈 开篇引言:招聘新纪元,效率为王! Hey小伙伴们,你是否还在为繁琐的招聘流程头疼不已?🤯 面…

Spark累加器(Accumulator)

1.累加器类型: 数值累加器:用于计算总和、计数等。布尔累加器:用于计算满足特定条件的次数。自定义累加器:允许定义复杂的聚合逻辑和数据结构。集合累加器:用于计算唯一元素的数量,处理去重操作。 在 Spar…

Qt Designer,仿作一个ui界面的练习(四):编写代码

一、新建项目,目录结构如图: PYS下存放脚本,SRC下存放资源文件,UIS下存放组态画面文件。 在每个子目录下都有__init__.py文件,系统会自动将其识别为软件包。 其中一个UIS.__init__.py文件的内容: # impo…

手撕数据结构02--二分搜索(附源码)

一、理论基础 二分搜索,也称折半搜索、对数搜索,是一种在有序数组中查找某一特定元素的搜索算法。 二分搜索是一种高效的查找算法,适用于在已排序的数组中查找特定元素。它的基本思想是通过不断将搜索区间对半分割,从而快速缩小…

ROOM数据快速入门

ROOM数据库快速入门 文章目录 ROOM数据库快速入门第一章 准备工作第01节 引入库第02节 布局文件第03节 activity类第04节 效果图 第二章 数据类第01节 实体类(表)第02节 数据访问类(DAO)第03节 数据Service层第04节 RoomDataBase …

达梦数据库DPI 实现两个数据库数据互通

链接字符串是目标访问链接 目标访问用户名 口令实现 31 里访问33库的数据 如果在31上建立视图访问33的某个表 AS SELECT SZZJ.sys_user.id FROM SZZJ.sys_userszzj31_szzj33;

护眼灯哪些牌子好?五款专业护眼灯品牌排行推荐

普通台灯长时间使用下来,眼睛疲劳、酸涩。但当作业或者工作没有做完的时候,还得硬着头皮撑着。大家是不是经常为这种事情发愁?于是,护眼台灯被设计出来了,但市面上出现的护眼台灯种类多,质量也是难以保证&a…

开发进度网站带后台源码

【源码介绍】 后台地址是:admin.php 后台没有账号密码 这个没有数据库 有能力的可以自己改 【搭建教程】 1.源码上传至虚拟机或者服务器 2.绑定域名和目录 3.访问域名安装, 4.安装完成后就行了 注:资源均网络搬运 仅供测试学习使用&#xff…

【数据结构与算法】队列(顺序存储)

队列 一.队列的原理二.队列的结构三.队列初始化四.判断队列是否满或空1.是否为满2.是否为空 五.入队操作六.队列的遍历七.出队操作1.前移2.后指 八.其他小接口1.获取队列首元素2.获取队列长度3.清除队列 酒.总结 一.队列的原理 队列也是一种线性结构,只不过是一种受限制的线性…

微服务面试-分布式 注册中心 远程调用 保护

标红的原理还是不太熟悉 重新看 分布式事务 CAP理论 Consistency(一致性) Availability(可用性) Partition tolerance (分区容错性) BASE 理论 就是做取舍 cap三选二 AT模式脏写 TCC模式 注册中…

25考研数据结构复习·6.4图的应用

最小生成树 Prim算法 从某一顶点开始构建生成树;每次将代价最小的新顶点纳入生成树,知道所有顶点都纳入为止。 时间复杂度O(|V|^2) 适合用于边稠密图 实现思想 从V0开始,总共需要n-1轮处理 每一轮处理:循环遍历所有结点&…

京东商品详情API:多规格商品的返回值处理

处理京东商品详情API中关于多规格商品的返回值,首先需要了解京东API的返回数据结构。通常,对于多规格商品(如不同颜色、尺寸等选项的商品),API会返回一个包含多个规格选项和对应价格、库存等信息的复杂数据结构。 以下…

java中 VO DTO BO PO DAO

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用_vo dto bo-CSDN博客 深入理解Java Web开发中的PO、VO、DTO、DAO和BO概念_java dto dao-CSDN博客

汇凯金业:区块链的介绍和应用场景

区块链, 一个近年来炙手可热的技术名词, 它就像一颗耀眼的明星, 吸引着人们的目光, 引发着人们的思考。 究竟什么是区块链? 它为何能够引发如此巨大的关注? 它又将如何改变我们的未来? 一、 区块链: 去中心化的信任…

中仕公考:什么是事业编?

事业编制内的职员是指那些经过考试选拔,成功进入公共机构服务,同时在人事部门和组织部有正规记录的个体。 入职条件: 要求应聘者参与由事业单位举办的公开招聘考试。 管理方式: 事业编制内职员的人事管理由当地的人事部门或相…

02 RabbitMQ:下载安装

02 RabbitMQ:下载&安装 1. 下载&安装1.1. 官网1.2. Docker方式1.2.1. 下载镜像1.2.2. 启动1.2.3. 登录验证 1. 下载&安装 1.1. 官网 RabbitMQ: One broker to queue them all | RabbitMQ 1.2. Docker方式 1.2.1. 下载镜像 # docker pull 镜像名称[…

Windows API钩子

原文链接:https://www.cnblogs.com/zhaotianff/p/18073138 有前面的文章中,我介绍了一个Windows API的监控工具(API Monitor)的使用。它内部就是使用了Hook机制,能Hook Windows API,能在我们钩选的API函数…