【微信小程序】引入第三方库poke对GZIP压缩数据进行解压

  1. 使用 npm 包管理工具:

    • 首先,在小程序的根目录下执行 npm init 初始化项目,生成 package.json 文件。
    • 然后,通过 npm 安装 pako:npm install pako
    • 接下来,在小程序的根目录下创建一个名为 miniprogram_npm 的文件夹。
    • node_modules/pako 文件夹复制到 miniprogram_npm 文件夹中。
    • 在需要使用 pako 的页面或组件中的 js 文件中使用 require() 引入 pako:
    const pako = require('pako');
    
  2. 通过 CDN 引入:

    • 打开 project.config.json 文件,添加以下配置,指定需要引入的第三方库:
    {"setting": {"urlCheck": true,"es6": true,"postcss": true,"minified": true,"newFeature": true},"packOptions": {"ignore": []},"compileType": "miniprogram","libVersion": "2.14.4","appid": "your appid","projectname": "your projectname","debugOptions": {"hidedInDevtools": []},"cdnUrl": {"default": "https://unpkg.com/"},"usingComponents": {}
    }
    
    • 在需要使用 pako 的页面或组件中的 js 文件中使用 import 引入 pako:
    import pako from 'pako';
    

无论是使用 npm 包管理工具还是通过 CDN 引入,都需要在小程序开发工具中进行构建,以确保引入的第三方库可以被正确识别和使用。

请注意,微信小程序的环境和浏览器环境有差异,可能需要进行一些额外的适配工作,以确保 pako 库在小程序中正常运行。


例子

将字符串 "{\"data\":\"[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -115, -112, 57, 14, -61, 48, 12, 4, -1, -62, 90, 16, -42, 36, 69, 29, 95, 9, 92, -91, 73, -31, -46, 93, -32, -65, -121, -115, 3, 75, 70, 28, -9, -125, -63, -20, 62, -34, -12, -92, 54, 89, 69, 22, -51, 12, -28, 20, -24, 69, 77, 37, 74, -96, -123, 26, 34, 2, -83, -44, -72, -60, -76, -123, -114, 46, -128, -44, -99, 78, 35, 109, 61, 93, -44, 105, -34, 105, -5, 67, 87, 0, 92, -18, -106, 84, 115, -73, -2, 44, -23, -23, 4, -17, -74, -17, 74, -67, 46, 73, -109, 119, 103, -69, -21, -10, 3, 15, -97, -100, -70, 117, -96, -19, -14, -63, -63, 45, 124, 124, -16, -28, -50, -37, -4, 1, 4, -126, -5, 117, -51, 1, 0, 0]\",\"total\":10}" 转换为对象

  • 并将其中的 [] 部分转换为字节数组(byte array),再使用 GZIP 算法进行解压缩,按照以下步骤进行操作:
  1. 首先,使用 JSON.parse() 方法将字符串转换为对象:
const jsonString = "{\"data\":\"[31, -117, 8, 0, 0, 0, 0, 0, 0, 0, -115, -112, 57, 14, -61, 48, 12, 4, -1, -62, 90, 16, -42, 36, 69, 29, 95, 9, 92, -91, 73, -31, -46, 93, -32, -65, -121, -115, 3, 75, 70, 28, -9, -125, -63, -20, 62, -34, -12, -92, 54, 89, 69, 22, -51, 12, -28, 20, -24, 69, 77, 37, 74, -96, -123, 26, 34, 2, -83, -44, -72, -60, -76, -123, -114, 46, -128, -44, -99, 78, 35, 109, 61, 93, -44, 105, -34, 105, -5, 67, 87, 0, 92, -18, -106, 84, 115, -73, -2, 44, -23, -23, 4, -17, -74, -17, 74, -67, 46, 73, -109, 119, 103, -69, -21, -10, 3, 15, -97, -100, -70, 117, -96, -19, -14, -63, -63, 45, 124, 124, -16, -28, -50, -37, -4, 1, 4, -126, -5, 117, -51, 1, 0, 0]\",\"total\":10}";
const obj = JSON.parse(jsonString);
  1. 接下来,将 obj.data 字段的值转换为数组:
