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

文章目录

  • 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.mzph.cn/web/50646.shtml

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

相关文章

Laravel请求数据验证:守护Web应用安全的防线

Laravel请求数据验证:守护Web应用安全的防线 引言 在Web应用开发中,数据验证是确保应用安全和稳定的重要环节。Laravel框架提供了一套强大而灵活的验证机制,帮助开发者对用户输入的数据进行严格检查。通过Laravel的验证功能,可以…

回溯

组合问题 LeetCode77 组合 class Solution { public:vector<vector<int>>res;vector<int>list;void dfs(int begin,int n,int k){if(list.size()k){res.push_back(list);return;}for(int ibegin;i<n;i){list.push_back(i);dfs(i1,n,k);list.pop_back();}…

(源码分析)springsecurity认证授权

了解 1. 结构总览 SpringSecurity所解决的问题就是安全访问控制&#xff0c;而安全访问控制功能其实就是对所有进入系统的请求进行拦截&#xff0c;校验每个请求是否能够访问它所期望的资源。 根据前边知识的学习&#xff0c;可以通过Filter或AoP等技术来实现&#xff0c;Spr…

天津仁爱学院2024级专升本新同学开学报到提示

亲爱的2024级新同学: 亲爱的仁爱新人&#xff0c;你准备好了吗&#xff1f;祝福之余&#xff0c;关于入学报到还有以下几点提示&#xff1a; 01报到时间 报到时间:2024年9月1日。报到时请携带录取通知书和准考证。因参军保留入学资格或因病及其他原因不能按时报到的同学&#x…

主图趋势交易九稳量化系统 期货指标公式大全 最准的期货指标源码 看期货涨跌最简单的方法文华财经指标公式源码

交易的动机必须来自于内心&#xff0c;一种解决问题的执着。在整个交易生涯的漫长岁月里&#xff0c;无法始终保持这种热忱。除非亲身体验&#xff0c;否则很难理解这种疯狂的热忱。这是一种高度的专注&#xff0c;其他一切好像都不存在&#xff0c;视野之内没有其他的东西。这…

利用Python进行高效数据分析实践

引言 在当今的数据驱动世界中&#xff0c;能够有效地处理和分析数据已成为许多行业的核心竞争力。Python作为一种强大的编程语言&#xff0c;因其简洁易读的语法以及丰富的第三方库支持&#xff0c;在数据科学领域受到了广泛的欢迎。本文将介绍如何使用Python进行高效的数据分…

前端系列-9 Vue3生命周期和computed和watch

背景 本文介绍Vue3的生命周期和钩子函数&#xff0c;鉴于篇幅允许以及防止前端文章过于分散&#xff0c;因此将watch和computed部分之前的学习笔记也整理到本文中。这三部分是三个知识点。watch可以与pinia的$subscribe状态监听进行比较学习。 1.组件生命周期 vue的每个组件…

探索 Milvus 存储系统:如何评估和优化 Milvus 存储性能

欢迎来到探索 Milvus 系列。Milvus 是一款支持水平扩展和具备出色性能的开源向量数据库。Milvus 的核心是其强大的存储系统&#xff0c;是数据持久化和存储的关键基础。该系统包括几个关键组成部分&#xff1a;元数据存储&#xff08;meta storage&#xff09;、消息存储&#…

bugku-web-source

kali中先用dirsearch工具扫描后台目录&#xff0c;然后用wget -r url/.git命令递归下载后&#xff0c;进入txt文件使用git reflog命令然后只用git show查看作者提交flag日志&#xff0c;用git show 一个一个去尝试&#xff0c;很多假的flag git reflog 是一个 Git 命令&#x…

【Golang】清理Markdown未引用图片

概述 本文介绍一个使用Go语言编写的脚本&#xff0c;其功能是清理指定目录中未被Markdown文件引用的图片。该脚本通过读取Markdown文件中的图片引用&#xff0c;与存储在特定目录下的所有图片进行对比&#xff0c;将未引用的图片移动到另一个指定的目录中。此脚本适用于需要维护…

苹果电脑怎么使用Windows软件 苹果笔记本怎么安装Windows mac怎么安装windows

最早的苹果电脑的概念是在1976年的时候由乔布斯提出来的&#xff0c;在1977年的时候发行的第一款个人电脑&#xff0c;也就是苹果笔记本电脑。苹果笔记本的操作系统是MAC OSmac OS是基于unix内核的系统&#xff0c;这个系统是专门为苹果电脑开发的。macOS比windows的视觉冲击大…

Synchronized的锁升级过程是怎样的?

文章目录 一、Synchronized的使用1、修饰实例方法2、修饰静态方法3、修饰代码块4、总结&#xff1a; 二、Monitor1、Java对象头1.1 32 位虚拟机的对象头1.2 64位虚拟机的对象头 2、Mark Word 结构3、Moniter4、Synchronized 字节码5、轻量级锁6、锁膨胀7、自旋优化8、偏向锁9、…

Laravel Sanctum:简化无状态API认证的新纪元

Laravel Sanctum&#xff1a;简化无状态API认证的新纪元 在现代Web应用中&#xff0c;API的安全认证是一个核心需求。Laravel Sanctum是一个轻量级的认证解决方案&#xff0c;专为Laravel开发的单页应用&#xff08;SPA&#xff09;、移动应用和API而生。它提供了一种简单而灵…

C++ 代码实现局域网即时通信功能 (windows 系统 客户端)

本项目使用C实现具备多个客户端和服务器端即时通信聊天功能软件 一&#xff1a;项目内容 使用C实现一个具备多客户端和一个服务器端即时通信功能的聊天软件。 本项目的目的是 学习在windows平台下&#xff0c;进行C网络开发的基本概念&#xff1a;TCP/IP socket通信&#xff0…

【diffusers极速入门(五)】扩散模型中的 Scheduler(noise_scheduler)的作用是什么?

系列文章目录 【diffusers 极速入门&#xff08;一&#xff09;】pipeline 实际调用的是什么&#xff1f; call 方法!【diffusers 极速入门&#xff08;二&#xff09;】如何得到扩散去噪的中间结果&#xff1f;Pipeline callbacks 管道回调函数【diffusers极速入门&#xff0…

Vue中!.和?.是什么意思

在Vue&#xff08;或更广泛地说&#xff0c;在JavaScript和TypeScript中&#xff09;&#xff0c;!. 和 ?. 是两个与可选链&#xff08;Optional Chaining&#xff09;和断言非空&#xff08;Non-null Assertion&#xff09;相关的操作符&#xff0c;它们分别用于处理可能为nu…

Java集合之HashMap的数据结构分析

总所周知&#xff0c;Java中键值对集合&#xff0c;我们最常用的就是HashMap&#xff0c;那么它的数据结构&#xff0c;以及如何存储键值对&#xff0c;包括为什么使用红黑树&#xff0c;链表等许多数据结构&#xff0c;下面我们一起学习交流 1.HashMap的数据结构&#xff1a;…

scratch二次开发:如何修改toolbox宽度

大家好&#xff0c;我是小黄。 使用场景&#xff1a;有时候我们开发图形化编程时&#xff0c;我们的积木块很长&#xff0c;导致一部分无法显示&#xff0c;我们想要把目录区域位置放大&#xff0c;比如下面红色方框区域位置&#xff0c;那么改如何实现这个过程呢&#xff1f;…

代码随想录 Day27 || 455分发饼干 376摆动序列 53最大子数组和

关于贪心算法&#xff08;摘自hello算法&#xff09; 贪心算法&#xff08;greedy algorithm&#xff09;是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#x…

Qt,获取其他.exe文件的标准输出流的信息(printf/print的输出信息)

比如&#xff0c;通过Python编写爬虫软件功能是运行程序获取豆瓣电影排行榜信息&#xff0c;并通过print打印出来。将其打包成.exe,通过Qt来调用&#xff0c;并获取到.exe程序运行的结果 简单示例代码&#xff1a; // 创建 QProcess 对象QProcess process;// 连接信号槽以获取…