微信小程序 17:小程序使用 npm 包和组件应用
目前,小程序中已经支持实用 npm 安装第三方包,从而提高小程序的开发效率,但是在小程序中使用 npm 包有三个限制:
- 不支持 Node.js内置库的包
- 不支持依赖于浏览器内置对象的包
- 不支持依赖于 C++插件的包
Vant Weapp
Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应用。它所使用的是 MIT开源许可协议,对商业使用比较友好。
项目地址:https://vant-ui.github.io/vant-weapp/#/home
安装
- 通过 npm 安装
- 构建 npm 包
- 修改 app.json
初始化 npm 包管理文件 packge.json
npm init -y
安装 Vant Wearpp 组件库
npm i @vant/weapp -S --production
构建 npm 包
打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。

注意:2024 年 5 月 12 日,已经不用手动勾选“使用 NPM 模块”了,只需要一步操作。
修改 app.json删掉下列代码
"style": "v2",
将 app.json 中的 “style”: “v2” 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。
使用 Vant 组建
使用按钮组建
app.json 引用
"usingComponents": {"van-button": "@vant/weapp/button/index"
}
wxml使用
<van-button loading type="primary" />
<van-button loading type="primary" loading-type="spinner" />
<van-button loading type="info" loading-text="加载中..." />
其他的组建同理这就不一一展示了
小程序的 API Promise 化
默认情况下,小程序官方提供的异步APl都是基于回调函数实现的,例如,网络请求的API需要按照如下的方式调用:
wx.request({
method:“,
url:"",
data:{},
success:()=>{},//请求成功的回调函数 fail: ()=>{}, //请求失败的回调函数 complete: ()=>{}//请求完成的回调函数 })
什么是 API Promise 化
API Promise 化是指,通过额外的配置,将官方提供的基于毁掉 API,升级为基于 Promise 的异步 API,从而代码的可读性、维护性、避免产生回调地狱的问题。
实现 API promise 化
在小程序实现 Promise 化主要依赖于miniProgram-api-promise这个三方的 npm 包。他的安装和实用步骤如下:
安装
npm install --save miniprogram-api-promise
构建 NPM
和安装 Vant 一样需要把“mini-npm 目录中原来的包清空”,然后从工具栏中重新进行构建,你就会看到会出现 minipromise 包
使用 mini Promise 包
app.json
import {promisifyAll} from "miniprogram-api-promise"const wxp = wx.p={}
promisifyAll(wx,wxp)// app.js
App({onLaunch() {// 展示本地存储能力const logs = wx.getStorageSync('logs') || []logs.unshift(Date.now())wx.setStorageSync('logs', logs)// 登录wx.login({success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionId}})},globalData: {userInfo: null}
})
调用 Promise 化之后的异步 API
wxml构建
<button type="default" bind:tap="getInfo">按钮</button>
js
async getInfo(){const {data:res} = await wx.p.request({method: 'get',url:'https://mock.apifox.com/m1/4376673-4020798-default/api/gridelist',data:{name:'zs',age:20}})console.log(res);},
相关文章:
微信小程序 17:小程序使用 npm 包和组件应用
目前,小程序中已经支持实用 npm 安装第三方包,从而提高小程序的开发效率,但是在小程序中使用 npm 包有三个限制: 不支持 Node.js内置库的包不支持依赖于浏览器内置对象的包不支持依赖于 C插件的包 Vant Weapp Vant Weapp是有赞…...
【mysql篇】执行delete删除大量数据后,磁盘未清空,为什么?
目录 迁移脚本删除数据以及备份数据 解决方法OPTIMIZE TABLE二进制日志按月生成数据 最近某个项目虽说用户量不大,但是,单表的数据量越来越大,mysql一般单表超过千万级别后,性能直线下降,所以利用shardingphere按月做了…...
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍 文章编号&#x…...
在Mars3d实现cesium的ImageryLayer自定义瓦片的层级与原点
需要自定义瓦片层级和原点,所以需要自己写第三方图层,但是之前写的很多方法,图层控制和显隐以及透明度,需要跟之前的交互一直,改动量太大的话不划算,所以直接看Mars3d的layer基类,把重写的image…...
logback日志持久化
1、问题描述 使用logback持久化记录日志。 2、我的代码 logback是Springboot框架里自带的,所以只要引入“spring-boot-starter”就行了。无需额外引入logback依赖。 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns&…...
函数原型(Function Prototype)、函数定义(Function Definition)和函数声明(Function Declaration)
函数原型(Function Prototype)、函数定义(Function Definition)和函数声明(Function Declaration)在C和C等编程语言中扮演着不同的角色,但它们有时在概念上可能会有些重叠。下面是它们之间的主要…...
Go有无缓冲channel的区别
无缓冲的channel channel的默认类型就是无缓冲的。当一个数据被发送到无缓冲的channel中,发送操作会被阻塞,知道有另一个goroutine从这个channel中接收这个数据。同样,当试图从一个无缓冲的channel中接收数据时,如果没有数据可以…...
【全开源】Fastflow工作流系统(源码搭建/上线/运营/售后/维护更新)
一款基于FastAdminThinkPHP开发的可视化工作流程审批插件,帮助用户基于企业业务模式和管理模式自行定义所需的各种流程应用,快速构建企业自身的流程管控体系,快速融合至企业协同OA办公系统。 提供全部无加密服务端源码和前端源代码࿰…...
超越传统游戏:生成式人工智能对游戏的变革性影响
人工智能(AI)在游戏中的应用 游戏产业是一个充满活力、不断发展的领域,人工智能(AI)的融入对其产生了重大影响。这一技术进步彻底改变了游戏的开发、玩法和体验方式。本文分析的重点是传统人工智能和生成式人工智能在游…...
SpringCloud微服务之Eureka、Ribbon、Nacos详解
SpringCloud微服务之Eureka、Ribbon、Nacos详解 1、认识微服务1.1、单体架构1.2、分布式架构1.3、微服务1.4、SpringCloud 2、服务拆分与远程调用2.1、服务拆分的原则2.2、服务拆分示例2.2、提供者与消费者 3、Eureka注册中心3.1、Eureka的结构和作用3.2、搭建eureka-server3.2…...
五角钱的程序员 | Kafka 是什么?
本文来源公众号“五角钱的程序员”,仅用于学术分享,侵权删,干货满满。 原文链接:Kafka 是什么? 你是一个程序员,假设你维护了两个服务 A 和 B。B 服务每秒只能处理 100 个消息,但 A 服务却每秒…...
C++中合成的默认构造函数的访问权限
问题 我们知道,在C中,如果没有为一个类显式定义构造函数,那么编译器会为我们隐式地定义一个默认构造函数。那么,你有没有想过,这个隐式定义的默认构造函数(合成的默认构造函数)的访问权限是什么…...
【前端】桌面版docker并部署前端项目
环境 win10专业版 2004 , 需科学 官网下载安装包并安装4.29.0版本 终端输入 wsl --installdocker桌面版和模拟器只能选一个,不然一直转圈圈 镜像配置加速,在settings—>docker engine下 {"builder": {"gc": {"defaultKee…...
发布GPT-5的方式可能会与以往不同;开源vocode使用 AI 自动拨打电话;开源gpt智能对话客服工具;AI自动写提示词
✨ 1: vocode 用AI通过声音与用户进行实时交流 Vocode是一个旨在帮助开发者快速构建基于声音的大型语言模型(LLM)应用程序的开源库。简单来说,如果你想要开发一个能够通过声音与用户进行实时交流的应用,比如电话机器人、语音助手…...
Linux 作业管理 (bg, fg, jobs, kill)
bg 和 fg 是用来管理作业(在 Unix/Linux 命令行下运行的进程)的命令。 1. bg 命令 bg 命令用于将作业(job)放到后台运行。当你在终端中运行一个命令或程序时,它会占用当前终端的控制,如果你想让这个任务在…...
springboot Redis 支持星号(*) 包括注解@Cache
通过自定义CacheManager Bean来实现 bean Autowiredprivate RedisConnectionFactory redisConnectionFactory;/*** 管理缓存** return*///缓存管理器PrimaryBeanOverridepublic CacheManager cacheManager() {// 使用自定义的缓存配置初始化一个cacheManagerreturn new Custom…...
2023.5.12 第43周周报
学习时间:2023.5.5-2023.5.12 学习内容: 1、answer question: img: 看到有论文说应该让图像和文本的潜在嵌入具有相似和合理的数值范围【-2,2】 调试发现模型的文本图像的潜在嵌入虽然符合,但相差较大。 在将文本和…...
JavaEE 多线程详细讲解(2)
1.线程不安全分析 (1)线程不安全的主要原因就是,系统的抢占式执行,对于内核设计者来说,这是非常方便的一个执行方式,但是这却却导致线程不安全的问题,也有不抢占执行的系统,但是这种…...
Flask-HTTP请求、响应、上下文、进阶实验
本节主要目录如下: 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session:安全的Cookie 四、…...
springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE
springboot 设置response和request的默认格式 驼峰或者SNAKE_CASE。 我们使用默认配置的情况下,response和request是由jackson jason序列化和解析的,因此,我们只需要配置好jackson json的默认格式就可以。 要设置 jackson json默认的更多格式…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...
二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...
【大厂机试题解法笔记】矩阵匹配
题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...
【Ragflow】26.RagflowPlus(v0.4.0):完善解析逻辑/文档撰写模式全新升级
概述 在历经半个月的间歇性开发后,RagflowPlus再次迎来一轮升级,正式发布v0.4.0。 开源地址:https://github.com/zstar1003/ragflow-plus 更新方法 下载仓库最新代码: git clone https://github.com/zstar1003/ragflow-plus.…...
MySQL用户远程访问权限设置
mysql相关指令 一. MySQL给用户添加远程访问权限1. 创建或者修改用户权限方法一:创建用户并授予远程访问权限方法二:修改现有用户的访问限制方法三:授予特定数据库的特定权限 2. 修改 MySQL 配置文件3. 安全最佳实践4. 测试远程连接5. 撤销权…...