const dataArray = JSON.parse(obj.data);
  1. 然后,创建一个 Uint8Array 对象,将 dataArray 的值作为参数传递给它,以将数组转换为无符号 8 位整型数组:
const uint8Array = new Uint8Array(dataArray);
  1. 最后,使用 pako 库(一个用于处理 GZIP 压缩和解压缩的 JavaScript 库)进行解压缩。你可以使用 pako.inflate() 方法解压缩 uint8Array 对象:
const inflatedArray = pako.inflate(uint8Array);

请确保在使用 pako 库之前,先在项目中引入该库。

上述步骤完成后,inflatedArray 将包含解压缩后的字节数组数据。

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

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

相关文章

java设计模式-建造者(Builder)设计模式

介绍 Java的建造者(Builder)设计模式可以将产品的内部表现和产品的构建过程分离开来,这样使用同一个构建过程来构建不同内部表现的产品。 建造者设计模式涉及如下角色: 产品(Product)角色:被…

前端工程化最佳实践:项目结构、代码规范和文档管理

文章目录 前端工程化最佳实践项目结构设计与组织文档管理和注释规范国际化和本地化实践 前端工程化的未来发展趋势前端工程化领域的最新技术和工具WebAssembly 和前端性能优化可持续性和可访问性的趋势 总结前端工程化的关键知识点前端工程化对项目和团队的价值 前端工程化最佳…

《golang设计模式》第一部分·创建型模式-01-单例模式(Singleton)

文章目录 1. 概述1.1 目的1.2 实现方式 2. 代码示例2.1 设计2.2 代码 1. 概述 1.1 目的 保证类只有一个实例有方法能让外部访问到该实例 1.2 实现方式 懒汉式 在第一次调用单例对象时创建该对象,这样可以避免不必要的资源浪费 饿汉式 在程序启动时就创建单例对象…

卷积神经网络

目录 注意:有参数计算的才叫层 1.应用 1.1分类和检索 1.2超分辨率重构 1.3医学任务 1.4无人驾驶 1.5人脸识别 2.卷积 2.1卷积神经网络和传统网络的区别 2.2整体框架 2.3理解卷积(重点) 2.4为何要进行多层卷积 2.5卷积核的参数 2.6…

C++STL库中的list

文章目录 list的介绍及使用 list的常用接口 list的模拟实现 list与vector的对比 一、list的介绍及使用 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向带头循环链表结构,双向带头循…

HDFS 分布式存储 spark storm HBase

HDFS 分布式存储 spark storm HBase 分布式结构 master slave name node client 负责文件的拆分 128MB 3份 data node MapReduce 分布式计算 离线计算 2.X之前 速度比较慢 对比spark 编程思想 Map 分 Reduce 合 hadoop streaming Mrjob Yarn 资源管理 cpu 内存 MapReduc…

NoSQL———Redis配置与优化

目录 一、关系数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 关系型数据库和非关系型数据库区别 1.3.1 非关系型数据库产生背景 二、Redis简介 2.1 redis优点: 三、Redis 安装部署 四、Redis 命令工具 4.1 redis-cli 命令行工具 …

vue3代码编辑器组件codemirror-editor-vue3

官方文档&#xff1a;https://github.com/RennCheung/codemirror-editor-vue3 国内镜像&#xff1a;https://renncheung.github.io/codemirror-editor-vue3/zh-CN/guide/getting-started 1.安装 npm install codemirror-editor-vue3 codemirror5.x -S2.代码示例 <templat…

mybatis框架遇到的问题:All elements are null

今天在做一个查询接口&#xff0c;应用场景是统计选择日期范围内的每日数据量&#xff0c;于是便想到了使用count&#xff08;&#xff09;函数来统计总行数来代表数据量&#xff0c;并且以记录时间的字段来作为分组标准&#xff08;group by&#xff09;&#xff0c;大体思路有…

基于ssm+mysql+jsp高校疫情防控出入信息管理系统

基于ssmmysqljsp高校疫情防控出入信息管理系统 一、系统介绍二、功能展示1.登陆2.教师管理3.学生管理4.打卡记录管理5.学生申请通行证6.通行证管理7.留言信息管理8.公告类型管理9.公告管理 四、获取源码 一、系统介绍 学生 : 个人中心、打卡记录管理、学生申请通行证、通行证管…

Delphi XE的原生JSONObject如何判断键值是否存在?

【问题现象】 Delphi XE的原生JSONObject&#xff0c;取出键值的时候如下&#xff1a; //json是传入的参数&#xff0c;里面包括"food_name"等之类的键值&#xff0c;没有food_type键值 procedure XXXXFunciton(json:TJSONObject) var strFoodName,strFoodType:S…

<C++> STL_string

目录 1.string类 2.string类的接口 2.1 成员函数 2.1.1 string构造函数 2.1.2 string赋值运算 2.1.3 string析构函数 2.2 string对象访问以及迭代器 2.2.1 string的遍历方式 2.2.2 迭代器的使用 2.2.3 const_迭代器的使用 2.2.4 at 2.2.5 back和front 2.3 string容…

Docker基础命令(一)

Docker使用1 一、运行终端 打开终端&#xff0c;输入docker images &#xff0c;如果运行正常&#xff0c;表示docker已经可以在本电脑上使用了 二、docker常用命令 指令说明docker images查看已下载的镜像docker rmi 镜像名称:标签名删除已下载的镜像docker search 镜像从官…

ffmpeg 的帮助系统

----------------------------------------------- author: hjjdebug date: 2023年 07月 31日 星期一 14:32:15 CST ffmpeg 的帮助系统 目的: 搞清楚它都打印了什么? 它是怎样实现的. ----------------------------------------------- $ffprobe -h 1996行输出 $ffmpeg -h…

Java如何实现将类文件打包为jar包

目录 将类文件打包为jar包 1.写类文件2.编译3.测试4.打jar包jar包应该怎么打&#xff1f; 1.首先确保你的项目2.选中你的项目,点右键3.选择runnable jar file4.如下图,直接看图5.然后点finish 将类文件打包为jar包 为实际项目写了一个工具类&#xff0c;但是每次使用时都需要…

xcode中如何显示文件后缀

xcode14.3 用不惯mac电脑真恶心&#xff0c;改个显示文件后缀找半天 1、首先双击打开xcode软件 2、此时&#xff0c;电脑左上角出现xcode字样(左上角如果看不到xcode字样&#xff0c;再次点击xcode软件弹出来就有了)&#xff0c;鼠标右键它&#xff0c;点击setting或者Prefere…

阿里云SLB负载均衡ALB、CLB和NLB有什么区别?

阿里云负载均衡SLB分为传统型负载均衡CLB&#xff08;原SLB&#xff09;、应用型负载均衡ALB和网络型负载均衡NLB&#xff0c;三者有什么区别&#xff1f;CLB是之前的传统的SLB&#xff0c;基于物理机架构的4层负载均衡&#xff1b;ALB是应用型负载均衡&#xff0c;7层负载均衡…

安卓音视频多对多级联转发渲染

最近利用自己以前学习和用到的音视频知识和工程技能做了一个android的sdk,实现了本地流媒体ipc rtsp 拉流以及自带mip usb等camera audio节点产生的流媒体通过webrtc sfu的方式进行多对多级联发布共享,网状结构&#xff0c;p2p组网&#xff0c;支持实时渲染以及转推rtmp&#x…

我的第一个前端(VS code ,Node , lite-server简易服务器,npm 运行)

第一种方式&#xff1a;使用Visual Studio Code创建并运行 第一个前端项目的步骤&#xff0c;如下&#xff1a; 1. 下载和安装Visual Studio Code&#xff1a; 访问Visual Studio Code官方网站&#xff08;Visual Studio Code - Code Editing. Redefined&#xff09;并根据你…

Java类的加载过程是什么?

本文重点 本文将学习类的加载过程,java命令将class文件放到类加载器中,那么之后经历了什么?本文将对其进行学习。 类加载方式? 两种加载方式:隐式加载(静态加载)和显式加载(动态加载) 隐式加载指的是在程序使用new等方式创建对象的时候,会隐式地调用类的加载器把…